微信JSAPI支付

微信jsapi支付:

 1 function startWxPay(url) {
 2    var idx = layer.msg("正在启动微信支付", {time: 0});
 3    var prepayId = false;
 4 
 5    $.post("{{URL::to('chat/prepay/'.$order->id)}}", function (resp) {
 6       if (resp.success) {
 7          prepayId = resp.prepay_id;
 8 
 9          if (typeof WeixinJSBridge == "undefined"){
10             if( document.addEventListener ){
11                document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
12             }else if (document.attachEvent){
13                document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
14                document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
15             }
16          }else{
17             onBridgeReady();
18          }
19       } else {
20          alert(resp.message);
21       }
22    });
23 
24    function onBridgeReady() {
25       $.post("{{URL::to('wxpay/js-api')}}/" + prepayId, function (resp) {
26          if (resp.success) {
27             WeixinJSBridge.invoke('getBrandWCPayRequest', {
28                      appId: resp.param.appId,
29                      timeStamp: resp.param.timeStamp.toString(),
30                      nonceStr: resp.param.nonceStr,
31                      package: resp.param.package,
32                      signType: resp.param.signType,
33                      paySign: resp.param.paySign
34                   }, function (res) {
35 //             alert(res.err_code+res.err_msg+res.err_desc);
36                      if (res.err_msg && res.err_msg.match(/cancel/)) {
37                         alert("交易取消");
38                         location.reload();
39                      } else if (res.err_msg && res.err_msg.match(/ok/)) {
40                         location.href = url;
41                      }else if (res.err_msg && res.err_msg.match(/fail/)){
42                         alert(res.err_code+res.err_msg+res.err_desc);
43 //                      alert("交易失败");
44                         location.reload();
45                      }
46                   }
47             );
48          }
49       });
50    }
51 }

getBrandWCPayRequest参数以及返回值定义见图7.1,返回列表值说明见图7.2。

表7.1 网页端接口参数列表

名称变量名必填类型示例值描述
公众号id appId String(16) wx8888888888888888 商户注册具有支付权限的公众号成功后即可获得
时间戳 timeStamp String(32) 1414561699 当前的时间,其他详见时间戳规则
随机字符串 nonceStr String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,不长于32位。推荐随机数生成算法
订单详情扩展字符串 package String(128) prepay_id=123456789 统一下单接口返回的prepay_id参数值,提交格式如:prepay_id=***
签名方式 signType String(32) MD5 签名算法,暂支持MD5
签名 paySign String(64) C380BEC2BFD727A4B6845133519F3AD6 签名,详见签名生成算法

表7.2 网页内支付接口err_msg返回结果值说明

返回值描述
get_brand_wcpay_request:ok 支付成功
get_brand_wcpay_request:cancel 支付过程中用户取消
get_brand_wcpay_request:fail 支付失败

查看详细的返回信息:

alert(res.err_code+res.err_msg+res.err_desc);
原文地址:https://www.cnblogs.com/isykw/p/6103854.html