wap端微信h5支付,用于非微信浏览器
来源:互联网 发布:radon变换算法 编辑:程序博客网 时间:2024/05/16 17:22
做项目碰到了wap端实现微信支付,听朋友说微信有wap端的h5支付,就看了下这块的接口,记录下供以后方便查看
(具体的接口可以查看商户平台说明:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_1)
<?php/** *非微信浏览器 调用微信h5支付 */namespace app\mobile\controller;use think\Controller;use think\Loader;use think\Request;use think\Url;use think\Config;use think\Page;class Wxpay extends MobileBase{ /** * @return array 下单方法 */ public function wxpaymoney(Request $request) { $param=$request->param(); if (!empty($param)){ $param = json_decode(json_encode(simplexml_load_string($param, 'SimpleXMLElement', LIBXML_NOCDATA)), true); echo '-------'; p($param); echo '*******'; } $url='https://api.mch.weixin.qq.com/pay/unifiedorder'; //下单地址 $appid='appid';//公众号appid $appsecret='appsecret'; $mch_id='商户平台id';//商户平台id $nonce_str='qyzf'.rand(100000, 999999);//随机数 $out_trade_no='wap'.date('YmdHis').rand(100000,999999); $ip=$this->getClientIp(); $scene_info='{"h5_info": {"type":"Wap","app_name": "project info","package_name": "wap订单微信支付"}}';// $appidInfo=$this->getTokens($appid,$appsecret);// echo '=======';// p($appidInfo);// echo '*******';die;// $openid=$appidInfo['openid']; $total_fee=1; $trade_type='MWEB'; $attach='wap支付测试'; $body='H5支付测试'; $notify_url='http://m.xxxxx.com/Mobile/Wxpay/wxnotify.html'; $arr=[ 'appid'=>$appid, 'mch_id'=>$mch_id, 'nonce_str'=>$nonce_str, 'out_trade_no'=>$out_trade_no, 'spbill_create_ip'=>$ip, 'scene_info'=>$scene_info,// 'openid'=>$openid, 'total_fee'=>$total_fee, 'trade_type'=>$trade_type, 'attach'=>$attach, 'body'=>$body, 'notify_url'=>$notify_url ]; $sign=$this->getSign($arr); //<openid>'.$openid.'</openid> $data='<xml> <appid>'.$appid.'</appid> <attach>'.$attach.'</attach> <body>'.$body.'</body> <mch_id>'.$mch_id.'</mch_id> <nonce_str>'.$nonce_str.'</nonce_str> <notify_url>'.$notify_url.'</notify_url> <out_trade_no>'.$out_trade_no.'</out_trade_no> <spbill_create_ip>'.$ip.'</spbill_create_ip> <total_fee>'.$total_fee.'</total_fee> <trade_type>'.$trade_type.'</trade_type> <scene_info>'.$scene_info.'</scene_info> <sign>'.$sign.'</sign> </xml>'; $result=$this->https_request($url,$data); echo '===================='; var_dump($result); echo '*******************'; //禁止引用外部xml实体 libxml_disable_entity_loader(true); $result_info = json_decode(json_encode(simplexml_load_string($result, 'SimpleXMLElement', LIBXML_NOCDATA)), true); p($result_info); echo '<a href="'.$result_info['mweb_url'].'">测试微信支付</a>';die; } /** *curl请求 */ private function https_request($url, $data = null) { p($data); $curl = curl_init (); curl_setopt ( $curl, CURLOPT_URL, $url ); curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, FALSE ); curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, FALSE ); if (! empty ( $data )) { curl_setopt ( $curl, CURLOPT_POST, 1 ); curl_setopt ( $curl, CURLOPT_POSTFIELDS, $data ); } curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); $output = curl_exec ( $curl ); curl_close ( $curl ); return $output; } /** * @return 获取ip */ private function getClientIp() { $cip='unknown'; if ($_SERVER['REMOTE_ADDR']){ $cip=$_SERVER['REMOTE_ADDR']; }elseif (getenv($_SERVER['REMOTE_ADDR'])){ $cip=getenv($_SERVER['REMOTE_ADDR']); } return $cip; } /** * @return 异步通知 */ public function wxnotify(Request $request) { Loader::import('payment.wxwap.PayNotifyCallBacks'); $notify=new \PayNotifyCallBacks(); $notify->Handle(false); die; } /** * @param Request */ public function wxcallback(Request $request) { $data=$request->param(); file_put_contents('./testwx1.txt','888888888888888'.$data['orderid'].'-----'.$data['transaction_id'].'******'); } /** * 作用:格式化参数,签名过程需要使用 */ public function formatBizQueryParaMap($paraMap, $urlencode) {// var_dump($paraMap);//die; $buff = ""; ksort($paraMap); foreach ($paraMap as $k => $v) { if($urlencode) { $v = urlencode($v); } //$buff .= strtolower($k) . "=" . $v . "&"; $buff .= $k . "=" . $v . "&"; } $reqPar=''; if (strlen($buff) > 0) { $reqPar = substr($buff, 0, strlen($buff)-1); } p($reqPar);//die; return $reqPar; } /** * 作用:生成签名 */ public function getSign($Obj) { p($Obj);//die; foreach ($Obj as $k => $v) { $Parameters[$k] = $v; } //签名步骤一:按字典序排序参数 ksort($Parameters); $String = $this->formatBizQueryParaMap($Parameters, false); //echo '【string1】'.$String.'</br>'; //签名步骤二:在string后加入KEY 5a02bd8ecxxxxxxxxxxxxc1aae7d199 这里的秘钥是 商户平台设置的一定要改不然报签名错误 $String = $String."&key=5a02bd8ecxxxxxxxxxxxxc1aae7d199"; //echo "【string2】".$String."</br>"; //签名步骤三:MD5加密 $String = md5($String); //echo "【string3】 ".$String."</br>"; //签名步骤四:所有字符转为大写 $result_ = strtoupper($String); //echo "【result】 ".$result_."</br>"; return $result_; } private function httpGet($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 500); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_URL, $url); $res = curl_exec($curl); curl_close($curl); return $res; }}
测试demo(PHP版): http://download.csdn.net/download/u010533511/10155017
阅读全文
0 0
- wap端微信h5支付,用于非微信浏览器
- 非微信浏览器的微信H5支付
- 非微信浏览器的h5支付demo
- 微信支付【H5非微信内浏览器支付】
- 微信H5支付 在非微信浏览器的使用
- 支付开发(一)----微信支付开发之H5非微信浏览器支付JAVA版
- 微信支付之H5页面WAP端接入
- 微信支付之H5页面WAP端接入
- 微信--H5非微信内浏览器支付
- 财付通支付接口不能申请?不能用于wap支付和app支付?
- 微信h5支付,微信外浏览器支付实现
- 微信H5支付可以实现在非微信浏览器(如QQ浏览器、谷歌浏览器、Safari等)中使用微信支付的场景。
- 微信公众号开发---微信支付之H5页面WAP端接入
- CocosCreator H5 微信内置浏览器调起微信支付
- PHP微信支付开发,微信外浏览器实现WAP微信支付
- mui适用场景说明,能不能在普通浏览器里使用,能否用于wap网站
- h5页面 支付宝支付
- 微信支付 h5 支付
- sqlserver与oralce之间的数据库链接的创建
- Promise到底是个什么
- 玩嵌入式,可以试试Micro Bit!
- python @classmethod和@staticmethod 装饰器使用
- IntelliJ IDEA 2016注册方法和注册码
- wap端微信h5支付,用于非微信浏览器
- vue2 入门
- webpack编译后的文件防止缓存解决方案
- ffplay中avpacket和avframe的使用流程
- 表格操作
- 为什么指定了SDRAM,程序却烧写到了Nand flash?
- 第15节项目1-字符转换以及ASCLL码应用
- Git for Windows安装和基本设置
- Hystrix源码解析 —— 调试环境搭建