{"id":29466,"date":"2024-11-25T11:37:48","date_gmt":"2024-11-25T03:37:48","guid":{"rendered":"https:\/\/fwq.ai\/blog\/29466\/"},"modified":"2024-11-25T11:37:48","modified_gmt":"2024-11-25T03:37:48","slug":"%e8%af%a6%e8%a7%a3%e5%be%ae%e4%bf%a1%e5%b0%8f%e7%a8%8b%e5%ba%8f%e6%94%af%e4%bb%98%e5%8a%9f%e8%83%bd%e5%bc%80%e5%8f%91%e9%94%99%e8%af%af%e6%80%bb%e7%bb%93","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/29466\/","title":{"rendered":"\u8be6\u89e3\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1\u9519\u8bef\u603b\u7ed3"},"content":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u4ecb\u7ecd\u4e86\u5fae\u4fe1\u5c0f\u7a0b\u5e8f \u652f\u4ed8\u529f\u80fd\u5f00\u53d1\u9519\u8bef\u603b\u7ed3\u7684\u76f8\u5173\u8d44\u6599,\u9700\u8981\u7684\u670b\u53cb\u53ef\u4ee5\u53c2\u8003\u4e0b<\/p>\n<p>\u5fae\u4fe1\u5c0f\u7a0b\u5e8f \u652f\u4ed8\u529f\u80fd\u5f00\u53d1\u9519\u8bef\u603b\u7ed3<\/p>\n<p>\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u7ec8\u4e8e\u8e29\u5b8c\u5751\u4e86\uff0c\u53d1\u73b0\u91cc\u9762\u5751\u633a\u5927\u7684\uff0c\u73b0\u5728\u53d1\u4e2a\u8d34\uff0c\u5e0c\u671b\u4ee5\u540e\u5165\u5751\u7684\u540c\u5b66\u53ef\u4ee5\u770b\u4e00\u4e0b \uff1a<\/p>\n<p>https:\/\/pay.weixin.qq.com\/wiki\/doc\/api\/wxa\/wxa_api.php?chapter=7_4&amp;index=2 <\/p>\n<p>\u4e1a\u52a1\u6d41\u7a0b\u5728\u8fd9\u91cc\u5927\u5bb6\u770b\u6587\u6863\u7684\u65f6\u5019\u53ef\u4ee5\u770b\u5230\u3002\u7b2c\u4e00\u4e2a\u5751\uff0c\u83b7\u53d6\u7528\u6237\u7684openid\uff0c\u53c2\u6570\u4e00\u5b9a\u8981\u62fc\u5728url\u8fde\u63a5\u4e0a\uff0c\u5426\u5219\u4f1a\u62a5{&#8220;errcode&#8221;:40013,&#8221;errmsg&#8221;:&#8221;invalid appid, hints: [ req_id: iil1ba0504ns86 ]&#8221;}\u9519\u8bef<\/p>\n<pre> onLoad: function () {\r\n  var that = this\r\n  wx.login({\r\n   success: function (res) {\r\n    if (res.code) {\r\n     \/\/\u53d1\u8d77\u7f51\u7edc\u8bf7\u6c42\r\n     wx.request({\r\n      url: 'https:\/\/api.weixin.qq.com\/sns\/jscode2session?appid=wxaacf22345345cfc7162fe3&amp;secret=83ebd41c3e6f34a49b3a34578063434548ff3f71&amp;js_code=' + res.code + '&amp;grant_type=authorization_code',\r\n      method: \"POST\",\r\n      success: function (res) {\r\n       that.setData({\r\n        openid: res.data.openid\r\n       })\r\n      }\r\n     })\r\n    } else {\r\n     console.log('\u83b7\u53d6\u7528\u6237\u767b\u5f55\u6001\u5931\u8d25\uff01' + res.errMsg)\r\n    }\r\n   }\r\n  });\r\n }<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u7b2c\u4e8c\u4e2a\u5751\uff0c\u652f\u4ed8\u7edf\u4e00\u4e0b\u5355\u63a5\u53e3\uff0c\u7b7e\u540d\u8fd9\u4e2a\u5751\u662f\u6bd4\u8f83\u591a\u4eba\u9047\u5230\u95ee\u9898\u7684\u8fd9\u4e2a\u662fMD5\u52a0\u5bc6\u7ecf\u5e38\u548c\u7b7e\u540d\u5de5\u5177\u91cc\u9762\u7684\u52a0\u5bc6\u7b7e\u540d\u4e0d\u4e00\u6837 <\/p>\n<p>\u7b7e\u540d\u52a0\u5bc6\u5de5\u5177\u5730\u5740\uff1ahttps:\/\/pay.weixin.qq.com\/wiki\/doc\/api\/jsapi.php?chapter=20_1 <\/p>\n<p>\u7b7e\u540d\u52a0\u5bc6\u7684\u65f6\u5019\u8981\u8f6c\u6210utf-8,\u52a0\u5bc6\u6211\u7528\u81ea\u5df1\u7684\u63a5\u53e3\u8fdb\u884c\u52a0\u5bc6\u7684 digest.update(data.getBytes(&#8220;utf-8&#8221;));<\/p>\n<pre> \/\/ \u7edf\u4e00\u4e0b\u5355\u63a5\u53e3\u83b7\u53d6sign\uff08\u7b7e\u540d\uff09\r\n paysignjsapi: function (appid, attach, body, mch_id, nonce_str, notify_url, openid, out_trade_no, spbill_create_ip, total_fee, trade_type, key) {\r\n  var self = this;\r\n  \/\/\u52a0\u5bc6\u7b7e\u540d\r\n  wx.request({\r\n   url: 'http:\/\/localhost:8080\/XinXingWXApi\/wxXcxApi\/Md5Encrypt.do',\r\n   method: 'GET',\r\n   data: {\r\n    appid: appid,\r\n    attach: attach,\r\n    body: body,\r\n    mch_id: mch_id,\r\n    nonce_str: nonce_str,\r\n    notify_url: notify_url,\r\n    openid: openid,\r\n    out_trade_no: out_trade_no,\r\n    spbill_create_ip: spbill_create_ip,\r\n    total_fee: total_fee,\r\n    trade_type: trade_type,\r\n    key: key\r\n   },\r\n   \/\/\u7edf\u4e00\u4e0b\u5355\r\n   success: function (res) {\r\n    var sign = res.data.strMd5\r\n    var formData = \"&lt;xml&gt;\"\r\n    formData += \"&lt;appid&gt;\" + appid + \"&lt;\/appid&gt;\" \/\/appid \r\n    formData += \"&lt;attach&gt;\" + attach + \"&lt;\/attach&gt;\" \/\/\u9644\u52a0\u6570\u636e \r\n    formData += \"&lt;body&gt;\" + body + \"&lt;\/body&gt;\"    \/\/\u6807\u9898\r\n    formData += \"&lt;mch_id&gt;\" + mch_id + \"&lt;\/mch_id&gt;\" \/\/\u5546\u6237\u53f7 \r\n    formData += \"&lt;nonce_str&gt;\" + nonce_str + \"&lt;\/nonce_str&gt;\" \/\/\u968f\u673a\u5b57\u7b26\u4e32\uff0c\u4e0d\u957f\u4e8e32\u4f4d\u3002 \r\n    formData += \"&lt;notify_url&gt;\" + notify_url + \"&lt;\/notify_url&gt;\" \/\/\u5f02\u6b65\u63a5\u6536\u5fae\u4fe1\u652f\u4ed8\u7ed3\u679c\u901a\u77e5\u7684\u56de\u8c03\u5730\u5740\r\n    formData += \"&lt;openid&gt;\" + openid + \"&lt;\/openid&gt;\"  \/\/\u7528\u6237Id\r\n    formData += \"&lt;out_trade_no&gt;\" + out_trade_no + \"&lt;\/out_trade_no&gt;\" \/\/\u5546\u6237\u8ba2\u5355\u53f7\r\n    formData += \"&lt;spbill_create_ip&gt;\" + spbill_create_ip + \"&lt;\/spbill_create_ip&gt;\"\r\n    formData += \"&lt;total_fee&gt;\" + total_fee + \"&lt;\/total_fee&gt;\" \/\/\u91d1\u989d\r\n    formData += \"&lt;trade_type&gt;\" + trade_type + \"&lt;\/trade_type&gt;\"  \/\/\u516c\u5171\u53f7\u652f\u4ed8\r\n    formData += \"&lt;sign&gt;\" + sign + \"&lt;\/sign&gt;\"\/\/\u7b7e\u540d\r\n    formData += \"&lt;\/xml&gt;\"<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u8fd4\u56de\u6570\u636e\u89e3\u6790xml<\/p>\n<pre> \/\/\u8bf7\u6c42\u7edf\u4e00\u4e0b\u5355\u63a5\u53e3\r\n    wx.request({\r\n     url: \"https:\/\/api.mch.weixin.qq.com\/pay\/unifiedorder\",\r\n     method: 'POST',\r\n     data: formData,\r\n     success: function (data) {\r\n      wx.request({\r\n       url: \"http:\/\/localhost:8080\/XinXingWXApi\/wxXcxApi\/xmlAnalyze.do?strXml=\" + data.data,\r\n       method: 'POST',\r\n       success: function (res) {\r\n        var pk = 'prepay_id=' + res.data.prepayId;\r\n        var timeStamp = self.createTimeStamp();\r\n        \/\/\u83b7\u53d6\u652f\u4ed8\u7b7e\u540d\uff0c\u5e76\u652f\u4ed8\r\n        self.getsignType(appid, timeStamp, nonce_str, pk, \"MD5\", key);\r\n       }\r\n      })\r\n     }\r\n    })\r\n   }\r\n  });\r\n }<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u7b2c\u4e09\u5c31\u662f\u8c03\u7528\u652f\u4ed8\u4e86,\u8fd9\u91cc\u4e5f\u6709\u51e0\u4e2a\u5c0f\u5751\uff0c\u7b2c\u4e00\u5c31\u662fappId\u5f88\u591a\u5199\u6210appid\u5c31\u4e0d\u884c\u4e86\uff0c\u7b2c\u4e8c\u4e2a\u5c31\u662fpreoatid \u7684\u53c2\u6570\u683c\u5f0f\u8981\u5199\u5bf9prepay_id=wx2017011711060194dccf725232155886323 \u7b2c\u4e09\u4e2a\u5c31\u662f\u8c03\u7528\u652f\u4ed8\u7684\u65f6\u5019\u62a5\u652f\u4ed8\u7b7e\u540d\u9519\u8bef\uff0c\u4e5f\u9700\u8981\u5230\u7b7e\u540d\u63a5\u53e3\u67e5\u770b\u7b7e\u540d\u662f\u5426\u4e00\u81f4\uff0c\u67e5\u770b\u53c2\u6570\u662f\u5426\u662f\u5bf9\u7684\uff0c\u8c03\u7528\u5fae\u4fe1\u652f\u4ed8\u7684\u65f6\u5019\u5fc5\u987b\u52a0\u4e0aappId<\/p>\n<pre>getsignType: function (appid, timeStamp, nonce_str, pk, signType, key) {\r\n  var that = this;\r\n  wx.request({\r\n   url: \"http:\/\/localhost:8080\/XinXingWXApi\/wxXcxApi\/getSignType.hn\",\r\n   method: 'GET',\r\n   data: {\r\n    appId: appid,\r\n    timeStamp: timeStamp,\r\n    nonceStr: nonce_str,\r\n    pk: pk,\r\n    signType: signType,\r\n    key: key\r\n   },\r\n   success: function (res) {\r\n    console.log(res.data.paySign)\r\n    var paySign = res.data.paySign\r\n    \/\/\u8c03\u7528\u5fae\u4fe1\u652f\u4ed8\r\n    wx.requestPayment({\r\n     'appId': appid,\r\n     'timeStamp': timeStamp,\r\n     'nonceStr': nonce_str,\r\n     'package': pk,\r\n     'signType': 'MD5',\r\n     'paySign': paySign,\r\n     'success': function (res) {\r\n      console.log(res);\r\n      console.log('success');\r\n     },\r\n     'fail': function (res) {\r\n      console.log(res);\r\n      console.log('fail');\r\n     },\r\n     'complete': function (res) {\r\n      \/\/ console.log(res);\r\n      console.log('complete');\r\n     }\r\n    });\r\n   }\r\n  })\r\n }<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u611f\u8c22\u9605\u8bfb\uff0c\u5e0c\u671b\u80fd\u5e2e\u52a9\u5230\u5927\u5bb6\uff0c\u8c22\u8c22\u5927\u5bb6\u5bf9\u672c\u7ad9\u7684\u652f\u6301\uff01<\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u8be6\u89e3\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1\u9519\u8bef\u603b\u7ed3\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u4ecb\u7ecd\u4e86\u5fae\u4fe1\u5c0f\u7a0b\u5e8f \u652f\u4ed8\u529f\u80fd\u5f00\u53d1\u9519\u8bef\u603b\u7ed3\u7684\u76f8\u5173\u8d44\u6599,\u9700\u8981\u7684\u670b\u53cb\u53ef\u4ee5\u53c2\u8003\u4e0b \u5fae\u4fe1\u5c0f\u7a0b\u5e8f \u652f\u4ed8\u529f\u80fd\u5f00\u53d1\u9519\u8bef\u603b\u7ed3 \u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u7ec8\u4e8e\u8e29\u5b8c\u5751\u4e86\uff0c\u53d1\u73b0\u91cc\u9762\u5751\u633a\u5927\u7684\uff0c\u73b0\u5728\u53d1\u4e2a\u8d34\uff0c\u5e0c\u671b\u4ee5\u540e\u5165\u5751\u7684\u540c\u5b66\u53ef\u4ee5\u770b\u4e00\u4e0b \uff1a https:\/\/pay.weixin.qq.com\/wiki\/doc\/api\/wxa\/wxa_api.php?chapter=7_4&amp;index=2 \u4e1a\u52a1\u6d41\u7a0b\u5728\u8fd9\u91cc\u5927\u5bb6\u770b\u6587\u6863\u7684\u65f6\u5019\u53ef\u4ee5\u770b\u5230\u3002\u7b2c\u4e00\u4e2a\u5751\uff0c\u83b7\u53d6\u7528\u6237\u7684openid\uff0c\u53c2\u6570\u4e00\u5b9a\u8981\u62fc\u5728url\u8fde\u63a5\u4e0a\uff0c\u5426\u5219\u4f1a\u62a5{&#8220;errcode&#8221;:40013,&#8221;errmsg&#8221;:&#8221;invalid appid, hints: [ req_id: iil1ba0504ns86 ]&#8221;}\u9519\u8bef onLoad: function () { var that = this wx.login({ success: function (res) { if (res.code) { \/\/\u53d1\u8d77\u7f51\u7edc\u8bf7\u6c42 wx.request({ url: &#8216;https:\/\/api.weixin.qq.com\/sns\/jscode2session?appid=wxaacf22345345cfc7162fe3&amp;secret=83ebd41c3e6f34a49b3a34578063434548ff3f71&amp;js_code=&#8217; + res.code + &#8216;&amp;grant_type=authorization_code&#8217;, method: &#8220;POST&#8221;, success: function (res) { that.setData({ openid: res.data.openid }) } }) } else { console.log(&#8216;\u83b7\u53d6\u7528\u6237\u767b\u5f55\u6001\u5931\u8d25\uff01&#8217; + [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-29466","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29466","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=29466"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29466\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=29466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=29466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=29466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}