{"id":28550,"date":"2024-11-25T13:23:54","date_gmt":"2024-11-25T05:23:54","guid":{"rendered":"https:\/\/fwq.ai\/blog\/28550\/"},"modified":"2024-11-25T13:23:54","modified_gmt":"2024-11-25T05:23:54","slug":"%e5%be%ae%e4%bf%a1%e6%94%af%e4%bb%98%e7%bb%9f%e4%b8%80%e4%b8%8b%e5%8d%95%ef%bc%8c%e7%94%a8php%e6%80%8e%e4%b9%88%e5%ae%9e%e7%8e%b0%ef%bc%9f%ef%bc%88%e4%bb%a3%e7%a0%81%e5%85%a8%ef%bc%89","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/28550\/","title":{"rendered":"\u5fae\u4fe1\u652f\u4ed8\u7edf\u4e00\u4e0b\u5355\uff0c\u7528PHP\u600e\u4e48\u5b9e\u73b0\uff1f\uff08\u4ee3\u7801\u5168\uff09"},"content":{"rendered":"<p>h5\u652f\u4ed8\u65f6\u51fa\u73b0\u201c\u7b7e\u540d\u9519\u8bef\u201d\u600e\u4e48\u529e\uff1f\u6ce8\u610f\u8c03\u7528\u201c\u7edf\u4e00\u4e0b\u5355\u201d\u63a5\u53e3\u540e\u8fd4\u56depre_pay_id\u540e\uff0c\u9700\u8981\u7528\u6237\u518d\u6b21\u8fdb\u884c\u7b7e\u540d\u8fd4\u56de\u7ed9html\uff1b \u201c\u652f\u4ed8\u76ee\u5f55\u6ca1\u6709\u6388\u6743\u201d\uff0c\u8fdb\u5165\u5fae\u4fe1\u5546\u5bb6\u7ba1\u7406\u540e\u53f0\u8bbe\u7f6e\u5373\u53ef\u3002<\/p>\n<p>\u4e00\u3001Model\u5c42\uff0cWxpay.php<\/p>\n<pre>&lt;?php namespace appcommonmodel;\nclass Wxpay\n{\n    private $appid = &#039;wxe8*****d4&#039;;                            \/\/\u5fae\u4fe1\u516c\u4f17\u53f7appid\n    private $secret = &#039;37c4*******5f0&#039;;                        \/\/\u5fae\u4fe1\u516c\u4f17\u53f7appsecret               \n    private $mchid = &#039;13******02&#039;;                             \/\/\u5546\u5bb6\u53f7\n    private $key = &#039;5363e******49e8&#039;;                          \/\/\u652f\u4ed8\u5bc6\u94a5\n    private $sslcert_path = &#039;apiclient_cert.pem&#039;;              \/\/\u8bc1\u4e66\u6240\u5728\u7edd\u5bf9\u8def\u5f84\n    private $sslkey_path = &#039;apiclient_key.pem&#039;;                \/\/\u8bc1\u4e66\u6240\u5728\u7edd\u5bf9\u8def\u5f84\n    \n    public function __construct($appid = &#039;&#039;, $secret = &#039;&#039;, $mchid = &#039;&#039;, $key = &#039;&#039;)\n    {\n        if(!empty($appid))     $this-&gt;appid&nbsp;=&nbsp;$appid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!empty($secret))&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;secret&nbsp;=&nbsp;$secret;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!empty($mchid))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;mchid&nbsp;&nbsp;=&nbsp;$mchid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!empty($key))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;key=&nbsp;$key;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u5fae\u4fe1\u5185H5\u8c03\u8d77\u652f\u4ed8\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$openid&nbsp;:&nbsp;\u5fae\u4fe1\u7528\u6237openid\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$out_trade_no&nbsp;:&nbsp;\u5546\u5bb6\u751f\u6210\u7684\u8ba2\u5355\u53f7\uff08\u552f\u4e00\u6027\uff09\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;int&nbsp;$total_fee&nbsp;:&nbsp;\u652f\u4ed8\u91d1\u989d\uff0c\u5355\u4f4d\u5206\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;return&nbsp;array&nbsp;$ret&nbsp;:&nbsp;\u8fd4\u56de\u652f\u4ed8\u65f6\u6240\u9700\u8981\u7684\u6570\u636e\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;payForWeixin($openid,$out_trade_no,$total_fee,$attach='\u5fae\u4fe1\u652f\u4ed8',$body='\u5fae\u4fe1\u652f\u4ed8')\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u652f\u4ed8\u6570\u636e\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['openid']&nbsp;=&nbsp;$openid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['out_trade_no']&nbsp;=&nbsp;$out_trade_no;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['total_fee']&nbsp;=&nbsp;$total_fee*100;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['spbill_create_ip']&nbsp;=&nbsp;$_SERVER[\"REMOTE_ADDR\"];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['attach']&nbsp;=&nbsp;$attach;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['body']&nbsp;=&nbsp;$body;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['appid']&nbsp;=&nbsp;$this-&amp;gt;appid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mch_id']&nbsp;=&nbsp;$this-&amp;gt;mchid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['nonce_str']&nbsp;=&nbsp;random(12);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['trade_type']&nbsp;=&nbsp;\"JSAPI\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['notify_url']&nbsp;=&nbsp;\"http:\/\/****.com\/home\/wxpaynofiy\/notify.html\";\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sign&nbsp;=&nbsp;$this-&amp;gt;getParam($data);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dataXML&nbsp;=&nbsp;\"&lt;xml&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;appid&gt;\".$data['appid'].\"&lt;\/appid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;attach&gt;\".$data['attach'].\"&lt;\/attach&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\".$data['body'].\"\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mch_id&gt;\".$data['mch_id'].\"&lt;\/mch_id&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;nonce_str&gt;\".$data['nonce_str'].\"&lt;\/nonce_str&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;notify_url&gt;\".$data['notify_url'].\"&lt;\/notify_url&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;openid&gt;\".$data['openid'].\"&lt;\/openid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;out_trade_no&gt;\".$data['out_trade_no'].\"&lt;\/out_trade_no&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;spbill_create_ip&gt;\".$data['spbill_create_ip'].\"&lt;\/spbill_create_ip&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;total_fee&gt;\".$data['total_fee'].\"&lt;\/total_fee&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;trade_type&gt;\".$data['trade_type'].\"&lt;\/trade_type&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;sign&gt;\".$sign.\"&lt;\/sign&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/xml&gt;\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url&nbsp;=&nbsp;'https:\/\/api.mch.weixin.qq.com\/pay\/unifiedorder';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;&nbsp;$this-&amp;gt;https_post($url,$dataXML);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;=&nbsp;$this-&amp;gt;xmlToArray($result);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ret['return_code']&nbsp;==&nbsp;'SUCCESS'&nbsp;&amp;amp;&amp;amp;&nbsp;$ret['return_msg']&nbsp;==&nbsp;'OK')&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;array(\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'appId'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&amp;gt;&nbsp;$this-&amp;gt;appid,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'timeStamp'&nbsp;=&amp;gt;&nbsp;time(),\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'nonceStr'&nbsp;&nbsp;=&amp;gt;&nbsp;$data['nonce_str'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'package'&nbsp;&nbsp;&nbsp;=&amp;gt;&nbsp;'prepay_id='.$ret['prepay_id'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'signType'&nbsp;&nbsp;=&amp;gt;&nbsp;'MD5',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'paySign'&nbsp;&nbsp;&nbsp;=&amp;gt;&nbsp;$sign\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;errorLog(\"\u5fae\u4fe1\u652f\u4ed8\u5931\u8d25\uff0c\",$ret);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;\u5fae\u4fe1\u4e8c\u7ef4\u7801\u652f\u4ed8\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;@params&nbsp;string&nbsp;$openid&nbsp;:&nbsp;\u7528\u6237\u7684openid\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;@params&nbsp;string&nbsp;$out_trade_no&nbsp;:&nbsp;\u5546\u6237\u8ba2\u5355\u53f7\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;@params&nbsp;number&nbsp;$total_fee&nbsp;:&nbsp;\u8ba2\u5355\u91d1\u989d\uff0c\u5355\u4f4d\u5206\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;return&nbsp;string&nbsp;$code_url&nbsp;:&nbsp;\u4e8c\u7ef4\u7801URL\u94fe\u63a5\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;payForQrcode($out_trade_no,$total_fee,$body=\"\u9b54\u76d2CMS\",$attach=\"\u5fae\u4fe1\u652f\u4ed8\")\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u652f\u4ed8\u6570\u636e\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['out_trade_no']&nbsp;=&nbsp;$out_trade_no;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['total_fee']&nbsp;=&nbsp;$total_fee*100;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['spbill_create_ip']&nbsp;=&nbsp;$_SERVER[\"REMOTE_ADDR\"];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['attach']&nbsp;=&nbsp;$attach;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['body']&nbsp;=&nbsp;$body;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['appid']&nbsp;=&nbsp;$this-&amp;gt;appid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mch_id']&nbsp;=&nbsp;$this-&amp;gt;mchid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['nonce_str']&nbsp;=&nbsp;random(12);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['trade_type']&nbsp;=&nbsp;\"NATIVE\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['notify_url']&nbsp;=&nbsp;\"http:\/\/****.com\/home\/wxpaynofiy\/notify.html\";\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sign&nbsp;=&nbsp;$this-&amp;gt;getParam($data);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dataXML&nbsp;=&nbsp;\"&lt;xml&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;appid&gt;\".$data['appid'].\"&lt;\/appid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;attach&gt;\".$data['attach'].\"&lt;\/attach&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\".$data['body'].\"\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mch_id&gt;\".$data['mch_id'].\"&lt;\/mch_id&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;nonce_str&gt;\".$data['nonce_str'].\"&lt;\/nonce_str&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;notify_url&gt;\".$data['notify_url'].\"&lt;\/notify_url&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;out_trade_no&gt;\".$data['out_trade_no'].\"&lt;\/out_trade_no&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;spbill_create_ip&gt;\".$data['spbill_create_ip'].\"&lt;\/spbill_create_ip&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;total_fee&gt;\".$data['total_fee'].\"&lt;\/total_fee&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;trade_type&gt;\".$data['trade_type'].\"&lt;\/trade_type&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;sign&gt;\".$sign.\"&lt;\/sign&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/xml&gt;\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url&nbsp;=&nbsp;'https:\/\/api.mch.weixin.qq.com\/pay\/unifiedorder';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;&nbsp;$this-&amp;gt;https_post($url,$dataXML);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;=&nbsp;$this-&amp;gt;xmlToArray($result);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ret['return_code']&nbsp;==&nbsp;'SUCCESS'&nbsp;&amp;amp;&amp;amp;&nbsp;$ret['return_msg']&nbsp;==&nbsp;'OK')&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret['code_url'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;errorLog(\"\u83b7\u53d6\u5fae\u4fe1\u652f\u4ed8\u4e8c\u7ef4\u7801\u5931\u8d25\uff0c\",$ret);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u8ba2\u5355\u67e5\u8be2\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$transaction_id&nbsp;:&nbsp;\u5fae\u4fe1\u8ba2\u5355\u53f7\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$out_trade_no&nbsp;:&nbsp;\u5546\u5bb6\u8ba2\u5355\u53f7\uff08\u4e0e\u5fae\u4fe1\u8ba2\u5355\u53f7\u4e8c\u9009\u4e00\uff09\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;findOrder($out_trade_no)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['appid']&nbsp;=&nbsp;$this-&amp;gt;appid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mch_id']&nbsp;=&nbsp;$this-&amp;gt;mchid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['nonce_str']&nbsp;=&nbsp;random(12);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['out_trade_no']&nbsp;=&nbsp;$out_trade_no;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sign&nbsp;=&nbsp;$this-&amp;gt;getParam($data);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dataXML&nbsp;=&nbsp;\"&lt;xml&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;appid&gt;\".$data['appid'].\"&lt;\/appid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mch_id&gt;\".$data['mch_id'].\"&lt;\/mch_id&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;nonce_str&gt;\".$data['nonce_str'].\"&lt;\/nonce_str&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;out_trade_no&gt;\".$data['out_trade_no'].\"&lt;\/out_trade_no&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;sign&gt;\".$sign.\"&lt;\/sign&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/xml&gt;\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url&nbsp;=&nbsp;'https:\/\/api.mch.weixin.qq.com\/pay\/orderquery';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;&nbsp;$this-&amp;gt;https_post($url,$dataXML);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;=&nbsp;$this-&amp;gt;xmlToArray($result);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ret['return_code']&nbsp;==&nbsp;'SUCCESS'&nbsp;&amp;amp;&amp;amp;&nbsp;$ret['return_msg']&nbsp;==&nbsp;'OK')&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;errorLog(\"\u67e5\u8be2\u5fae\u4fe1\u652f\u4ed8\u8ba2\u5355\u5931\u8d25\uff0c\",$ret);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u9000\u6b3e\u8ba2\u5355\u67e5\u8be2\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$transaction_id&nbsp;:&nbsp;\u5fae\u4fe1\u8ba2\u5355\u53f7\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$out_trade_no&nbsp;:&nbsp;\u5546\u5bb6\u8ba2\u5355\u53f7\uff08\u4e0e\u5fae\u4fe1\u8ba2\u5355\u53f7\u4e8c\u9009\u4e00\uff09\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;findRefundOrder($out_trade_no)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['appid']&nbsp;=&nbsp;$this-&amp;gt;appid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mch_id']&nbsp;=&nbsp;$this-&amp;gt;mchid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['nonce_str']&nbsp;=&nbsp;random(12);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['out_trade_no']&nbsp;=&nbsp;$out_trade_no;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sign&nbsp;=&nbsp;$this-&amp;gt;getParam($data);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dataXML&nbsp;=&nbsp;\"&lt;xml&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;appid&gt;\".$data['appid'].\"&lt;\/appid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mch_id&gt;\".$data['mch_id'].\"&lt;\/mch_id&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;nonce_str&gt;\".$data['nonce_str'].\"&lt;\/nonce_str&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;out_trade_no&gt;\".$data['out_trade_no'].\"&lt;\/out_trade_no&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;sign&gt;\".$sign.\"&lt;\/sign&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/xml&gt;\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url&nbsp;=&nbsp;'https:\/\/api.mch.weixin.qq.com\/pay\/refundquery';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;&nbsp;$this-&amp;gt;https_post($url,$dataXML);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;=&nbsp;$this-&amp;gt;xmlToArray($result);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ret['return_code']&nbsp;==&nbsp;'SUCCESS'&nbsp;&amp;amp;&amp;amp;&nbsp;$ret['return_msg']&nbsp;==&nbsp;'OK')&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;errorLog(\"\u67e5\u8be2\u5fae\u4fe1\u652f\u4ed8\u9000\u6b3e\u8ba2\u5355\u5931\u8d25\uff0c\",$ret);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret['err_code_des'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u7533\u8bf7\u9000\u6b3e\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$out_trade_no&nbsp;:&nbsp;\u5546\u6237\u8ba2\u5355\u53f7\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$out_refund_no&nbsp;:&nbsp;\u5546\u6237\u9000\u6b3e\u5355\u53f7\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;int&nbsp;$total_fee&nbsp;:&nbsp;\u8ba2\u5355\u91d1\u989d\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;int&nbsp;$refund_fee&nbsp;:&nbsp;\u9000\u6b3e\u91d1\u989d\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$refund_desc&nbsp;:&nbsp;\u9000\u6b3e\u539f\u56e0\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;refund($out_trade_no,$out_refund_no,$total_fee,$refund_fee,$refund_desc='\u9000\u6b3e')\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['appid']&nbsp;&nbsp;=&nbsp;$this-&amp;gt;appid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mch_id']&nbsp;=&nbsp;$this-&amp;gt;mchid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['nonce_str']&nbsp;=&nbsp;random(12);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['out_trade_no']&nbsp;=&nbsp;$out_trade_no;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['out_refund_no']&nbsp;=&nbsp;$out_refund_no;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['total_fee']&nbsp;=&nbsp;$total_fee*100;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['refund_fee']&nbsp;=&nbsp;$refund_fee*100;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['refund_desc']&nbsp;=&nbsp;$refund_desc;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['notify_url']&nbsp;=&nbsp;\"http:\/\/*****.com\/home\/wxpaynofiy\/refund.html\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sign&nbsp;=&nbsp;$this-&amp;gt;getParam($data);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dataXML&nbsp;=&nbsp;\"&lt;xml&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;appid&gt;\".$data['appid'].\"&lt;\/appid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mch_id&gt;\".$data['mch_id'].\"&lt;\/mch_id&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;nonce_str&gt;\".$data['nonce_str'].\"&lt;\/nonce_str&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;out_trade_no&gt;\".$data['out_trade_no'].\"&lt;\/out_trade_no&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;out_refund_no&gt;\".$data['out_refund_no'].\"&lt;\/out_refund_no&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;total_fee&gt;\".$data['total_fee'].\"&lt;\/total_fee&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;refund_fee&gt;\".$data['refund_fee'].\"&lt;\/refund_fee&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;refund_desc&gt;\".$data['refund_desc'].\"&lt;\/refund_desc&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;notify_url&gt;\".$data['notify_url'].\"&lt;\/notify_url&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;sign&gt;\".$sign.\"&lt;\/sign&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/xml&gt;\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url&nbsp;=&nbsp;'https:\/\/api.mch.weixin.qq.com\/secapi\/pay\/refund';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;&nbsp;$this-&amp;gt;https_post($url,$dataXML,true);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;=&nbsp;$this-&amp;gt;xmlToArray($result);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ret['return_code']&nbsp;==&nbsp;'SUCCESS'&nbsp;&amp;amp;&amp;amp;&nbsp;$ret['return_msg']&nbsp;==&nbsp;'OK')&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;errorLog(\"\u5fae\u4fe1\u9000\u6b3e\u5931\u8d25\uff0c\",$ret);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u4f01\u4e1a\u4ed8\u6b3e\u81f3\u7528\u6237\u96f6\u94b1\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$openid&nbsp;:&nbsp;\u7528\u6237openid\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;int&nbsp;$total_fee&nbsp;:&nbsp;\u4ed8\u6b3e\u91d1\u989d\uff0c\u5355\u4f4d\u5206\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$out_trade_no&nbsp;:&nbsp;\u5546\u5bb6\u8ba2\u5355\u53f7\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$username&nbsp;:&nbsp;\u5fae\u4fe1\u7528\u6237\u540d\u79f0\uff08\u6ce8\u610f\u5fae\u4fe1\u6635\u79f0\u82e5\u4e3a\u7a7a\u65f6\u652f\u4ed8\u4f1a\u51fa\u9519\uff09\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$desc&nbsp;:&nbsp;\u4ed8\u6b3e\u63cf\u8ff0\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$check_name&nbsp;:&nbsp;\u662f\u5426\u68c0\u6d4b\u7528\u6237\u540d\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;payForUser($openid,$total_fee,$out_trade_no,$username='\u9b54\u76d2CMS',$desc='\u9b54\u76d2CMS\u4ed8\u6b3e\u7ed9\u7528\u6237',$check_name='NO_CHECK')\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['amount']&nbsp;=&nbsp;$total_fee*100;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['check_name']&nbsp;=&nbsp;$check_name;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['desc']&nbsp;=&nbsp;$desc;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mch_appid']&nbsp;=&nbsp;$this-&amp;gt;appid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mchid']&nbsp;=&nbsp;$this-&amp;gt;mchid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['nonce_str']&nbsp;=&nbsp;random(12);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['openid']&nbsp;=&nbsp;$openid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['partner_trade_no']&nbsp;=&nbsp;$out_trade_no;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['re_user_name']&nbsp;=&nbsp;$username;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['spbill_create_ip']&nbsp;=&nbsp;$_SERVER[\"REMOTE_ADDR\"];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sign&nbsp;=&nbsp;$this-&amp;gt;getParam($data);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dataXML=\"&lt;xml&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mch_appid&gt;\".$data['mch_appid'].\"&lt;\/mch_appid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mchid&gt;\".$data['mchid'].\"&lt;\/mchid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;nonce_str&gt;\".$data['nonce_str'].\"&lt;\/nonce_str&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;partner_trade_no&gt;\".$data['partner_trade_no'].\"&lt;\/partner_trade_no&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;openid&gt;\".$data['openid'].\"&lt;\/openid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;check_name&gt;\".$data['check_name'].\"&lt;\/check_name&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;re_user_name&gt;\".$data['re_user_name'].\"&lt;\/re_user_name&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;amount&gt;\".$data['amount'].\"&lt;\/amount&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;desc&gt;\".$data['desc'].\"&lt;\/desc&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;spbill_create_ip&gt;\".$data['spbill_create_ip'].\"&lt;\/spbill_create_ip&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;sign&gt;\".$sign.\"&lt;\/sign&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/xml&gt;\";\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url&nbsp;=&nbsp;'https:\/\/api.mch.weixin.qq.com\/mmpaymkttransfers\/promotion\/transfers';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;&nbsp;$this-&amp;gt;https_post($url,$dataXML,true);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;=&nbsp;$this-&amp;gt;xmlToArray($result);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ret['return_code']=='SUCCESS'&nbsp;&amp;amp;&amp;amp;&nbsp;$ret['result_code']&nbsp;==&nbsp;'SUCCESS')\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u652f\u4ed8\u6210\u529f\u8fd4\u56de\u5546\u6237\u8ba2\u5355\u53f7\u3001\u5fae\u4fe1\u8ba2\u5355\u53f7\u3001\u5fae\u4fe1\u652f\u4ed8\u6210\u529f\u65f6\u95f4\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result['partner_trade_no']&nbsp;=&nbsp;$ret['partner_trade_no'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result['payment_no']&nbsp;=&nbsp;$ret['payment_no'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result['payment_time']&nbsp;=&nbsp;$ret['payment_time'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;errorLog('\u4ed8\u6b3e\u7ed9\u7528\u6237\u5931\u8d25',$ret);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u666e\u901a\u7ea2\u5305\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$out_trade_no&nbsp;:&nbsp;\u5546\u5bb6\u8ba2\u5355\u53f7\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$openid&nbsp;:&nbsp;\u63a5\u6536\u7ea2\u5305\u7528\u6237\u7684openid\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;int&nbsp;$total_fee&nbsp;:&nbsp;\u7ea2\u5305\u91d1\u989d\uff0c\u5355\u4f4d\u5206\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;int&nbsp;$total_num&nbsp;:&nbsp;\u7ea2\u5305\u53d1\u653e\u603b\u4eba\u6570\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$wishing&nbsp;:&nbsp;\u7ea2\u5305\u795d\u798f\u8bed\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$act_name&nbsp;:&nbsp;\u6d3b\u52a8\u540d\u79f0\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$remark&nbsp;:&nbsp;\u5907\u6ce8\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$scene_id&nbsp;\uff1a\u573a\u666f\u503cID\u3002\u53d1\u653e\u7ea2\u5305\u4f7f\u7528\u573a\u666f\uff0c\u7ea2\u5305\u91d1\u989d\u5927\u4e8e200\u6216\u8005\u5c0f\u4e8e1\u5143\u65f6\u5fc5\u4f20\u3002PRODUCT_1:\u5546\u54c1\u4fc3\u9500\u3001PRODUCT_2:\u62bd\u5956\u3001PRODUCT_3:\u865a\u62df\u7269\u54c1\u5151\u5956&nbsp;\u3001PRODUCT_4:\u4f01\u4e1a\u5185\u90e8\u798f\u5229\u3001PRODUCT_5:\u6e20\u9053\u5206\u6da6\u3001PRODUCT_6:\u4fdd\u9669\u56de\u9988\u3001PRODUCT_7:\u5f69\u7968\u6d3e\u5956\u3001PRODUCT_8:\u7a0e\u52a1\u522e\u5956\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;redPack($openid,$total_fee,$out_trade_no,$total_num&nbsp;=&nbsp;1,$wishing&nbsp;=&nbsp;'\u611f\u8c22\u60a8\u5149\u4e34***\u5e73\u53f0\u8fdb\u884c\u8d2d\u7269',$act_name='***\u8d2d\u7269\u53d1\u7ea2\u5305',$remark&nbsp;=&nbsp;'\u8d2d\u7269\u9886\u7ea2\u5305')\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mch_billno']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$out_trade_no;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mch_id']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$this-&amp;gt;mchid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['wxappid']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$this-&amp;gt;appid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['send_name']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'\u53d1\u9001\u7ea2\u5305\u8005\u7684\u540d\u79f0';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['re_openid']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$openid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['total_amount']&nbsp;&nbsp;&nbsp;=&nbsp;$total_fee;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['total_num']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$total_num;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['wishing']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$wishing;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['client_ip']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$_SERVER[\"REMOTE_ADDR\"];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['act_name']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$act_name;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['remark']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$remark;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['nonce_str']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;random(12);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sign&nbsp;=&nbsp;$this-&amp;gt;getParam($data);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dataXML=\"&lt;xml&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;sign&gt;\".$sign.\"&lt;\/sign&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mch_billno&gt;\".$data['mch_billno'].\"&lt;\/mch_billno&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mch_id&gt;\".$data['mch_id'].\"&lt;\/mch_id&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;wxappid&gt;\".$data['wxappid'].\"&lt;\/wxappid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;send_name&gt;\".$data['send_name'].\"&lt;\/send_name&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;re_openid&gt;\".$data['re_openid'].\"&lt;\/re_openid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;total_amount&gt;\".$data['total_amount'].\"&lt;\/total_amount&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;total_num&gt;\".$data['total_num'].\"&lt;\/total_num&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;wishing&gt;\".$data['wishing'].\"&lt;\/wishing&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;client_ip&gt;\".$data['client_ip'].\"&lt;\/client_ip&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;act_name&gt;\".$data['act_name'].\"&lt;\/act_name&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;remark&gt;\".$data['remark'].\"&lt;\/remark&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;nonce_str&gt;\".$data['nonce_str'].\"&lt;\/nonce_str&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/xml&gt;\";\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url&nbsp;=&nbsp;'https:\/\/api.mch.weixin.qq.com\/mmpaymkttransfers\/sendredpack';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;&nbsp;$this-&amp;gt;https_post($url,$dataXML,true);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;=&nbsp;$this-&amp;gt;xmlToArray($result);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ret['return_code']=='SUCCESS'&nbsp;&amp;amp;&amp;amp;&nbsp;$ret['result_code']&nbsp;==&nbsp;'SUCCESS')\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;errorLog('\u53d1\u653e\u666e\u901a\u7ea2\u5305\u5931\u8d25',$ret);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret['err_code_des'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u88c2\u53d8\u7ea2\u5305\uff1a\u4e00\u6b21\u53ef\u4ee5\u53d1\u653e\u4e00\u7ec4\u7ea2\u5305\u3002\u9996\u5148\u9886\u53d6\u7684\u7528\u6237\u4e3a\u79cd\u5b50\u7528\u6237\uff0c\u79cd\u5b50\u7528\u6237\u9886\u53d6\u4e00\u7ec4\u7ea2\u5305\u5f53\u4e2d\u7684\u4e00\u4e2a\uff0c\u5e76\u53ef\u4ee5\u901a\u8fc7\u793e\u4ea4\u5206\u4eab\u5c06\u5269\u4e0b\u7684\u7ea2\u5305\u7ed9\u5176\u4ed6\u7528\u6237\u3002\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u88c2\u53d8\u7ea2\u5305\u5145\u5206\u5229\u7528\u4e86\u4eba\u9645\u4f20\u64ad\u7684\u4f18\u52bf\u3002\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$out_trade_no&nbsp;:&nbsp;\u5546\u5bb6\u8ba2\u5355\u53f7\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$openid&nbsp;:&nbsp;\u63a5\u6536\u7ea2\u5305\u7528\u6237\u7684openid\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;int&nbsp;$total_fee&nbsp;:&nbsp;\u7ea2\u5305\u91d1\u989d\uff0c\u5355\u4f4d\u5206\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;int&nbsp;$total_num&nbsp;:&nbsp;\u7ea2\u5305\u53d1\u653e\u603b\u4eba\u6570\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$wishing&nbsp;:&nbsp;\u7ea2\u5305\u795d\u798f\u8bed\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$act_name&nbsp;:&nbsp;\u6d3b\u52a8\u540d\u79f0\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$remark&nbsp;:&nbsp;\u5907\u6ce8\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$scene_id&nbsp;\uff1a\u573a\u666f\u503cID\u3002\u53d1\u653e\u7ea2\u5305\u4f7f\u7528\u573a\u666f\uff0c\u7ea2\u5305\u91d1\u989d\u5927\u4e8e200\u6216\u8005\u5c0f\u4e8e1\u5143\u65f6\u5fc5\u4f20\u3002PRODUCT_1:\u5546\u54c1\u4fc3\u9500\u3001PRODUCT_2:\u62bd\u5956\u3001PRODUCT_3:\u865a\u62df\u7269\u54c1\u5151\u5956&nbsp;\u3001PRODUCT_4:\u4f01\u4e1a\u5185\u90e8\u798f\u5229\u3001PRODUCT_5:\u6e20\u9053\u5206\u6da6\u3001PRODUCT_6:\u4fdd\u9669\u56de\u9988\u3001PRODUCT_7:\u5f69\u7968\u6d3e\u5956\u3001PRODUCT_8:\u7a0e\u52a1\u522e\u5956\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;redPackGroup($openid,$total_fee,$out_trade_no,$total_num,$wishing&nbsp;=&nbsp;'\u611f\u8c22\u60a8\u5149\u4e34***\u8fdb\u884c\u8d2d\u7269',$act_name='**\u8d2d\u7269\u53d1\u7ea2\u5305',$remark&nbsp;=&nbsp;'\u8d2d\u7269\u9886\u7ea2\u5305')\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mch_billno']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$out_trade_no;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mch_id']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$this-&amp;gt;mchid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['wxappid']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$this-&amp;gt;appid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['send_name']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'\u53d1\u9001\u7ea2\u5305\u8005\u7684\u540d\u79f0';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['re_openid']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$openid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['total_amount']&nbsp;&nbsp;&nbsp;=&nbsp;$total_fee;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['amt_type']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'ALL_RAND';&nbsp;&nbsp;&nbsp;\/\/ALL_RAND\u2014\u5168\u90e8\u968f\u673a,\u5546\u6237\u6307\u5b9a\u603b\u91d1\u989d\u548c\u7ea2\u5305\u53d1\u653e\u603b\u4eba\u6570\uff0c\u7531\u5fae\u4fe1\u652f\u4ed8\u968f\u673a\u8ba1\u7b97\u51fa\u5404\u7ea2\u5305\u91d1\u989d\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['total_num']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$total_num;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['wishing']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$wishing;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['client_ip']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$_SERVER[\"REMOTE_ADDR\"];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['act_name']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$act_name;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['remark']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$remark;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['nonce_str']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;random(12);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sign&nbsp;=&nbsp;$this-&amp;gt;getParam($data);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dataXML=\"&lt;xml&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;sign&gt;\".$sign.\"&lt;\/sign&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mch_billno&gt;\".$data['mch_billno'].\"&lt;\/mch_billno&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mch_id&gt;\".$data['mch_id'].\"&lt;\/mch_id&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;wxappid&gt;\".$data['wxappid'].\"&lt;\/wxappid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;send_name&gt;\".$data['send_name'].\"&lt;\/send_name&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;re_openid&gt;\".$data['re_openid'].\"&lt;\/re_openid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;total_amount&gt;\".$data['total_amount'].\"&lt;\/total_amount&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;amt_type&gt;\".$data['amt_type'].\"&lt;\/amt_type&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;total_num&gt;\".$data['total_num'].\"&lt;\/total_num&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;wishing&gt;\".$data['wishing'].\"&lt;\/wishing&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;client_ip&gt;\".$data['client_ip'].\"&lt;\/client_ip&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;act_name&gt;\".$data['act_name'].\"&lt;\/act_name&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;remark&gt;\".$data['remark'].\"&lt;\/remark&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;nonce_str&gt;\".$data['nonce_str'].\"&lt;\/nonce_str&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/xml&gt;\";\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url&nbsp;=&nbsp;'https:\/\/api.mch.weixin.qq.com\/mmpaymkttransfers\/sendgroupredpack';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;&nbsp;$this-&amp;gt;https_post($url,$dataXML,true);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;=&nbsp;$this-&amp;gt;xmlToArray($result);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ret['return_code']=='SUCCESS'&nbsp;&amp;amp;&amp;amp;&nbsp;$ret['result_code']&nbsp;==&nbsp;'SUCCESS')\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;errorLog('\u53d1\u653e\u88c2\u53d8\u7ea2\u5305\u5931\u8d25',$ret);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret['err_code_des'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u67e5\u8be2\u7ea2\u5305\u8bb0\u5f55\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$out_trade_no&nbsp;:&nbsp;\u5546\u5bb6\u8ba2\u5355\u53f7\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;findRedPack($out_trade_no)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mch_billno']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$out_trade_no;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['mch_id']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$this-&amp;gt;mchid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['appid']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$this-&amp;gt;appid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['bill_type']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'MCHT';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/MCHT:\u901a\u8fc7\u5546\u6237\u8ba2\u5355\u53f7\u83b7\u53d6\u7ea2\u5305\u4fe1\u606f\u3002\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['nonce_str']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;random(12);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sign&nbsp;=&nbsp;$this-&amp;gt;getParam($data);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dataXML=\"&lt;xml&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;sign&gt;\".$sign.\"&lt;\/sign&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mch_billno&gt;\".$data['mch_billno'].\"&lt;\/mch_billno&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mch_id&gt;\".$data['mch_id'].\"&lt;\/mch_id&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;appid&gt;\".$data['appid'].\"&lt;\/appid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bill_type&gt;\".$data['bill_type'].\"&lt;\/bill_type&gt;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;nonce_str&gt;\".$data['nonce_str'].\"&lt;\/nonce_str&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/xml&gt;\";\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url&nbsp;=&nbsp;'https:\/\/api.mch.weixin.qq.com\/mmpaymkttransfers\/gethbinfo';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;&nbsp;$this-&amp;gt;https_post($url,$dataXML,true);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ret&nbsp;=&nbsp;$this-&amp;gt;xmlToArray($result);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ret['return_code']=='SUCCESS'&nbsp;&amp;amp;&amp;amp;&nbsp;$ret['result_code']&nbsp;==&nbsp;'SUCCESS')\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;errorLog('\u67e5\u8be2\u7ea2\u5305\u8bb0\u5f55\u5931\u8d25',$ret);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$ret['err_code_des'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u83b7\u53d6\u7528\u6237\u5fae\u4fe1\u7684OPENID\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;openid($c=false)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($_GET['state']!=\"zgm\"){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$t&nbsp;=&nbsp;$c&nbsp;?&nbsp;\"snsapi_userinfo\"&nbsp;:&nbsp;\"snsapi_base\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url=urlencode(get_url());\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url=\"https:\/\/open.weixin.qq.com\/connect\/oauth2\/authorize?appid=\".$this-&amp;gt;appid.\"&amp;amp;redirect_uri=\".$url.\"&amp;amp;response_type=code&amp;amp;scope=\".$t.\"&amp;amp;state=zgm#wechat_redirect\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;\"&lt;script&gt;window.location.href=&#039;$url&#039;;&lt;\/script&gt;\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($_GET['code']){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url=\"https:\/\/api.weixin.qq.com\/sns\/oauth2\/access_token?appid=\".$this-&amp;gt;appid.\"&amp;amp;secret=\".$this-&amp;gt;secret.\"&amp;amp;code=\".$_GET['code'].\"&amp;amp;grant_type=authorization_code\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$wx_db=json_decode($this-&amp;gt;https_get($url));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($c){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url_2=\"https:\/\/api.weixin.qq.com\/sns\/userinfo?access_token=\".$wx_db-&amp;gt;access_token.\"&amp;amp;openid=\".$wx_db-&amp;gt;openid.\"&amp;amp;lang=zh_CN\";\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$db=json_decode($this-&amp;gt;https_get($url_2));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$db;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$wx_db-&amp;gt;openid;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u53d1\u8d77\u7f51\u7edcGET\u8bf7\u6c42\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$url&nbsp;:&nbsp;URL\u94fe\u63a5\n&nbsp;&nbsp;&nbsp;&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;https_get($url)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$curl&nbsp;=&nbsp;curl_init();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($curl,&nbsp;CURLOPT_URL,&nbsp;$url);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($curl,&nbsp;CURLOPT_RETURNTRANSFER,&nbsp;TRUE);&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($curl,&nbsp;CURLOPT_SSL_VERIFYPEER,&nbsp;FALSE);&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($curl,&nbsp;CURLOPT_SSL_VERIFYHOST,&nbsp;FALSE);&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($curl,&nbsp;CURLOPT_HEADER,&nbsp;FALSE)&nbsp;;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($curl,&nbsp;CURLOPT_TIMEOUT,60);&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(curl_errno($curl))&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;'Errno'.curl_error($curl);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{$result=curl_exec($curl);}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_close($curl);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$result;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u5bf9\u53c2\u6570\u6392\u5e8f\uff0c\u751f\u6210MD5\u52a0\u5bc6\u7b7e\u540d\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;getParam($paramArray,&nbsp;$isencode=false)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$paramStr&nbsp;=&nbsp;'';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ksort($paramArray);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$i&nbsp;=&nbsp;0;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;($paramArray&nbsp;as&nbsp;$key&nbsp;=&amp;gt;&nbsp;$value)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($key&nbsp;==&nbsp;'Signature'){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($i&nbsp;==&nbsp;0){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$paramStr&nbsp;.=&nbsp;'';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$paramStr&nbsp;.=&nbsp;'&amp;amp;';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$paramStr&nbsp;.=&nbsp;$key&nbsp;.&nbsp;'='&nbsp;.&nbsp;($isencode?urlencode($value):$value);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++$i;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$stringSignTemp=$paramStr.\"&amp;amp;key=\".$this-&amp;gt;key;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sign=strtoupper(md5($stringSignTemp));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$sign;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/POST\u63d0\u4ea4\u6570\u636e\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;https_post($url,$data,$ssl&nbsp;=&nbsp;false)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ch&nbsp;=&nbsp;curl_init&nbsp;();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(&nbsp;$ch,&nbsp;CURLOPT_URL,&nbsp;$url&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(&nbsp;$ch,&nbsp;CURLOPT_CUSTOMREQUEST,&nbsp;\"POST\"&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(&nbsp;$ch,&nbsp;CURLOPT_SSL_VERIFYPEER,&nbsp;FALSE&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(&nbsp;$ch,&nbsp;CURLOPT_SSL_VERIFYHOST,&nbsp;FALSE&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ssl)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(&nbsp;$ch,CURLOPT_SSLCERT,$this-&amp;gt;sslcert_path);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(&nbsp;$ch,CURLOPT_SSLKEY,$this-&amp;gt;sslkey_path);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(&nbsp;$ch,&nbsp;CURLOPT_FOLLOWLOCATION,&nbsp;1&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(&nbsp;$ch,&nbsp;CURLOPT_AUTOREFERER,&nbsp;1&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(&nbsp;$ch,&nbsp;CURLOPT_POSTFIELDS,&nbsp;$data&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt&nbsp;(&nbsp;$ch,&nbsp;CURLOPT_RETURNTRANSFER,&nbsp;true&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;curl_exec($ch);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(curl_errno($ch))&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;'Errno:&nbsp;'.curl_error($ch);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_close($ch);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$result;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;XML\u8f6carray\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;xml&nbsp;$xml&nbsp;:&nbsp;xml&nbsp;\u6570\u636e\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;return&nbsp;array&nbsp;$data&nbsp;:&nbsp;\u8f6c\u4e49\u540e\u7684array\u6570\u7ec4\n&nbsp;&nbsp;&nbsp;&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;xmlToArray($xml)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libxml_disable_entity_loader(true);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$xmlstring&nbsp;=&nbsp;simplexml_load_string($xml,&nbsp;'SimpleXMLElement',&nbsp;LIBXML_NOCDATA);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$val&nbsp;=&nbsp;json_decode(json_encode($xmlstring),true);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$val;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u8bb0\u5f55\u65e5\u5fd7\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;string&nbsp;$msg&nbsp;:&nbsp;\u63d0\u793a\u8bed\u53e5\n&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;array&nbsp;$ret&nbsp;:&nbsp;\u9519\u8bef\u7ed3\u679c\n&nbsp;&nbsp;&nbsp;&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;errorLog($msg,$ret)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_put_contents(ROOT_PATH&nbsp;.&nbsp;'runtime\/error\/wxpay.log',&nbsp;\"[\"&nbsp;.&nbsp;date('Y-m-d&nbsp;H:i:s')&nbsp;.&nbsp;\"]&nbsp;\".$msg.\",\"&nbsp;.json_encode($ret).PHP_EOL,&nbsp;FILE_APPEND);\n&nbsp;&nbsp;&nbsp;&nbsp;}\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4e8c\u3001Controller\u5c42\uff0cTest.php<\/p>\n<pre>&lt;?php namespace appgoodscontroller;\nuse appcommonmodelWxpay;\nclass Test\n{\n    \/*\n    * \u8c03\u7528\u5fae\u4fe1\u652f\u4ed8\n    * \u4e00\u3001\u83b7\u53d6\u5fae\u4fe1\u7528\u6237\u7684openid; \n    * \u4e8c\u3001\u8c03\u7528\u5fae\u4fe1\u652f\u4ed8\u63a5\u53e3\n    * \u4e09\u3001\u751f\u6210H5\u4e2d\u4f7f\u7528\u7684\u7b7e\u540d\u5185\u5bb9\n    *\/\n    public function wx()\n    {\n        $wxpay = new Wxpay();\n        $openid = $wxpay-&gt;openid();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$pay&nbsp;=&nbsp;$wxpay-&amp;gt;payForWeixin($openid,date('YmdHis').rand(1,5),'0.1');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$paySign&nbsp;=strtoupper(MD5('appId='.$pay['appId'].'&amp;amp;nonceStr='.$pay['nonceStr'].'&amp;amp;package='.$pay['package'].'&amp;amp;signType=MD5&amp;amp;timeStamp='.$pay['timeStamp'].'&amp;amp;key=536*****9e8'));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$h5&nbsp;=&nbsp;array(\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'appId'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&amp;gt;&nbsp;$pay['appId'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'timeStamp'&nbsp;=&amp;gt;&nbsp;$pay['timeStamp'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'nonceStr'&nbsp;&nbsp;=&amp;gt;&nbsp;$pay['nonceStr'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'package'&nbsp;&nbsp;&nbsp;=&amp;gt;&nbsp;$pay['package'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'signType'&nbsp;&nbsp;=&amp;gt;&nbsp;$pay['signType'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'paySign'&nbsp;&nbsp;&nbsp;=&amp;gt;&nbsp;$paySign\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;assign('wxpay',$h5);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;view();\n&nbsp;&nbsp;&nbsp;&nbsp;}\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4e09\u3001HTML\u4e2d\u8c03\u7528\uff0cwx.html<\/p>\n<pre>nbsp;html&amp;gt;\n\n\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;\u8ba2\u5355\u793a\u4f8b&lt;\/title&gt;&lt;script&gt;\n    function onBridgeReady(){\n        WeixinJSBridge.invoke(\n            &#039;getBrandWCPayRequest&#039;, {\n                \"appId\":\"{$wxpay[&#039;appId&#039;]}\",\n                \"timeStamp\":\"{$wxpay[&#039;timeStamp&#039;]}\",\n                \"nonceStr\":\"{$wxpay[&#039;nonceStr&#039;]}\",\n                \"package\":\"{$wxpay[&#039;package&#039;]}\",\n                \"signType\":\"MD5\",\n                \"paySign\":\"{$wxpay[&#039;paySign&#039;]}\"\n            },\n            function(res){\n                if(res.err_msg == \"get_brand_wcpay_request:ok\" ){\n                    \/\/ \u4f7f\u7528\u4ee5\u4e0a\u65b9\u5f0f\u5224\u65ad\u524d\u7aef\u8fd4\u56de,\u5fae\u4fe1\u56e2\u961f\u90d1\u91cd\u63d0\u793a\uff1a\n                    \/\/res.err_msg\u5c06\u5728\u7528\u6237\u652f\u4ed8\u6210\u529f\u540e\u8fd4\u56deok\uff0c\u4f46\u5e76\u4e0d\u4fdd\u8bc1\u5b83\u7edd\u5bf9\u53ef\u9760\u3002\n                }\n            });\n    }\n    if (typeof WeixinJSBridge == \"undefined\"){\n        if( document.addEventListener ){\n            document.addEventListener(&#039;WeixinJSBridgeReady&#039;, onBridgeReady, false);\n        }else if (document.attachEvent){\n            document.attachEvent(&#039;WeixinJSBridgeReady&#039;, onBridgeReady);\n            document.attachEvent(&#039;onWeixinJSBridgeReady&#039;, onBridgeReady);\n        }\n    }else{\n        onBridgeReady();\n    }\n&lt;\/script&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u56db\u3001\u63a5\u6536\u5fae\u4fe1\u652f\u4ed8\u8fd4\u56de\u7ed3\u679c,\u652f\u4ed8\u65f6\u8bbe\u7f6e\u7684notify_url\u503c\uff0c\u786e\u4fdd\u6b64\u94fe\u63a5\u5916\u7f51\u80fd\u8bbf\u95ee\u3002wxpaynofiy.php<\/p>\n<p><span>\u7acb\u5373\u5b66\u4e60<\/span>\u201c\u201d\uff1b<\/p>\n<pre>&lt;?php namespace apphomecontroller;\nclass Wxpaynofiy\n{\n     public function notify()\n    {\n        $xml = isset($GLOBALS[\"HTTP_RAW_POST_DATA\"]) ? $GLOBALS[&#039;HTTP_RAW_POST_DATA&#039;] : file_get_contents(\"php:\/\/input\");\n        $data = xmlToArray($xml);\n        if($data[&#039;return_code&#039;] == &#039;SUCCESS&#039; &amp;&amp; $data[&#039;result_code&#039;] == &#039;SUCCESS&#039;){\n            if($this-&gt;checkSign($data))&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$transaction_id&nbsp;=&nbsp;$data['transaction_id'];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u5fae\u4fe1\u652f\u4ed8\u8ba2\u5355\u53f7\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$out_trade_no&nbsp;&nbsp;&nbsp;=&nbsp;$data['out_trade_no'];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u5546\u5bb6\u8ba2\u5355\u53f7\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;errorLog('\u5fae\u4fe1\u652f\u4ed8\u8fd4\u56de\u7ed3\u679c,\u5fae\u4fe1\u652f\u4ed8\u8ba2\u5355\u53f7\uff1a'.$transaction_id.'\uff0c\u5546\u5bb6\u8ba2\u5355\u53f7\uff1a'.$out_trade_no,[]);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;errorLog('\u5fae\u4fe1\u652f\u4ed8\u8fd4\u56de\u7ed3\u679c\u7b7e\u540d\u9a8c\u8bc1\u5931\u8d25',$data);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;errorLog('\u5fae\u4fe1\u652f\u4ed8\u8fd4\u56de\u7ed3\u679c',$data);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;'&lt;xml&gt;&lt;return_code&gt;&lt;\/return_code&gt;&lt;return_msg&gt;&lt;\/return_msg&gt;&lt;\/xml&gt;';\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/*\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u9a8c\u8bc1\u7b7e\u540d\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@params&nbsp;array&nbsp;$result&nbsp;:&nbsp;\u5fae\u4fe1\u652f\u4ed8\u6210\u529f\u8fd4\u56de\u7684\u7ed3\u679c\u6570\u7ec4\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;return&nbsp;bool&nbsp;$ret&nbsp;:&nbsp;\u6210\u529ftrue\uff0c\u5931\u8d25false\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;checkSign(array&nbsp;$data)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str&nbsp;=&nbsp;'';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ksort($data);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;($data&nbsp;as&nbsp;$k&nbsp;=&amp;gt;&nbsp;$v)&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($k&nbsp;!=&nbsp;'sign')&nbsp;$str&nbsp;.=&nbsp;$k.'='.$v.'&amp;amp;';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$temp&nbsp;=&nbsp;$str&nbsp;.&nbsp;'key=5363******49e8';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/key\uff1a\u5546\u6237\u652f\u4ed8\u5bc6\u94a5\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sign&nbsp;=&nbsp;strtoupper(md5($temp));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$sign&nbsp;==&nbsp;$data['sign']&nbsp;?&nbsp;true&nbsp;:&nbsp;false;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;errorLog($msg,$ret)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_put_contents(ROOT_PATH&nbsp;.&nbsp;'runtime\/error\/wxpaynofiy.log',&nbsp;\"[\"&nbsp;.&nbsp;date('Y-m-d&nbsp;H:i:s')&nbsp;.&nbsp;\"]&nbsp;\".$msg.\",\"&nbsp;.json_encode($ret).PHP_EOL,&nbsp;FILE_APPEND);\n&nbsp;&nbsp;&nbsp;&nbsp;}\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u76f8\u5173\u63a8\u8350\uff1a<\/p>\n<\/p>\n<p style=\"margin: 0px 0px 1px;padding: 0px;font-weight: 400;font-size: medium;line-height: 1.54;font-family: arial\">\u89c6\u9891\u6559\u7a0b \uff1a<\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u652f\u4ed8\u7edf\u4e00\u4e0b\u5355\uff0c\u7528PHP\u600e\u4e48\u5b9e\u73b0\uff1f\uff08\u4ee3\u7801\u5168\uff09\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>h5\u652f\u4ed8\u65f6\u51fa\u73b0\u201c\u7b7e\u540d\u9519\u8bef\u201d\u600e\u4e48\u529e\uff1f\u6ce8\u610f\u8c03\u7528\u201c\u7edf\u4e00\u4e0b\u5355\u201d\u63a5\u53e3\u540e\u8fd4\u56depre_pay_id\u540e\uff0c\u9700\u8981\u7528\u6237\u518d\u6b21\u8fdb\u884c\u7b7e\u540d\u8fd4\u56de\u7ed9html\uff1b \u201c\u652f\u4ed8\u76ee\u5f55\u6ca1\u6709\u6388\u6743\u201d\uff0c\u8fdb\u5165\u5fae\u4fe1\u5546\u5bb6\u7ba1\u7406\u540e\u53f0\u8bbe\u7f6e\u5373\u53ef\u3002 \u4e00\u3001Model\u5c42\uff0cWxpay.php &lt;?php namespace appcommonmodel; class Wxpay { private $appid = &#039;wxe8*****d4&#039;; \/\/\u5fae\u4fe1\u516c\u4f17\u53f7appid private $secret = &#039;37c4*******5f0&#039;; \/\/\u5fae\u4fe1\u516c\u4f17\u53f7appsecret private $mchid = &#039;13******02&#039;; \/\/\u5546\u5bb6\u53f7 private $key = &#039;5363e******49e8&#039;; \/\/\u652f\u4ed8\u5bc6\u94a5 private $sslcert_path = &#039;apiclient_cert.pem&#039;; \/\/\u8bc1\u4e66\u6240\u5728\u7edd\u5bf9\u8def\u5f84 private $sslkey_path = &#039;apiclient_key.pem&#039;; \/\/\u8bc1\u4e66\u6240\u5728\u7edd\u5bf9\u8def\u5f84 public function __construct($appid = &#039;&#039;, $secret = &#039;&#039;, $mchid = &#039;&#039;, $key = &#039;&#039;) { if(!empty($appid)) [&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-28550","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28550","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=28550"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28550\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=28550"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=28550"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=28550"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}