美文网首页我爱编程
Node.js微信支付V3开发

Node.js微信支付V3开发

作者: 飞翔008 | 来源:发表于2016-11-22 02:14 被阅读0次

    最近由于需要用Node.js开发微信支付模块,顺便写一下微信支付的过程。首先要安装Node.js,npm, Express,模板引擎用EJS或者Pug(Jade),我选择简洁风格的EJS,个人不喜欢Pug(Jade)的语法。用express-generator生成完工程以后就可以开始了。微信支付接口文档可以在微信商户平台开发者文档找到。npm上的weixin-pay或者node-weixin-pay可以支持微信支付。

    一:介绍

    微信支付流程可以参考微信商户平台开发者文档,一共有四种支付方式刷卡支付公众号支付扫码支付App支付,我们要用的是公众号支付和扫码支付。先来实现扫码支付。

    二:扫码支付

    商户支付回掉URL,生成二维码规则形式为

    weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX
    

    其中XXXXX为商户需要填写的内容,可以参考官方的生成二维码规则

    1: 调用函数

    function onBridgeReady() {
      WeixinJSBridge.invoke('getBrandWCPayRequest', {
        "appId":  "wx2421b1c4370ec43b", // 公众号名称,由商户传入
        "timeStamp": " 1395712654", // 时间戳,自1970年以来的秒数
        "nonceStr":  "e61463f8efa94090b1f366cccfbbb444", // 随机串
        "package":  "prepay_id=u802345jgfjsdfgsdg888",
        "signType":  "MD5", // 微信签名方式
        "paySign":  "70EA570631E4BB79628FBCA90534C63FF7FADD89" // 微信签名
        },
        function(res) {
          // 使用以上方式判断前端返回,微信团队郑重提示: 
          // res.err_msg将在用户支付成功后返回
          // ok,但并不保证它绝对可靠。
          if (res.err_msg == "get_brand_wcpay_request: ok" ) {
            ;
          }
        });
      }
    
      if (typeof WeixinJSBridge == "undefined") {
        if (document.addEventListener) {
           document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
        } else if (document.attachEvent) {
          document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
          document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
        }
      } else {
        onBridgeReady();
      }
    

    2: 返回JSON

    {
      "appId": "wx2421b1c4370ec43b", // 公众号名称,由商户传入     
      "timeStamp":" 1395712654", // 时间戳,自1970年以来的秒数     
      "nonceStr": "e61463f8efa94090b1f366cccfbbb444", // 随机串     
      "package": "prepay_id=u802345jgfjsdfgsdg888",     
      "signType": "MD5", // 微信签名方式:
      "paySign": "70EA570631E4BB79628FBCA90534C63FF7FADD89" // 微信签名
    }
    

    3: 输入XML

    <xml>
      <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
      <attach><![CDATA[支付测试]]></attach>
      <bank_type><![CDATA[CFT]]></bank_type>
      <fee_type><![CDATA[CNY]]></fee_type>
      <is_subscribe><![CDATA[Y]]></is_subscribe>
      <mch_id><![CDATA[10000100]]></mch_id>
      <nonce_str><![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]></nonce_str>
      <openid><![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]></openid>
      <out_trade_no><![CDATA[1409811653]]></out_trade_no>
      <result_code><![CDATA[SUCCESS]]></result_code>
      <return_code><![CDATA[SUCCESS]]></return_code>
      <sign><![CDATA[B552ED6B279343CB493C5DD0D78AB241]]></sign>
      <sub_mch_id><![CDATA[10000100]]></sub_mch_id>
      <time_end><![CDATA[20140903131540]]></time_end>
      <total_fee>1</total_fee>
      <trade_type><![CDATA[JSAPI]]></trade_type>
      <transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id>
    </xml>
    

    4: 支付成功

    相关文章

      网友评论

        本文标题:Node.js微信支付V3开发

        本文链接:https://www.haomeiwen.com/subject/cglppttx.html