zoukankan      html  css  js  c++  java
  • 微信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);
  • 相关阅读:
    CentOS7 yum方式安装MariaDB 10.2.13-1
    追踪go语言(golang)的新版本新特性【摘抄】
    基于Jersey使用Session
    Netbeans 8.1 检测不到Tomcat8.5.3以上版本已经启动的Bug
    CentOS6上实现Tomcat8 service启动,并查看status
    【转帖】oracle数据类型和对应的java类型
    css文件的MIME错误引发的Jquery Mobile绘制错误
    Elasticsearch index fields 重命名
    oozie调度sqoop Job 数据库密码无法保存
    Java——安全地停止线程
  • 原文地址:https://www.cnblogs.com/isykw/p/6103854.html
Copyright © 2011-2022 走看看