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);
  • 相关阅读:
    ueditor内容带格式回显(html字符串回显)
    thymleaf th:text="|第${user.courseSort}课|" 对于不知道的真的是解渴了
    Thymleaf 从某处(不包含某处)开始截取字符串到末尾
    layUI 实现自定义弹窗
    layUI实现可选项 弹框
    layUI弹出框提示
    点击编辑table变为可编辑状态
    POI导出数据以Excel的方式录入,下载
    基于BootStrap的initupload()实现Excel上传和获取excel中的数据
    下载导入模板
  • 原文地址:https://www.cnblogs.com/isykw/p/6103854.html
Copyright © 2011-2022 走看看