微信JSAPI支付

Posted isykw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信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);

以上是关于微信JSAPI支付的主要内容,如果未能解决你的问题,请参考以下文章

微信h5支付和jsapi支付的区别

微信支付开发 c# SDK JSAPI支付开发的流程和微信大坑

微信支付(JSAPI) - Java

微信jsapi支付v3 显示商户签名错误

微信支付之JSAPI公众号支付

PHP微信三方平台-代公众号发起微信支付(jsAPI)