微擎网站开发-公众号对接微信支付接口(JS-SDK / JSAPI)php-SDK

网上找到的公众号微信支付好多乱七八糟的内容,过时代码什么样的都有,虽然很乱但还是看了一遍(无奈)。

接下来是我的总结实践:

该篇为测试篇:并未配置对应的支付目录,所以会报当前页面的URL未注册,不影响测试。

先下载SDK压缩包然后解压,在商户后台找到相关内容配置好config目录下config.json里的api_key_live,api_key_test和rsa_private_key。

将SDK解压包中adapay_sdk_php_v1.4.4上传到网站根目录app目录下,再浅浅的改个简单名字,比如我直接改sdk。

在对接前端页面写相关js(可参考发起支付(JS));

前端预览:

前端请求方法1如下:

<div class='fui-list pay-btn wx2' >
     <div class='xxx'>
            <img src="xxxx/微信照片.png" alt="">
     </div>
     <div class='fui-list-inner'>
          <div class="title">
               微信支付2
          </div>
          <div class="xxx">
               <img src="小图标.png" alt="" style="样式">微信安全支付
          </div>
     </div>
</div>

 <script language='javascript'>
            $('.wx2').click(function(){
                $.getJSON("http://xxxxx网站?i=x&c=entry&m=xxx&do=xxx&r=相关php.xxx方法",{
                        ordersn: "{$order['ordersn']}"相关传参}, function(res){
				    if(res.status=='1') {
                        //下面alert用来测试是否返回相关数据
                        alert("timeStamp:"+res.data.timeStamp);
                        WeixinJSBridge.invoke('getBrandWCPayRequest', {
                                "appId": res.data.appId,
                                "timeStamp": res.data.timeStamp,
                                "nonceStr":  res.data.nonceStr,
                                "package":  res.data.package,
                                "signType": "RSA",
                                "paySign": res.data.paySign //微信签名
                            },
                            function(res) {
                                if (res.err_msg == "get_brand_wcpay_request:ok") {
                                    // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。 
                      
                                }else{
                                    alert('支付失败!');
                                }
                            });
                     }else{
                         alert("请求失败!");
                     }

		        });
            })
            
     </script>

前端请求方法2如下:

<div class='fui-list pay-btn wx2' >
     <div class='xxx'>
            <img src="xxxx/微信照片.png" alt="">
     </div>
     <div class='fui-list-inner'>
          <div class="title">
               微信支付2
          </div>
          <div class="xxx">
               <img src="小图标.png" alt="" style="样式">微信安全支付
          </div>
     </div>
</div>
<script language='javascript'>
    $('.wx2').click(function(){
        $.ajax({
          type: 'GET',
          url: 'http://xxxxx网站?i=x&c=entry&m=xxx&do=xxx&r=相关php.xxx方法',
          dataType: "json",
          data: {
            order_sn: "{$order['ordersn']}"//传参给后台查表
          },
          success: function(res) {
              alert("timeStamp:"+res.data.timeStamp);
              WeixinJSBridge.invoke('getBrandWCPayRequest', {
                    "appId": res.data.appId,
                    "timeStamp": res.data.timeStamp,
                    "nonceStr": res.data.nonceStr,
                    "package":res.data.package,
                    "signType": "RSA",
                    "paySign": res.data.paySign //微信签名
                },
                function(res) {
                    if (res.err_msg == "get_brand_wcpay_request:ok") {
                        // 使用以上方式判断前端返回,微信团队郑重提示:
                        //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
                    }else{
                        alert('支付失败!');
                    }
                });
            

          },
          error: function (data, status, e) {
          	console.log("网络异常,验证失败")
          }
        })
    })  
</script>

后端可借鉴PHP SDK 使用文档

后端相关代码:

 public function xxx(){
        global $_W;
		global $_GPC;
		$order = pdo_get('数据商品信息表', array('ordersn like' => $_GPC['ordersn']));//根据传参找相关内容
        $ordersn = 'DD'.date('YmdHis',time()).rand(111111,999999);
        //加载SDK需要的文件
        include_once  "./sdk/AdapaySdk/init.php";
        //加载商户的配置文件
        include_once "./sdk/AdapayDemo/config.php";
        //初始化支付类
        $payment = new \AdaPaySdk\Payment();
        //支付设置
        $payment_params = array(
            'app_id'=> '你的appid',
            'order_no'=> $ordersn,//订单号
            'pay_channel'=> 'wx_pub',//支付方式
            'prod_mode' => true,
            'time_expire'=> date("YmdHis", time()+86400),
            'pay_amt'=> $order['price'],//价格
            'goods_title'=> 'xxxx'.$order['ordersn'],
            'goods_desc'=> 'xxxx'.$order['ordersn'],
            'description'=> 'description',
            'notify_url'=>'你的回调地址',
            'expend'=> [
                'open_id'=> $order['openid'],
            ]
        );
        
        
        //发起支付
        $payment->create($payment_params);
        
        //对支付结果进行处理
        if ($payment->isError()){
            //失败处理
            var_dump($payment->result);
        } else {
            $resulr = $payment->result['expend']['pay_info'];
            
            $resulr = json_decode($resulr,true);
            
            echo json_encode([
                'status' => 1,
                'data' => $resulr
            ]);
        }
    }

结果测试 :

 注:学习使我快乐,实习真棒!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纯纯的飞舞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值