{"id":31602,"date":"2024-11-25T16:36:43","date_gmt":"2024-11-25T08:36:43","guid":{"rendered":"https:\/\/fwq.ai\/blog\/31602\/"},"modified":"2024-11-25T16:36:43","modified_gmt":"2024-11-25T08:36:43","slug":"thinkphp%e5%ae%9e%e7%8e%b0%e5%be%ae%e4%bf%a1%e6%94%af%e4%bb%98jsapi%e6%94%af%e4%bb%98","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/31602\/","title":{"rendered":"ThinkPHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)"},"content":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u4ecb\u7ecd\u4e86thinkphp\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u6d41\u7a0b\u6559\u7a0b\u8be6\u89e3,\u9700\u8981\u7684\u670b\u53cb\u53ef\u4ee5\u53c2\u8003\u4e0b<\/p>\n<p>\u4e4b\u524d\u5199\u8fc7\u4e00\u7bc7\u6587\u7ae0\u8bb2\u4e86PHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u6d41\u7a0b \uff0c\u8be6\u89c1\u6587\u7ae0\uff1aPHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u6d41\u7a0b\u3002<\/p>\n<p>\u5f53\u65f6\u7684\u73af\u5883\u662f\u6ca1\u6709\u4f7f\u7528\u6846\u67b6\u7684\uff0c\u76f4\u63a5\u5728\u4e00\u4e2a\u57df\u540d\u6307\u5411\u7684\u76ee\u5f55\u4e0b\u8fb9\u65b0\u5efa\u76ee\u5f55\u4e4b\u540e\u8bbf\u95ee\u8be5\u76ee\u5f55\u5b9e\u73b0\u7684\uff0c\u4f46\u5e94\u7528\u5230\u6846\u67b6\u4e2d\uff0c\u8fd8\u662f\u6709\u4e00\u4e9b\u95ee\u9898\uff0c\u5728ThinkPHP\u4e2d\uff0c\u7531\u4e8e\u8def\u7531\u89c4\u5219\u4e0e\u652f\u4ed8\u6388\u6743\u76ee\u5f55\u6709\u51fa\u5165\uff0c\u6240\u4ee5\u4f1a\u62a5\u9519\u3002\u672c\u7bc7\u8bb2\u8bb2\u5728TP\u4e2d\u96c6\u6210\u5fae\u4fe1\u652f\u4ed8\u7684\u6d41\u7a0b\u3002<\/p>\n<p>\u9e45\u5382\u51fa\u7684SDK\u548c\u6587\u6863\uff0c\u5c31\u662f\u8ba9\u4f60\u770b\u4e0d\u61c2\uff0c\u4f7f\u52b2\u7ed5\uff0c\u8fd9\u9178\u723d\u7528\u4e86\u5c31\u77e5\u9053\u3002\u6587\u6863\u548cSDK\u4e0d\u662f\u5e94\u8be5\u8d8a\u7b80\u5355\u901a\u4fd7\u6613\u61c2\u8d8a\u597d\u4e48\uff1f\u96be\u9053\u53ea\u6709\u4f7f\u52b2\u91cd\u6784\u624d\u80fd\u663e\u793a\u51fa\u9e45\u5382\u7a0b\u5e8f\u733f\u6280\u672f\u7684\u9ad8\u8d85\u54a9\uff1f\u989d&#8230;\u662f\u4e0d\u662f\u66b4\u9732\u4e86\u6211\u83dc\u9e1f\u7684\u5c5e\u6027&#8230;\u5176\u5b9eSDK\u86ee\u597d\u7528\uff0c\u53ea\u662f\u4e0a\u4e00\u7bc7\u6587\u7ae0\u4e2d\u4e5f\u770b\u5230\u4e86\uff0c\u5728\u652f\u4ed8\u5b8c\u6210\u56de\u8c03\u51fd\u6570\u4e2d\uff0c\u7740\u5b9e\u8ba9\u4eba\u7ed5\u7684\u6655\u5934\u8f6c\u5411\u3002<\/p>\n<p>\u5bf9\u4e8e\u4e0d\u60f3\u88ab\u5b98\u65b9\u7ed5\u7684\uff0c\u60f3\u5728TP\u4e2d\u4f7f\u7528\u5fae\u4fe1\u652f\u4ed8\u7684\u53ef\u4ee5\u770b\u770b\u4e00\u4e2a\u5927\u795e\u81ea\u5df1\u6839\u636e\u5b98\u65b9\u6587\u6863\u91cd\u6784\u7cbe\u7b80\u6253\u9020\u800c\u6210\u7684\u9002\u7528\u4e8eTP\u7684\u652f\u4ed8SDK\uff0c\u6e90\u7801\u6211\u4e0b\u8f7d\u4e0b\u6765\u770b\u8fc7\u4e86\uff0c\u4ee3\u7801\u5199\u7684\u5f88\u4f18\u96c5\u7b80\u4ecb\uff0c\u6d41\u7a0b\u4e5f\u5f88\u7b80\u5355\uff0c\u901a\u4fd7\u6613\u61c2\u3002\u8be6\u89c1\u535a\u6587\uff1ahttp:\/\/baijunyao.com\/article\/78<\/p>\n<p><span>\u7acb\u5373\u5b66\u4e60<\/span>\u201c\u201d\uff1b<\/p>\n<p>\u6211\u81ea\u5df1\u8fd8\u662f\u76b1\u7740\u7709\u5934\uff0c\u4f7f\u7528\u4e86\u5b98\u65b9\u7684SDK\uff0c\u4e5f\u6210\u529f\u5b9e\u73b0\u4e86\u652f\u4ed8\uff0c\u4e0b\u9762\u8ddf\u5927\u5bb6\u5206\u4eab\u4e00\u4e0b\u6d41\u7a0b\uff1a<\/p>\n<p><strong>1.SDK\u4e0b\u8f7d\u548c\u4fee\u6539<\/strong><\/p>\n<p>\u8fd9\u4e2a\u5c31\u4e0d\u8fc7\u591a\u8bb2\u4e86\uff0c\u4e0d\u77e5\u9053\u7684\u53ef\u4ee5\u770b\u770b\u6211\u7684\u4e0a\u4e00\u7bc7\u6587\u7ae0\uff1aPHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u6d41\u7a0b\uff0c\u91cc\u8fb9\u8be6\u7ec6\u8be6\u8ff0\u4e86\u4e0b\u8f7d\u4e0b\u6765\u7684\u6587\u4ef6\u54ea\u4e9b\u662f\u9700\u8981\u4fee\u6539\u7684\u3002<\/p>\n<p><strong>2.\u516c\u4f17\u53f7\u8bbe\u7f6e<\/strong><\/p>\n<p>A. \u8fd8\u662f\u9700\u8981\u8bbe\u7f6e\u7f51\u9875\u6388\u6743\u57df\u540d\uff0c\u8fd9\u4e2a\u6ca1\u5565\u7279\u6b8a\u7684\uff1b<\/p>\n<p>B. \u8fd9\u91cc\u8981\u6ce8\u610f\u4e00\u4e0b\u652f\u4ed8\u6388\u6743\u76ee\u5f55\uff0c\u4f7f\u7528TP\u5f88\u591a\u4eba\u90fd\u4f7f\u7528\u7684\u662f\u91cd\u5199\u6a21\u5f0f\uff08REWRITE\u6a21\u5f0f\uff09\u6216\u8005\u5728\u4f7f\u7528REWRITE\u6a21\u5f0f\u7684\u540c\u65f6\uff0c\u4f7f\u7528\u4f2a\u9759\u6001\u6a21\u5f0f\uff0c\u8fd9\u65f6\u5019\u751f\u6210\u7684\u94fe\u63a5\u4e3a\uff1a&nbsp;http:\/\/serverName\/Home\/Blog\/read\/id\/1 \uff1b<\/p>\n<p>\u5982\u679c\u4f7f\u7528\u7684\u662fPATHINFO\u6a21\u5f0f\u7684\u8bdd\uff0c\u751f\u6210\u7684\u94fe\u63a5\u5c31\u662f\uff1ahttp:\/\/serverName\/index.php\/Home\/Blog\/read\/id\/1\uff0c\u6bd4\u5982\u5728Home\u6a21\u5757\u4e0b\u7684Blog\u63a7\u5236\u5668\u4e2d\u7684\u67d0\u4e2a\u65b9\u6cd5\u8fdb\u884c\u652f\u4ed8\uff0c\u6211\u4eec\u652f\u4ed8\u7684\u6388\u6743\u76ee\u5f55\u5e94\u8be5\u662f http:\/\/serverName\/Home\/Blog\/ \u6216\u8005 http:\/\/serverName\/index.php\/Home\/Blog\/\uff0c\u8fd9\u4e2a\u6839\u636e\u81ea\u5df1\u7684TP\u7684\u8bbe\u7f6e\u7684URL\u6a21\u5f0f\u800c\u5b9a\u3002<\/p>\n<p><strong>3.\u652f\u4ed8\u6d41\u7a0b<\/strong><\/p>\n<p>\uff081\uff09\u7edf\u4e00\u4e0b\u5355<\/p>\n<p>\u4e0b\u5355\u7684\u652f\u4ed8\u53c2\u6570\u914d\u7f6e\uff0c\u8fd9\u4e2a\u8ddf\u4e0a\u4e00\u7bc7\u8bb2\u7684\u57fa\u672c\u4e0d\u53d8\uff0c\u91cd\u70b9\u6ce8\u610f\u7684\u662f\u652f\u4ed8\u56de\u8c03\u9a8c\u8bc1\u94fe\u63a5\uff0c\u56e0\u4e3a\u8981\u591a\u6b21\u8c03\u7528\uff0c\u6211\u5c31\u76f4\u63a5\u5728Application\/Common\/Common\/function.php\u4e2d\u5c06\u53c2\u6570\u914d\u7f6e\u5c01\u88c5\u8d77\u6765\u4e86\uff0c\u6211\u7684SDK\u653e\u5728\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u7684Api\u76ee\u5f55\u4e0b\uff0c\u6240\u4ee5\u5f15\u5165SDK\u7684\u65f6\u5019\u4e0d\u662f\u4f7f\u7528Vendor\u51fd\u6570\u3002<\/p>\n<pre>\/**&nbsp;\n&nbsp;*&nbsp;\u5fae\u4fe1\u652f\u4ed8&nbsp;\n&nbsp;*&nbsp;@param&nbsp;string&nbsp;$openId&nbsp;&nbsp;openid&nbsp;\n&nbsp;*&nbsp;@param&nbsp;string&nbsp;$goods&nbsp;&nbsp;\u5546\u54c1\u540d\u79f0&nbsp;\n&nbsp;*&nbsp;@param&nbsp;string&nbsp;$attach&nbsp;&nbsp;\u9644\u52a0\u53c2\u6570,\u6211\u4eec\u53ef\u4ee5\u9009\u62e9\u4f20\u9012\u4e00\u4e2a\u53c2\u6570,\u6bd4\u5982\u8ba2\u5355ID&nbsp;\n&nbsp;*&nbsp;@param&nbsp;string&nbsp;$order_sn&nbsp;\u8ba2\u5355\u53f7&nbsp;\n&nbsp;*&nbsp;@param&nbsp;string&nbsp;$total_fee&nbsp;\u91d1\u989d&nbsp;\n&nbsp;*\/&nbsp;\nfunction&nbsp;wxpay($openId,$goods,$order_sn,$total_fee,$attach){&nbsp;\n&nbsp;require_once&nbsp;APP_ROOT.\"\/Api\/wxpay\/lib\/WxPay.Api.php\";&nbsp;\n&nbsp;require_once&nbsp;APP_ROOT.\"\/Api\/wxpay\/payment\/WxPay.JsApiPay.php\";&nbsp;\n&nbsp;require_once&nbsp;APP_ROOT.'\/Api\/wxpay\/payment\/log.php';&nbsp;\n&nbsp;\/\/\u521d\u59cb\u5316\u65e5\u5fd7&nbsp;\n&nbsp;$logHandler=&nbsp;new&nbsp;CLogFileHandler(APP_ROOT.\"\/Api\/wxpay\/logs\/\".date('Y-m-d').'.log');&nbsp;\n&nbsp;$log&nbsp;=&nbsp;Log::Init($logHandler,&nbsp;15);&nbsp;\n&nbsp;$tools&nbsp;=&nbsp;new&nbsp;JsApiPay();&nbsp;\n&nbsp;if(empty($openId))&nbsp;$openId&nbsp;=&nbsp;$tools-&amp;gt;GetOpenid();&nbsp;\n&nbsp;$input&nbsp;=&nbsp;new&nbsp;WxPayUnifiedOrder();&nbsp;\n&nbsp;$input-&amp;gt;SetBody($goods);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u5546\u54c1\u540d\u79f0&nbsp;\n&nbsp;$input-&amp;gt;SetAttach($attach);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u9644\u52a0\u53c2\u6570,\u53ef\u586b\u53ef\u4e0d\u586b,\u586b\u5199\u7684\u8bdd,\u91cc\u8fb9\u5b57\u7b26\u4e32\u4e0d\u80fd\u51fa\u73b0\u7a7a\u683c&nbsp;\n&nbsp;$input-&amp;gt;SetOut_trade_no($order_sn);&nbsp;&nbsp;&nbsp;\/\/\u8ba2\u5355\u53f7&nbsp;\n&nbsp;$input-&amp;gt;SetTotal_fee($total_fee);&nbsp;&nbsp;&nbsp;\/\/\u652f\u4ed8\u91d1\u989d,\u5355\u4f4d:\u5206&nbsp;\n&nbsp;$input-&amp;gt;SetTime_start(date(\"YmdHis\"));&nbsp;&nbsp;\/\/\u652f\u4ed8\u53d1\u8d77\u65f6\u95f4&nbsp;\n&nbsp;$input-&amp;gt;SetTime_expire(date(\"YmdHis\",&nbsp;time()&nbsp;+&nbsp;600));\/\/\u652f\u4ed8\u8d85\u65f6&nbsp;\n&nbsp;$input-&amp;gt;SetGoods_tag(\"test3\");&nbsp;\n&nbsp;\/\/$input-&amp;gt;SetNotify_url(\"http:\/\/\".$_SERVER['HTTP_HOST'].\"\/payment.php\");&nbsp;\/\/\u652f\u4ed8\u56de\u8c03\u9a8c\u8bc1\u5730\u5740&nbsp;\n&nbsp;$input-&amp;gt;SetNotify_url(\"http:\/\/\".$_SERVER['HTTP_HOST'].\"\/payment.php\/WexinApi\/WeixinPay\/notify\");&nbsp;\n&nbsp;$input-&amp;gt;SetTrade_type(\"JSAPI\");&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u652f\u4ed8\u7c7b\u578b&nbsp;\n&nbsp;$input-&amp;gt;SetOpenid($openId);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u7528\u6237openID&nbsp;\n&nbsp;$order&nbsp;=&nbsp;WxPayApi::unifiedOrder($input);&nbsp;\/\/\u7edf\u4e00\u4e0b\u5355&nbsp;\n&nbsp;$jsApiParameters&nbsp;=&nbsp;$tools-&amp;gt;GetJsApiParameters($order);&nbsp;\n&nbsp;return&nbsp;$jsApiParameters;&nbsp;\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u6ce8\u610f\uff0c\u6ce8\u610f\uff0c\u6572\u9ed1\u677f\u5212\u91cd\u70b9\u4e86\uff1a<\/p>\n<p><span style=\"background-color: #ffff00\">\u652f\u4ed8\u56de\u8c03\u9a8c\u8bc1\u94fe\u63a5\uff0c\u5fc5\u987b\u662f\u6ca1\u6709\u6743\u9650\u9a8c\u8bc1\u7684\uff0c\u5982\u679c\u4f60\u81ea\u5df1\u8bbf\u95ee\u90a3\u4e2a\u94fe\u63a5\uff0c\u8fd8\u9700\u8981\u767b\u5f55\u6ce8\u518c\u9a8c\u8bc1\u7684\uff0c\u5c31\u4e0d\u8981\u5c1d\u8bd5\u4e86\uff0c\u5fc5\u987b\u8981\u53ef\u4ee5\u65e0\u969c\u788d\u8bbf\u95ee\u7684\u94fe\u63a5\uff0c\u800c\u4e14\u4e5f\u4e0d\u8981\u6709\u4e00\u8fde\u4e32\u7684\u53c2\u6570\u4f20\u9012\u3002<\/span><\/p>\n<p>\u6700\u597d\u5c31\u662f\u7b80\u5355\u7c97\u66b4\u7684 http:\/\/serverName\/xxx.php \uff0c\u6211\u5728\u8ddf\u76ee\u5f55\u4e0b\uff0c\u7c7b\u4f3c\u4e8eindex.php\uff0c\u91cd\u65b0\u5199\u4e86\u4e00\u4e2a\u4e13\u95e8\u7684\u4f9b\u652f\u4ed8\u56de\u8c03\u7684\u5165\u53e3\u6587\u4ef6payment.php\uff0c\u548c\u5b83\u5bf9\u5e94\u7684Application\/\u76ee\u5f55\u4e0b\u7684\u6a21\u5757\uff08WexinApi\uff09\u3001\u63a7\u5236\u5668\uff08WeixinPay\uff09\u53ca\u65b9\u6cd5\uff08notify\uff09\uff1a<\/p>\n<pre>\/\/&nbsp;\u68c0\u6d4bPHP\u73af\u5883&nbsp;\nif(version_compare(PHP_VERSION,'5.3.0','&nbsp;5.3.0&nbsp;!');&nbsp;\n\/\/&nbsp;$_GET['m']='Admin';&nbsp;\n\/\/&nbsp;\u5f00\u542f\u8c03\u8bd5\u6a21\u5f0f&nbsp;\u5efa\u8bae\u5f00\u53d1\u9636\u6bb5\u5f00\u542f&nbsp;\u90e8\u7f72\u9636\u6bb5\u6ce8\u91ca\u6216\u8005\u8bbe\u4e3afalse&nbsp;\ndefine('APP_DEBUG',True);&nbsp;\n\/\/\u6307\u5b9a\u6a21\u5757\u63a7\u5236\u5668\u548c\u65b9\u6cd5&nbsp;\n$_GET['m']='WexinApi';&nbsp;\n$_GET['c']='WeixinPay';&nbsp;\n$_GET['a']='notify';&nbsp;\n\/\/&nbsp;\u5b9a\u4e49\u5e94\u7528\u76ee\u5f55&nbsp;\ndefine('APP_PATH','.\/Application\/');&nbsp;\ndefine(\"APP_ROOT\",dirname(__FILE__));&nbsp;\n\/\/&nbsp;\u5f15\u5165ThinkPHP\u5165\u53e3\u6587\u4ef6&nbsp;\nrequire&nbsp;'.\/ThinkCore\/ThinkCore.php';&nbsp;\n\/\/&nbsp;\u4eb2^_^&nbsp;\u540e\u9762\u4e0d\u9700\u8981\u4efb\u4f55\u4ee3\u7801\u4e86&nbsp;\u5c31\u662f\u5982\u6b64\u7b80\u5355<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u73b0\u5728\u8bbf\u95ee http:\/\/serverName\/payment.php \uff0c\u5c31\u4f1a\u76f4\u63a5\u8fdb\u5165\u5230&nbsp; http:\/\/serverName\/payment.php\/WexinApi\/WeixinPay\/notify&nbsp;\uff0c\u8fd9\u6837\u56de\u8c03\u9a8c\u8bc1\u94fe\u63a5\u53ef\u4ee5\u5199 &nbsp;http:\/\/serverName\/payment.php \uff0c\u4e5f\u53ef\u4ee5\u5199 http:\/\/serverName\/payment.php\/WexinApi\/WeixinPay\/notify \u3002<\/p>\n<p>\uff082\uff09\u53d1\u8d77\u652f\u4ed8<\/p>\n<p>\u7167\u6837\u5f88\u7b80\u5355\uff1a<\/p>\n<pre>\/**&nbsp;\n*&nbsp;\u652f\u4ed8\u6d4b\u8bd5&nbsp;\n*&nbsp;\u5fae\u4fe1\u8bbf\u95ee:http:\/\/daoshi.sdxiaochengxu.com\/payment.php\/WexinApi\/WeixinPay\/pay&nbsp;\n*\/&nbsp;\npublic&nbsp;function&nbsp;pay(){&nbsp;\n&nbsp;$order_sn&nbsp;=&nbsp;getrand_num(true);&nbsp;\n&nbsp;$openId&nbsp;=&nbsp;'';&nbsp;\n&nbsp;$jsApiParameters&nbsp;=&nbsp;wxpay($openId,'\u6c5f\u5357\u6781\u5ba2',$order_sn,1);&nbsp;\n&nbsp;$this-&amp;gt;assign(array(&nbsp;\n&nbsp;&nbsp;'data'&nbsp;=&amp;gt;&nbsp;$jsApiParameters&nbsp;\n&nbsp;));&nbsp;\n&nbsp;$this-&amp;gt;display();&nbsp;\n}&nbsp;\n\n&nbsp;\n&nbsp;\n&nbsp;&lt;meta&gt;&nbsp;\n&nbsp;&lt;meta&gt;&nbsp;\n&nbsp;&lt;title&gt;\u5c0f\u5c24\u652f\u4ed8\u6d4b\u8bd5&lt;\/title&gt;&nbsp;\n&nbsp;&lt;script&gt; \n \/\/\u8c03\u7528\u5fae\u4fe1JS api \u652f\u4ed8 \n function jsApiCall() \n { \n  var data={$data}; \n  WeixinJSBridge.invoke( \n   &#039;getBrandWCPayRequest&#039;, data, \n   function(res){ \n    WeixinJSBridge.log(res.err_msg); \n    \/\/alert(&#039;err_code:&#039;+res.err_code+&#039;err_desc:&#039;+res.err_desc+&#039;err_msg:&#039;+res.err_msg); \n    \/\/alert(res.err_code+res.err_desc+res.err_msg); \n    \/\/alert(res); \n    if(res.err_msg == \"get_brand_wcpay_request:ok\"){ \n     alert(\"\u652f\u4ed8\u6210\u529f!\"); \n     window.location.href=\"http:\/\/m.blog.csdn.net\/article\/details?id=72765676\" rel=\"external nofollow\" ; \n    }else if(res.err_msg == \"get_brand_wcpay_request:cancel\"){ \n     alert(\"\u7528\u6237\u53d6\u6d88\u652f\u4ed8!\"); \n    }else{ \n     alert(\"\u652f\u4ed8\u5931\u8d25!\"); \n    } \n   } \n  ); \n } \n function callpay() \n { \n  if (typeof WeixinJSBridge == \"undefined\"){ \n   if( document.addEventListener ){ \n    document.addEventListener(&#039;WeixinJSBridgeReady&#039;, jsApiCall, false); \n   }else if (document.attachEvent){ \n    document.attachEvent(&#039;WeixinJSBridgeReady&#039;, jsApiCall); \n    document.attachEvent(&#039;onWeixinJSBridgeReady&#039;, jsApiCall); \n   } \n  }else{ \n   jsApiCall(); \n  } \n } \n &lt;\/script&gt;&nbsp;\n&nbsp;\n&nbsp;\n&nbsp;&lt;br&gt;&nbsp;\n&nbsp;&lt;font&gt;&lt;b&gt;\u8be5\u7b14\u8ba2\u5355\u652f\u4ed8\u91d1\u989d\u4e3a&lt;span&gt;1\u5206&lt;\/span&gt;\u94b1&lt;\/b&gt;&lt;\/font&gt;&lt;br&gt;&lt;br&gt;&nbsp;\n&nbsp;&lt;font&gt;&lt;b&gt;&lt;span&gt;1\u5206&lt;\/span&gt;\u94b1\u4e5f\u662f\u7231&lt;\/b&gt;&lt;\/font&gt;&lt;br&gt;&lt;br&gt;&nbsp;\n&nbsp;&lt;p&gt;&nbsp;\n&nbsp;&nbsp;&lt;button&gt;\u679c\u65ad\u4e70\u4e70\u4e70^_^&lt;\/button&gt;&nbsp;\n&nbsp;&lt;\/p&gt;&nbsp;\n&nbsp;\n<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4e0d\u8fc7\u652f\u4ed8\u9875\u9762\u7684URL\u8981\u6ce8\u610f\u4e86\uff0c\u56e0\u4e3a\u652f\u4ed8\u9875\u9762\u7684URL\u80af\u5b9a\u5e26\u6709\u4e0d\u5c11\u53c2\u6570\uff0c\u521a\u624d\u8bf4\u4e86TP\u4e2d\u4f7f\u7528\u7684REWRITE\u6a21\u5f0f\uff0c\u4f60\u7684\u94fe\u63a5\u4e3a\u7c7b\u4f3c[&nbsp; http:\/\/serverName\/Home\/Blog\/read\/id\/1 ]\u8fd9\u6837\u7684\uff0c\u53ef\u80fd\u5e26\u6709\u66f4\u591a\u53c2\u6570\uff0c\u8fd9\u65f6\u5019\u5fae\u4fe1\u652f\u4ed8\u4f1a\u8ba4\u4e3a\u4f60\u7684\u652f\u4ed8\u6388\u6743\u76ee\u5f55\u662f[&nbsp; http:\/\/serverName\/Home\/Blog\/read\/id\/&nbsp;]\uff0c\u4f46\u662f\u4f60\u771f\u5b9e\u7684\u6388\u6743\u76ee\u5f55\u662f[&nbsp; http:\/\/serverName\/Home\/Blog\/]\uff0c\u6240\u4ee5\u5c31\u4f1a\u62a5\u9519\u3002\u5904\u7406\u65b9\u6cd5\u5c31\u662f\uff0c\u5728\u8fdb\u5165\u652f\u4ed8\u9875\u9762\u7684\u65f6\u5019\uff0c\u91cd\u6784URL\uff0c\u5199\u6210\u666e\u901a\u6a21\u5f0f\uff0c\u5373\u4e3a[&nbsp; http:\/\/serverName\/Home\/Blog\/read?id=1]\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/009\/49ef0a4ace68ab760aefd8cc51e9e8dd-0.jpg\" class=\"aligncenter\" title=\"ThinkPHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u63d2\u56fe\" alt=\"ThinkPHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u63d2\u56fe\" \/><\/p>\n<p>\uff083\uff09\u652f\u6301\u6210\u529f\u56de\u8c03<\/p>\n<p>\u73b0\u5728\u652f\u4ed8\u5b8c\u6210\uff0c\u5c31\u4f1a\u8fdb\u5165\u5230\u4e4b\u524d\u5199\u597d\u7684\u94fe\u63a5\u5bf9\u5e94\u7684\u65b9\u6cd5\uff0c\u5373[&nbsp; http:\/\/serverName\/payment.php\/WexinApi\/WeixinPay\/notify]\uff1a<\/p>\n<pre>\/\/\u5fae\u4fe1\u652f\u4ed8\u56de\u8c03\u9a8c\u8bc1&nbsp;\npublic&nbsp;function&nbsp;notify(){&nbsp;\n&nbsp;$xml&nbsp;=&nbsp;$GLOBALS['HTTP_RAW_POST_DATA'];&nbsp;\n&nbsp;\/\/&nbsp;\u8fd9\u53e5file_put_contents\u662f\u7528\u6765\u67e5\u770b\u670d\u52a1\u5668\u8fd4\u56de\u7684XML\u6570\u636e&nbsp;\u6d4b\u8bd5\u5b8c\u53ef\u4ee5\u5220\u9664\u4e86&nbsp;\n&nbsp;file_put_contents('.\/Api\/wxpay\/logs\/log.txt',$xml,FILE_APPEND);&nbsp;\n&nbsp;\/\/\u5c06\u670d\u52a1\u5668\u8fd4\u56de\u7684XML\u6570\u636e\u8f6c\u5316\u4e3a\u6570\u7ec4&nbsp;\n&nbsp;\/\/$data&nbsp;=&nbsp;json_decode(json_encode(simplexml_load_string($xml,'SimpleXMLElement',LIBXML_NOCDATA)),true);&nbsp;\n&nbsp;$data&nbsp;=&nbsp;xmlToArray($xml);&nbsp;\n&nbsp;\/\/&nbsp;\u4fdd\u5b58\u5fae\u4fe1\u670d\u52a1\u5668\u8fd4\u56de\u7684\u7b7e\u540dsign&nbsp;\n&nbsp;$data_sign&nbsp;=&nbsp;$data['sign'];&nbsp;\n&nbsp;\/\/&nbsp;sign\u4e0d\u53c2\u4e0e\u7b7e\u540d\u7b97\u6cd5&nbsp;\n&nbsp;unset($data['sign']);&nbsp;\n&nbsp;$sign&nbsp;=&nbsp;$this-&amp;gt;makeSign($data);&nbsp;\n&nbsp;\/\/&nbsp;\u5224\u65ad\u7b7e\u540d\u662f\u5426\u6b63\u786e&nbsp;\u5224\u65ad\u652f\u4ed8\u72b6\u6001&nbsp;\n&nbsp;if&nbsp;(&nbsp;($sign===$data_sign)&nbsp;&amp;amp;&amp;amp;&nbsp;($data['return_code']=='SUCCESS')&nbsp;&amp;amp;&amp;amp;&nbsp;($data['result_code']=='SUCCESS')&nbsp;)&nbsp;{&nbsp;\n&nbsp;&nbsp;$result&nbsp;=&nbsp;$data;&nbsp;\n&nbsp;&nbsp;\/\/&nbsp;\u8fd9\u53e5file_put_contents\u662f\u7528\u6765\u67e5\u770b\u670d\u52a1\u5668\u8fd4\u56de\u7684XML\u6570\u636e&nbsp;\u6d4b\u8bd5\u5b8c\u53ef\u4ee5\u5220\u9664\u4e86&nbsp;\n&nbsp;&nbsp;file_put_contents('.\/Api\/wxpay\/logs\/log1.txt',$xml,FILE_APPEND);&nbsp;\n&nbsp;&nbsp;\/\/\u83b7\u53d6\u670d\u52a1\u5668\u8fd4\u56de\u7684\u6570\u636e&nbsp;\n&nbsp;&nbsp;$order_sn&nbsp;=&nbsp;$data['out_trade_no'];&nbsp;\/\/\u8ba2\u5355\u5355\u53f7&nbsp;\n&nbsp;&nbsp;$order_id&nbsp;=&nbsp;$data['attach'];&nbsp;&nbsp;\/\/\u9644\u52a0\u53c2\u6570,\u9009\u62e9\u4f20\u9012\u8ba2\u5355ID&nbsp;\n&nbsp;&nbsp;$openid&nbsp;=&nbsp;$data['openid'];&nbsp;&nbsp;&nbsp;\/\/\u4ed8\u6b3e\u4ebaopenID&nbsp;\n&nbsp;&nbsp;$total_fee&nbsp;=&nbsp;$data['total_fee'];&nbsp;\/\/\u4ed8\u6b3e\u91d1\u989d&nbsp;\n&nbsp;&nbsp;\/\/\u66f4\u65b0\u6570\u636e\u5e93&nbsp;\n&nbsp;&nbsp;$this-&amp;gt;updateDB($order_id,$order_sn,$openid,$total_fee);&nbsp;\n&nbsp;}else{&nbsp;\n&nbsp;&nbsp;$result&nbsp;=&nbsp;false;&nbsp;\n&nbsp;}&nbsp;\n&nbsp;\/\/&nbsp;\u8fd4\u56de\u72b6\u6001\u7ed9\u5fae\u4fe1\u670d\u52a1\u5668&nbsp;\n&nbsp;if&nbsp;($result)&nbsp;{&nbsp;\n&nbsp;&nbsp;$str='&lt;xml&gt;&lt;return_code&gt;&lt;\/return_code&gt;&lt;return_msg&gt;&lt;\/return_msg&gt;&lt;\/xml&gt;';&nbsp;\n&nbsp;}else{&nbsp;\n&nbsp;&nbsp;$str='&lt;xml&gt;&lt;return_code&gt;&lt;\/return_code&gt;&lt;return_msg&gt;&lt;\/return_msg&gt;&lt;\/xml&gt;';&nbsp;\n&nbsp;}&nbsp;\n&nbsp;echo&nbsp;$str;&nbsp;\n&nbsp;return&nbsp;$result;&nbsp;\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4e3a\u4e86\u5b89\u5168\u8d77\u89c1\uff0c\u5bf9\u8fd4\u56de\u8fc7\u6765\u7684\u7b7e\u540d\uff0c\u8981\u91cd\u65b0\u9a8c\u8bc1\uff1a<\/p>\n<pre>\/**&nbsp;\n*&nbsp;\u751f\u6210\u7b7e\u540d&nbsp;\n*&nbsp;@return&nbsp;\u7b7e\u540d\uff0c\u672c\u51fd\u6570\u4e0d\u8986\u76d6sign\u6210\u5458\u53d8\u91cf&nbsp;\n*\/&nbsp;\nprotected&nbsp;function&nbsp;makeSign($data){&nbsp;\n&nbsp;\/\/\u83b7\u53d6\u5fae\u4fe1\u652f\u4ed8\u79d8\u94a5&nbsp;\n&nbsp;require_once&nbsp;APP_ROOT.\"\/Api\/wxpay\/lib\/WxPay.Api.php\";&nbsp;\n&nbsp;$key&nbsp;=&nbsp;WxPayConfig::KEY;&nbsp;\n&nbsp;\/\/&nbsp;\u53bb\u7a7a&nbsp;\n&nbsp;$data=array_filter($data);&nbsp;\n&nbsp;\/\/\u7b7e\u540d\u6b65\u9aa4\u4e00\uff1a\u6309\u5b57\u5178\u5e8f\u6392\u5e8f\u53c2\u6570&nbsp;\n&nbsp;ksort($data);&nbsp;\n&nbsp;$string_a=http_build_query($data);&nbsp;\n&nbsp;$string_a=urldecode($string_a);&nbsp;\n&nbsp;\/\/\u7b7e\u540d\u6b65\u9aa4\u4e8c\uff1a\u5728string\u540e\u52a0\u5165KEY&nbsp;\n&nbsp;\/\/$config=$this-&amp;gt;config;&nbsp;\n&nbsp;$string_sign_temp=$string_a.\"&amp;amp;key=\".$key;&nbsp;\n&nbsp;\/\/\u7b7e\u540d\u6b65\u9aa4\u4e09\uff1aMD5\u52a0\u5bc6&nbsp;\n&nbsp;$sign&nbsp;=&nbsp;md5($string_sign_temp);&nbsp;\n&nbsp;\/\/&nbsp;\u7b7e\u540d\u6b65\u9aa4\u56db\uff1a\u6240\u6709\u5b57\u7b26\u8f6c\u4e3a\u5927\u5199&nbsp;\n&nbsp;$result=strtoupper($sign);&nbsp;\n&nbsp;return&nbsp;$result;&nbsp;\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u81f3\u6b64\uff0cTP\u4e2d\u5fae\u4fe1\u652f\u4ed8\u4e5f\u5c31\u641e\u5b9a\u4e86\u3002\u8fd9\u662f\u96c6\u6210\u4e86\u5b98\u65b9\u7684SDK\u5b9e\u73b0\u7684,\u5982\u679c\u4e0d\u4f7f\u7528SDK,\u53ef\u4ee5\u4f7f\u7528\u66f4\u7b80\u5355\u7684\u65b9\u6cd5,\u89c1:PHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u548c\u9000\u6b3e(\u65e0\u9700\u96c6\u6210\u652f\u4ed8SDK)<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/009\/49ef0a4ace68ab760aefd8cc51e9e8dd-1.jpg\" class=\"aligncenter\" title=\"ThinkPHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u63d2\u56fe1\" alt=\"ThinkPHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u63d2\u56fe1\" \/><\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u672c\u6587\u7684\u5168\u90e8\u5185\u5bb9\uff0c\u5e0c\u671b\u5bf9\u5927\u5bb6\u7684\u5b66\u4e60\u6709\u6240\u5e2e\u52a9\uff0c\u66f4\u591a\u76f8\u5173\u5185\u5bb9\u8bf7\u5173\u6ce8PHP\u4e2d\u6587\u7f51\uff01<\/p>\n<p>\u76f8\u5173\u63a8\u8350\uff1a<\/p>\n<p><\/p>\n<p><\/p>\n<p><span><\/span><\/p>\n<p>\u4ee5\u4e0a\u5c31\u662fThinkPHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\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\u4e86thinkphp\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u6d41\u7a0b\u6559\u7a0b\u8be6\u89e3,\u9700\u8981\u7684\u670b\u53cb\u53ef\u4ee5\u53c2\u8003\u4e0b \u4e4b\u524d\u5199\u8fc7\u4e00\u7bc7\u6587\u7ae0\u8bb2\u4e86PHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u6d41\u7a0b \uff0c\u8be6\u89c1\u6587\u7ae0\uff1aPHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u6d41\u7a0b\u3002 \u5f53\u65f6\u7684\u73af\u5883\u662f\u6ca1\u6709\u4f7f\u7528\u6846\u67b6\u7684\uff0c\u76f4\u63a5\u5728\u4e00\u4e2a\u57df\u540d\u6307\u5411\u7684\u76ee\u5f55\u4e0b\u8fb9\u65b0\u5efa\u76ee\u5f55\u4e4b\u540e\u8bbf\u95ee\u8be5\u76ee\u5f55\u5b9e\u73b0\u7684\uff0c\u4f46\u5e94\u7528\u5230\u6846\u67b6\u4e2d\uff0c\u8fd8\u662f\u6709\u4e00\u4e9b\u95ee\u9898\uff0c\u5728ThinkPHP\u4e2d\uff0c\u7531\u4e8e\u8def\u7531\u89c4\u5219\u4e0e\u652f\u4ed8\u6388\u6743\u76ee\u5f55\u6709\u51fa\u5165\uff0c\u6240\u4ee5\u4f1a\u62a5\u9519\u3002\u672c\u7bc7\u8bb2\u8bb2\u5728TP\u4e2d\u96c6\u6210\u5fae\u4fe1\u652f\u4ed8\u7684\u6d41\u7a0b\u3002 \u9e45\u5382\u51fa\u7684SDK\u548c\u6587\u6863\uff0c\u5c31\u662f\u8ba9\u4f60\u770b\u4e0d\u61c2\uff0c\u4f7f\u52b2\u7ed5\uff0c\u8fd9\u9178\u723d\u7528\u4e86\u5c31\u77e5\u9053\u3002\u6587\u6863\u548cSDK\u4e0d\u662f\u5e94\u8be5\u8d8a\u7b80\u5355\u901a\u4fd7\u6613\u61c2\u8d8a\u597d\u4e48\uff1f\u96be\u9053\u53ea\u6709\u4f7f\u52b2\u91cd\u6784\u624d\u80fd\u663e\u793a\u51fa\u9e45\u5382\u7a0b\u5e8f\u733f\u6280\u672f\u7684\u9ad8\u8d85\u54a9\uff1f\u989d&#8230;\u662f\u4e0d\u662f\u66b4\u9732\u4e86\u6211\u83dc\u9e1f\u7684\u5c5e\u6027&#8230;\u5176\u5b9eSDK\u86ee\u597d\u7528\uff0c\u53ea\u662f\u4e0a\u4e00\u7bc7\u6587\u7ae0\u4e2d\u4e5f\u770b\u5230\u4e86\uff0c\u5728\u652f\u4ed8\u5b8c\u6210\u56de\u8c03\u51fd\u6570\u4e2d\uff0c\u7740\u5b9e\u8ba9\u4eba\u7ed5\u7684\u6655\u5934\u8f6c\u5411\u3002 \u5bf9\u4e8e\u4e0d\u60f3\u88ab\u5b98\u65b9\u7ed5\u7684\uff0c\u60f3\u5728TP\u4e2d\u4f7f\u7528\u5fae\u4fe1\u652f\u4ed8\u7684\u53ef\u4ee5\u770b\u770b\u4e00\u4e2a\u5927\u795e\u81ea\u5df1\u6839\u636e\u5b98\u65b9\u6587\u6863\u91cd\u6784\u7cbe\u7b80\u6253\u9020\u800c\u6210\u7684\u9002\u7528\u4e8eTP\u7684\u652f\u4ed8SDK\uff0c\u6e90\u7801\u6211\u4e0b\u8f7d\u4e0b\u6765\u770b\u8fc7\u4e86\uff0c\u4ee3\u7801\u5199\u7684\u5f88\u4f18\u96c5\u7b80\u4ecb\uff0c\u6d41\u7a0b\u4e5f\u5f88\u7b80\u5355\uff0c\u901a\u4fd7\u6613\u61c2\u3002\u8be6\u89c1\u535a\u6587\uff1ahttp:\/\/baijunyao.com\/article\/78 \u7acb\u5373\u5b66\u4e60\u201c\u201d\uff1b \u6211\u81ea\u5df1\u8fd8\u662f\u76b1\u7740\u7709\u5934\uff0c\u4f7f\u7528\u4e86\u5b98\u65b9\u7684SDK\uff0c\u4e5f\u6210\u529f\u5b9e\u73b0\u4e86\u652f\u4ed8\uff0c\u4e0b\u9762\u8ddf\u5927\u5bb6\u5206\u4eab\u4e00\u4e0b\u6d41\u7a0b\uff1a 1.SDK\u4e0b\u8f7d\u548c\u4fee\u6539 \u8fd9\u4e2a\u5c31\u4e0d\u8fc7\u591a\u8bb2\u4e86\uff0c\u4e0d\u77e5\u9053\u7684\u53ef\u4ee5\u770b\u770b\u6211\u7684\u4e0a\u4e00\u7bc7\u6587\u7ae0\uff1aPHP\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8(jsapi\u652f\u4ed8)\u6d41\u7a0b\uff0c\u91cc\u8fb9\u8be6\u7ec6\u8be6\u8ff0\u4e86\u4e0b\u8f7d\u4e0b\u6765\u7684\u6587\u4ef6\u54ea\u4e9b\u662f\u9700\u8981\u4fee\u6539\u7684\u3002 2.\u516c\u4f17\u53f7\u8bbe\u7f6e A. \u8fd8\u662f\u9700\u8981\u8bbe\u7f6e\u7f51\u9875\u6388\u6743\u57df\u540d\uff0c\u8fd9\u4e2a\u6ca1\u5565\u7279\u6b8a\u7684\uff1b B. \u8fd9\u91cc\u8981\u6ce8\u610f\u4e00\u4e0b\u652f\u4ed8\u6388\u6743\u76ee\u5f55\uff0c\u4f7f\u7528TP\u5f88\u591a\u4eba\u90fd\u4f7f\u7528\u7684\u662f\u91cd\u5199\u6a21\u5f0f\uff08REWRITE\u6a21\u5f0f\uff09\u6216\u8005\u5728\u4f7f\u7528REWRITE\u6a21\u5f0f\u7684\u540c\u65f6\uff0c\u4f7f\u7528\u4f2a\u9759\u6001\u6a21\u5f0f\uff0c\u8fd9\u65f6\u5019\u751f\u6210\u7684\u94fe\u63a5\u4e3a\uff1a&nbsp;http:\/\/serverName\/Home\/Blog\/read\/id\/1 \uff1b \u5982\u679c\u4f7f\u7528\u7684\u662fPATHINFO\u6a21\u5f0f\u7684\u8bdd\uff0c\u751f\u6210\u7684\u94fe\u63a5\u5c31\u662f\uff1ahttp:\/\/serverName\/index.php\/Home\/Blog\/read\/id\/1\uff0c\u6bd4\u5982\u5728Home\u6a21\u5757\u4e0b\u7684Blog\u63a7\u5236\u5668\u4e2d\u7684\u67d0\u4e2a\u65b9\u6cd5\u8fdb\u884c\u652f\u4ed8\uff0c\u6211\u4eec\u652f\u4ed8\u7684\u6388\u6743\u76ee\u5f55\u5e94\u8be5\u662f http:\/\/serverName\/Home\/Blog\/ \u6216\u8005 http:\/\/serverName\/index.php\/Home\/Blog\/\uff0c\u8fd9\u4e2a\u6839\u636e\u81ea\u5df1\u7684TP\u7684\u8bbe\u7f6e\u7684URL\u6a21\u5f0f\u800c\u5b9a\u3002 3.\u652f\u4ed8\u6d41\u7a0b \uff081\uff09\u7edf\u4e00\u4e0b\u5355 \u4e0b\u5355\u7684\u652f\u4ed8\u53c2\u6570\u914d\u7f6e\uff0c\u8fd9\u4e2a\u8ddf\u4e0a\u4e00\u7bc7\u8bb2\u7684\u57fa\u672c\u4e0d\u53d8\uff0c\u91cd\u70b9\u6ce8\u610f\u7684\u662f\u652f\u4ed8\u56de\u8c03\u9a8c\u8bc1\u94fe\u63a5\uff0c\u56e0\u4e3a\u8981\u591a\u6b21\u8c03\u7528\uff0c\u6211\u5c31\u76f4\u63a5\u5728Application\/Common\/Common\/function.php\u4e2d\u5c06\u53c2\u6570\u914d\u7f6e\u5c01\u88c5\u8d77\u6765\u4e86\uff0c\u6211\u7684SDK\u653e\u5728\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u7684Api\u76ee\u5f55\u4e0b\uff0c\u6240\u4ee5\u5f15\u5165SDK\u7684\u65f6\u5019\u4e0d\u662f\u4f7f\u7528Vendor\u51fd\u6570\u3002 \/**&nbsp; &nbsp;*&nbsp;\u5fae\u4fe1\u652f\u4ed8&nbsp; &nbsp;*&nbsp;@param&nbsp;string&nbsp;$openId&nbsp;&nbsp;openid&nbsp; &nbsp;*&nbsp;@param&nbsp;string&nbsp;$goods&nbsp;&nbsp;\u5546\u54c1\u540d\u79f0&nbsp; &nbsp;*&nbsp;@param&nbsp;string&nbsp;$attach&nbsp;&nbsp;\u9644\u52a0\u53c2\u6570,\u6211\u4eec\u53ef\u4ee5\u9009\u62e9\u4f20\u9012\u4e00\u4e2a\u53c2\u6570,\u6bd4\u5982\u8ba2\u5355ID&nbsp; &nbsp;*&nbsp;@param&nbsp;string&nbsp;$order_sn&nbsp;\u8ba2\u5355\u53f7&nbsp; &nbsp;*&nbsp;@param&nbsp;string&nbsp;$total_fee&nbsp;\u91d1\u989d&nbsp; &nbsp;*\/&nbsp; function&nbsp;wxpay($openId,$goods,$order_sn,$total_fee,$attach){&nbsp; &nbsp;require_once&nbsp;APP_ROOT.&#8221;\/Api\/wxpay\/lib\/WxPay.Api.php&#8221;;&nbsp; &nbsp;require_once&nbsp;APP_ROOT.&#8221;\/Api\/wxpay\/payment\/WxPay.JsApiPay.php&#8221;;&nbsp; &nbsp;require_once&nbsp;APP_ROOT.&#8217;\/Api\/wxpay\/payment\/log.php&#8217;;&nbsp; &nbsp;\/\/\u521d\u59cb\u5316\u65e5\u5fd7&nbsp; &nbsp;$logHandler=&nbsp;new&nbsp;CLogFileHandler(APP_ROOT.&#8221;\/Api\/wxpay\/logs\/&#8221;.date(&#8216;Y-m-d&#8217;).&#8217;.log&#8217;);&nbsp; &nbsp;$log&nbsp;=&nbsp;Log::Init($logHandler,&nbsp;15);&nbsp; &nbsp;$tools&nbsp;=&nbsp;new&nbsp;JsApiPay();&nbsp; &nbsp;if(empty($openId))&nbsp;$openId&nbsp;=&nbsp;$tools-&amp;gt;GetOpenid();&nbsp; &nbsp;$input&nbsp;=&nbsp;new&nbsp;WxPayUnifiedOrder();&nbsp; &nbsp;$input-&amp;gt;SetBody($goods);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u5546\u54c1\u540d\u79f0&nbsp; &nbsp;$input-&amp;gt;SetAttach($attach);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u9644\u52a0\u53c2\u6570,\u53ef\u586b\u53ef\u4e0d\u586b,\u586b\u5199\u7684\u8bdd,\u91cc\u8fb9\u5b57\u7b26\u4e32\u4e0d\u80fd\u51fa\u73b0\u7a7a\u683c&nbsp; &nbsp;$input-&amp;gt;SetOut_trade_no($order_sn);&nbsp;&nbsp;&nbsp;\/\/\u8ba2\u5355\u53f7&nbsp; &nbsp;$input-&amp;gt;SetTotal_fee($total_fee);&nbsp;&nbsp;&nbsp;\/\/\u652f\u4ed8\u91d1\u989d,\u5355\u4f4d:\u5206&nbsp; &nbsp;$input-&amp;gt;SetTime_start(date(&#8220;YmdHis&#8221;));&nbsp;&nbsp;\/\/\u652f\u4ed8\u53d1\u8d77\u65f6\u95f4&nbsp; &nbsp;$input-&amp;gt;SetTime_expire(date(&#8220;YmdHis&#8221;,&nbsp;time()&nbsp;+&nbsp;600));\/\/\u652f\u4ed8\u8d85\u65f6&nbsp; &nbsp;$input-&amp;gt;SetGoods_tag(&#8220;test3&#8221;);&nbsp; &nbsp;\/\/$input-&amp;gt;SetNotify_url(&#8220;http:\/\/&#8221;.$_SERVER[&#8216;HTTP_HOST&#8217;].&#8221;\/payment.php&#8221;);&nbsp;\/\/\u652f\u4ed8\u56de\u8c03\u9a8c\u8bc1\u5730\u5740&nbsp; &nbsp;$input-&amp;gt;SetNotify_url(&#8220;http:\/\/&#8221;.$_SERVER[&#8216;HTTP_HOST&#8217;].&#8221;\/payment.php\/WexinApi\/WeixinPay\/notify&#8221;);&nbsp; &nbsp;$input-&amp;gt;SetTrade_type(&#8220;JSAPI&#8221;);&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u652f\u4ed8\u7c7b\u578b&nbsp; &nbsp;$input-&amp;gt;SetOpenid($openId);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u7528\u6237openID&nbsp; &nbsp;$order&nbsp;=&nbsp;WxPayApi::unifiedOrder($input);&nbsp;\/\/\u7edf\u4e00\u4e0b\u5355&nbsp; &nbsp;$jsApiParameters&nbsp;=&nbsp;$tools-&amp;gt;GetJsApiParameters($order);&nbsp; &nbsp;return&nbsp;$jsApiParameters;&nbsp; [&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-31602","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/31602","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=31602"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/31602\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=31602"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=31602"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=31602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}