微信支付 v 3.3.6

前提:注册、申请服务号,开通微信支付。

涉及到的参数:AppId、AppSecret、原始ID(自动回复)、mch_id(商户号)、Key(商户密钥:自己设定。)

统一规范:

  • 要求
  1. 认证方式:HTTPS 认证,退款和冲正接口调用需要商户证书(证书在审核邮件附件中)。

  2. 请求采用POST 方式。
  3. 提交和返回结果采用XML格式。
  4. 字符集默认使用UTF-8,请勿使用其它字符集。
  5. 商户与微信之间的交互(特别是Native 回调和支付通知回调),都需要验证签名
  6. 处理返回时先判断协议返回错误码,再判断业务返回错误码,最后判断交易状态。
  • 统一加密方式:MD5。
  • 统一签名生成方式:
    •   传入参数按字段名ascii码从小到大排序,使用url键值对的格式(key1=value1&key2=value2...)拼接成字符串注:值为空的参数不参与签名)在字符串最后再拼接上&key=Key(商户密钥),然后进行MD5加密处理,最后得到的字符串转换为大写

微信支付:

  • jsapi支付和native支付都需要调用统一支付接口(URL 地址:https://api.mch.weixin.qq.com/pay/unifiedorder)
  • jsapi支付
    • jsapi 调用统一支付接口需要参数openid(通过Oath2.0授权获取)。
    • 统一支付接口返回参数需要先验证签名,然后获取prepay_id。

      document.addEventListener(‘WeixinJSBridgeReady‘, function onBridgeReady() {

  //公众号支付
  jQuery(‘#wxPay‘).click(function(e){

    WeixinJSBridge.invoke(‘getBrandWCPayRequest‘,{
    "appId" : appId, //公众号名称,由商户传入
    "timeStamp" : timeStamp,   //时间戳
    "nonceStr" : nonceStr,        //随机串
    "package" : package,     //格式:prepay_id=xxxx
    "signType" : signType,    //签名方式:MD5
    "paySign" : paySign      //签名:生成签名参数appId、timeStamp、nonceStr、package、signType、key 注意参数名大小写
    },function(res){
      if(res.err_msg == "get_brand_wcpay_request:ok" ) {
        window.location.href=url;   //支付成功后跳转到的页面用于展示
      }
      // else {
        // alert(res.err_code+res.err_desc+res.err_msg);
      // }
    }); 

  });

}, false)

  • native支付

    

微信支付 v 3.3.6

上一篇:求救:关于ShareSDK微信分享


下一篇:微信企业号验证