<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ### **APP 觸發購買操作后,后端的處理流程如下:** <br> ``` //下單用到的參數整理 let json = { appid: 'wx2421b1c4370ec43b', //微信開放平臺審核通過的應用APPID body: '填寫購買產品的相關信息', mch_id: '10000100', //微信支付分配的商戶號 nonce_str: '1add1a30ac87aa2', notify_url: 'http://wxpay.wxutil.com/pay/notify.php', //微信支付完成后,會回調的地址,用來通知后端此次交易的情況 out_trade_no: 'wx1415659990', //自定義的訂單號,后端自己生成 spbill_create_ip: '12.12.12.12', //終端IP,發起訂單請求IP req.ip total_fee: 100, //價格,單位為分 trade_type: 'APP', //支付類型為:APP支付 }; //第一步:對參數按照key=value的格式,按照參數名ASCII碼從小到大排序,生成URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 let stringA = stringifyParams(json); function stringifyParams(params) { return Object.keys(params).sort().reduce((ret, x) => { ret = ret ? ret + '&' : ret; ret += (x + '=' + params[x]); return ret; }, ''); } //第二步:拼接API密鑰: let stringSignTemp = stringA + "&key=" + wx.key; //注:key為商戶平臺設置的密鑰key json.sign = MD5(stringSignTemp).toString().toUpperCase(); //MD5簽名方式 //第三步:把上面的 json 數據生成 XML 數據格式。(生成 XML 格式,具體方法在此不再細說,各位可自行谷歌、百度了解) let formData = buildXml(json, 'xml'); //第四步:請求微信后臺統一下單接口 request({ url: "https://api.mch.weixin.qq.com/pay/unifiedorder", method: 'POST', body: formData }, function (error, response, body) { if (response.statusCode == 200) { //對返回的參數進行 XML 解碼 let parseString = xml2js.parseString; parseString(body, function (err, result) { let wxData = result.xml; //把安卓APP用來喚起微信支付所用到的數據返回 let toAppData = { appid: wxData.appid[0], //應用ID partnerid: wxData.mch_id[0], //商戶號 prepayid: wxData.prepay_id[0], //預支付交易會話ID package: 'Sign=WXPay', //固定值Sign=WXPay noncestr: wxData.nonce_str[0], //隨機字符串 timestamp: (Date.parse(new Date()) / 1000).toString(), //時間戳(秒級時間戳10位數) // sign: wxData.sign[0] //此處用返回的 sign 是錯誤的!!! }; //要注意!!!特別提醒!!!這里是初次開發微信支付的小朋友們會踩到的一個大坑!!!! 此處簽名不是微信返回的簽名,而是要按照上面第一、第二步 簽名的方式一樣,進行第二次生成簽名。 //進行簽名算法(生成簽名) let stringA = stringifyParams(toAppData); let stringSignTemp = stringA + "&key=" + wx.key; //注:key為商戶平臺設置的密鑰key toAppData.sign = MD5(stringSignTemp).toString().toUpperCase(); //把參數返回給 APP,讓 APP 喚起微信的支付,后端處理購買下單流程操作到此結束。 res.send(toAppData); }) } }); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看