{"id":28671,"date":"2024-11-25T09:51:48","date_gmt":"2024-11-25T01:51:48","guid":{"rendered":"https:\/\/fwq.ai\/blog\/28671\/"},"modified":"2024-11-25T09:51:48","modified_gmt":"2024-11-25T01:51:48","slug":"%e5%be%ae%e4%bf%a1%e5%bc%80%e5%8f%91%e4%bc%81%e4%b8%9a%e4%bb%98%e6%ac%be-php%e4%bb%a3%e7%a0%81%e5%ae%9e%e7%8e%b0","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/28671\/","title":{"rendered":"\u5fae\u4fe1\u5f00\u53d1\u4f01\u4e1a\u4ed8\u6b3e PHP\u4ee3\u7801\u5b9e\u73b0"},"content":{"rendered":"<p>\u5199\u8fd9\u7bc7\u6587\u7ae0\u7684\u76ee\u7684\u4e3b\u8981\u662f\u7531\u4e8e\u5728\u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u63d0\u4f9b\u7684sdk\u4e2d\u5e76\u6ca1\u6709\u63d0\u4f9b\u6b64\u529f\u80fd\u7684sdk\u5b9e\u73b0\uff0c<\/p>\n<p>\u5176\u5b9e\u6700\u540e\u5b9e\u73b0\u8fd8\u662f\u501f\u52a9&nbsp;\u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u5f00\u53d1\u6587\u6863&nbsp;\u548c&nbsp;SDK&nbsp;\u3002<\/p>\n<p>\u4f01\u4e1a\u4ed8\u6b3e\u7684\u5e94\u7528\u573a\u666f\uff1a \u516c\u4f17\u53f7\u5411\u5df2\u5173\u6ce8\u7528\u6237\u4ed8\u6b3e\uff0c\u6bd4\u5982\u5904\u7406\u9000\u6b3e\u3001\u8d22\u52a1\u7ed3\u7b97\u7b49&nbsp;<\/p>\n<p>\u5148\u8bf4\u4e00\u4e0b\u5b9e\u73b0\u601d\u8def\uff1a<\/p>\n<p>\u5728SDK\u4e2d\u81ea\u5e26\u7c7b\u5e93\u7684\u57fa\u7840\u4e0a\u6269\u5c55WxMchPay\u7ec4\u4ef6\uff0c \u5b9e\u73b0\u4f01\u4e1a\u4ed8\u6b3e\u529f\u80fd\u7684\u6269\u5c55\u3002<\/p>\n<p><span>\u7acb\u5373\u5b66\u4e60<\/span>\u201c\u201d\uff1b<\/p>\n<p>\u8bdd\u4e0d\u591a\u8bf4\uff0c\u4e0a\u4ee3\u7801\uff0c \u4e0b\u9762\u662f\u7ee7\u627fSDK\uff0c\u5b9e\u73b0\u4f01\u4e1a\u4ed8\u6b3e\u7684\u7ec4\u4ef6\uff1a<\/p>\n<p>$parameters\u53c2\u6570\u53c2\u8003\uff1a&nbsp;\u4f01\u4e1a\u4ed8\u6b3eAPI\u7684\u6587\u6863<\/p>\n<pre>&lt;?php \/\/ \u5f15\u5165SDK\r\nimport(&#039;Common.Util.WxPay&#039;);\r\n\r\n\/**\r\n * \u5fae\u4fe1\u4f01\u4e1a\u4ed8\u6b3e\u64cd\u4f5c\u7c7b\r\n * Author  :  Max.wen\r\n * DateTime: &lt;15\/9\/16 11:00&gt;\r\n&nbsp;*\/\r\nclass&nbsp;WxMchPay&nbsp;extends&nbsp;Wxpay_client_pub\r\n{\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/**\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;API&nbsp;\u53c2\u6570\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;array\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'mch_appid'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u516c\u4f17\u53f7APPID\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'mchid'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u5546\u6237\u53f7\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'device_info'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u8bbe\u5907\u53f7\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'nonce_str'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u968f\u673a\u5b57\u7b26\u4e32\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'partner_trade_no'&nbsp;&nbsp;#&nbsp;\u5546\u6237\u8ba2\u5355\u53f7\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'openid'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u6536\u6b3e\u7528\u6237openid\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'check_name'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u6821\u9a8c\u7528\u6237\u59d3\u540d\u9009\u9879&nbsp;\u9488\u5bf9\u5b9e\u540d\u8ba4\u8bc1\u7684\u7528\u6237\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'re_user_name'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u6536\u6b3e\u7528\u6237\u59d3\u540d\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'amount'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u4ed8\u6b3e\u91d1\u989d\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'desc'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u4f01\u4e1a\u4ed8\u6b3e\u63cf\u8ff0\u4fe1\u606f\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'spbill_create_ip'&nbsp;&nbsp;#&nbsp;Ip\u5730\u5740\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'sign'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u7b7e\u540d\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;$parameters&nbsp;=&nbsp;[];\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;url&nbsp;=&nbsp;'https:\/\/api.mch.weixin.qq.com\/mmpaymkttransfers\/promotion\/transfers';\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;curl_timeout&nbsp;=&nbsp;WxPayConf_pub::CURL_TIMEOUT;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/**\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u751f\u6210\u8bf7\u6c42xml\u6570\u636e\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;string\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;createXml()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;parameters['mch_appid']&nbsp;=&nbsp;WxPayConf_pub::APPID;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;parameters['mchid']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;WxPayConf_pub::MCHID;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;parameters['nonce_str']&nbsp;=&nbsp;$this-&amp;gt;createNoncestr();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;parameters['sign']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$this-&amp;gt;getSign($this-&amp;gt;parameters);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this-&amp;gt;arrayToXml($this-&amp;gt;parameters);\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/**\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u4f5c\u7528\uff1a\u4f7f\u7528\u8bc1\u4e66\uff0c\u4ee5post\u65b9\u5f0f\u63d0\u4ea4xml\u5230\u5bf9\u5e94\u7684\u63a5\u53e3url\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\r\n&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;postXmlSSLCurl($xml,$url,$second=30)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ch&nbsp;=&nbsp;curl_init();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u8d85\u65f6\u65f6\u95f4\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_TIMEOUT,$second);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u8fd9\u91cc\u8bbe\u7f6e\u4ee3\u7406\uff0c\u5982\u679c\u6709\u7684\u8bdd\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/curl_setopt($ch,CURLOPT_PROXY,&nbsp;'8.8.8.8');\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/curl_setopt($ch,CURLOPT_PROXYPORT,&nbsp;8080);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_URL,&nbsp;$url);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u8bbe\u7f6eheader\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_HEADER,FALSE);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u8981\u6c42\u7ed3\u679c\u4e3a\u5b57\u7b26\u4e32\u4e14\u8f93\u51fa\u5230\u5c4f\u5e55\u4e0a\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u8bbe\u7f6e\u8bc1\u4e66\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_CAINFO,&nbsp;WxPayConf_pub::SSLROOTCA_PATH);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u4f7f\u7528\u8bc1\u4e66\uff1acert&nbsp;\u4e0e&nbsp;key&nbsp;\u5206\u522b\u5c5e\u4e8e\u4e24\u4e2a.pem\u6587\u4ef6\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u9ed8\u8ba4\u683c\u5f0f\u4e3aPEM\uff0c\u53ef\u4ee5\u6ce8\u91ca\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_SSLCERT,&nbsp;WxPayConf_pub::SSLCERT_PATH);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u9ed8\u8ba4\u683c\u5f0f\u4e3aPEM\uff0c\u53ef\u4ee5\u6ce8\u91ca\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_SSLKEY,&nbsp;WxPayConf_pub::SSLKEY_PATH);\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/post\u63d0\u4ea4\u65b9\u5f0f\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_POST,&nbsp;true);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data&nbsp;=&nbsp;curl_exec($ch);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u8fd4\u56de\u7ed3\u679c\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($data){\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_close($ch);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$data;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$error&nbsp;=&nbsp;curl_errno($ch);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;\"curl\u51fa\u9519\uff0c\u9519\u8bef\u7801:$error\".\"&lt;br&gt;\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;\"&lt;a&gt;\u9519\u8bef\u539f\u56e0\u67e5\u8be2&lt;\/a&gt;\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_close($ch);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n\r\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>Controller\u5c42\u529f\u80fd\u5b9e\u73b0\uff1a<\/p>\n<pre>&lt;?php \/**\r\n * Author  :  Max.wen\r\n * DateTime: &lt;15\/9\/20 16:47&gt;\r\n&nbsp;*\/\r\n\r\nnamespace&nbsp;HomeController;\r\n\r\n\r\nclass&nbsp;TestController&nbsp;extends&nbsp;CommonController\r\n{\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/**\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u4f01\u4e1a\u4ed8\u6b3e\u6d4b\u8bd5\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;rebate()\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import('Common.Util.WxMchPay');\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mchPay&nbsp;=&nbsp;new&nbsp;WxMchPay();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u7528\u6237openid\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mchPay-&amp;gt;setParameter('openid',&nbsp;'oy2lbszXkgvlEKThrzqEziKEBzqU');\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u5546\u6237\u8ba2\u5355\u53f7\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mchPay-&amp;gt;setParameter('partner_trade_no',&nbsp;'test-'.time());\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u6821\u9a8c\u7528\u6237\u59d3\u540d\u9009\u9879\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mchPay-&amp;gt;setParameter('check_name',&nbsp;'NO_CHECK');\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u4f01\u4e1a\u4ed8\u6b3e\u91d1\u989d&nbsp;&nbsp;\u5355\u4f4d\u4e3a\u5206\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mchPay-&amp;gt;setParameter('amount',&nbsp;100);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u4f01\u4e1a\u4ed8\u6b3e\u63cf\u8ff0\u4fe1\u606f\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mchPay-&amp;gt;setParameter('desc',&nbsp;'\u5f00\u53d1\u6d4b\u8bd5');\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u8c03\u7528\u63a5\u53e3\u7684\u673a\u5668IP\u5730\u5740&nbsp;&nbsp;\u81ea\u5b9a\u4e49\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mchPay-&amp;gt;setParameter('spbill_create_ip',&nbsp;'127.0.0.1');&nbsp;#&nbsp;getClientIp()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u6536\u6b3e\u7528\u6237\u59d3\u540d\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;$mchPay-&amp;gt;setParameter('re_user_name',&nbsp;'Max&nbsp;wen');\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u8bbe\u5907\u4fe1\u606f\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;$mchPay-&amp;gt;setParameter('device_info',&nbsp;'dev_server');\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$response&nbsp;=&nbsp;$mchPay-&amp;gt;postXmlSSL();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;!empty($response)&nbsp;)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data&nbsp;=&nbsp;simplexml_load_string($response,&nbsp;null,&nbsp;LIBXML_NOCDATA);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;json_encode($data);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;json_encode(&nbsp;array('return_code'&nbsp;=&amp;gt;&nbsp;'FAIL',&nbsp;'return_msg'&nbsp;=&amp;gt;&nbsp;'transfers_\u63a5\u53e3\u51fa\u9519',&nbsp;'return_ext'&nbsp;=&amp;gt;&nbsp;array())&nbsp;);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u5b8c\u6210\u4e0a\u8ff0\u4e24\u90e8\u5206\u4ee3\u7801\uff0c\u57fa\u672c\u5c31\u53ef\u4ee5\u6210\u529f\u8c03\u7528\u4f01\u4e1a\u4ed8\u6b3eAPI\u4e86\u3002<\/p>\n<p>\u8fd4\u56de\u7ed3\u679c\u7684\u6570\u636e\u7ed3\u6784\u793a\u4f8b\uff1a<\/p>\n<pre>{\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"return_code\":&nbsp;\"SUCCESS\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"return_msg\":&nbsp;{&nbsp;},\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"mch_appid\":&nbsp;\"wx519cae424099ed6b\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"mchid\":&nbsp;\"1228636402\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"device_info\":&nbsp;{&nbsp;},\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"nonce_str\":&nbsp;\"qjupk84q4iqxkb578hb5h2qiatgcwxwg\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"result_code\":&nbsp;\"SUCCESS\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"partner_trade_no\":&nbsp;\"test-1442801966\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"payment_no\":&nbsp;\"1000018301201509210739170397\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"payment_time\":&nbsp;\"2015-09-21&nbsp;10:19:26\"\r\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u53ef\u80fd\u9047\u5230\u7684\u95ee\u9898\uff1a<\/p>\n<p>1\u3001CA\u8bc1\u4e66\u9519\u8bef<\/p>\n<p>\u3000\u3000\u5728WxMchPay\u4e2d\u5927\u5bb6\u53ef\u4ee5\u770b\u5230\uff0c\u6211\u91cd\u5199\u4e86SDK\u4e2d&nbsp;Wxpay_client_pub \u7684&nbsp;postXmlSSLCurl()\u65b9\u6cd5<\/p>\n<p>\u3000\u3000\u56e0\u4e3a\u9ed8\u8ba4\u5728SDK\u4e2d\u7684\u8fd9\u4e2a\u65b9\u6cd5\u5728CURL POST\u8bf7\u6c42\u7684\u65f6\u5019\u6ca1\u6709\u9644\u5e26CA\u8bc1\u4e66\u3002<\/p>\n<p>\u3000\u3000\u76f8\u6bd4\u4e4b\u4e0b\u5c31\u591a\u4e86&nbsp;<\/p>\n<p>\u3000\u3000curl_setopt($ch,CURLOPT_CAINFO, WxPayConf_pub::SSLROOTCA_PATH);\u3000\u3000\u8fd9\u4e48\u4e00\u884c\u4ee3\u7801\u3002\u3000\u3000<\/p>\n<p>\u3000\u3000\u4f5c\u7528\u5c31\u662f\u8bf7\u6c42\u65f6\u9644\u5e26CA\u8bc1\u4e66\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>2\u3001\u5bf9\u540c\u4e00\u7528\u6237\u8f6c\u8d26\u64cd\u4f5c\u8fc7\u4e8e\u9891\u7e41,\u8bf7\u7a0d\u5019\u91cd\u8bd5.<\/p>\n<p>\u3000\u3000\u8fd9\u4e2a\u9519\u8bef\u5c5e\u4e8e\u5fae\u4fe1\u670d\u52a1\u7aef\u7684\u9650\u5236\uff0c\u5177\u4f53\u9650\u5236\u9891\u7387\u4e5f\u6ca1\u6709\u627e\u5230\u90a3\u91cc\u6709\u8bf4\u660e\uff0c\u4e0d\u8fc7\u7ecf\u8fc7\u5b9e\u9645\u6d4b\u8bd5\u5927\u6982\u57281\u5206\u949f\u5de6\u53f3\u3002<\/p>\n<p>\u3000\u3000\u6240\u4ee5\u5728\u5f00\u53d1\u7684\u65f6\u5019\u8fd8\u9700\u8981\u591a\u6ce8\u610f\u3002<\/p>\n<p>\u66f4\u591a\u5fae\u4fe1\u5f00\u53d1\u4f01\u4e1a\u4ed8\u6b3e PHP\u4ee3\u7801\u5b9e\u73b0\u76f8\u5173\u6587\u7ae0\u8bf7\u5173\u6ce8PHP\u4e2d\u6587\u7f51\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5199\u8fd9\u7bc7\u6587\u7ae0\u7684\u76ee\u7684\u4e3b\u8981\u662f\u7531\u4e8e\u5728\u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u63d0\u4f9b\u7684sdk\u4e2d\u5e76\u6ca1\u6709\u63d0\u4f9b\u6b64\u529f\u80fd\u7684sdk\u5b9e\u73b0\uff0c \u5176\u5b9e\u6700\u540e\u5b9e\u73b0\u8fd8\u662f\u501f\u52a9&nbsp;\u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u5f00\u53d1\u6587\u6863&nbsp;\u548c&nbsp;SDK&nbsp;\u3002 \u4f01\u4e1a\u4ed8\u6b3e\u7684\u5e94\u7528\u573a\u666f\uff1a \u516c\u4f17\u53f7\u5411\u5df2\u5173\u6ce8\u7528\u6237\u4ed8\u6b3e\uff0c\u6bd4\u5982\u5904\u7406\u9000\u6b3e\u3001\u8d22\u52a1\u7ed3\u7b97\u7b49&nbsp; \u5148\u8bf4\u4e00\u4e0b\u5b9e\u73b0\u601d\u8def\uff1a \u5728SDK\u4e2d\u81ea\u5e26\u7c7b\u5e93\u7684\u57fa\u7840\u4e0a\u6269\u5c55WxMchPay\u7ec4\u4ef6\uff0c \u5b9e\u73b0\u4f01\u4e1a\u4ed8\u6b3e\u529f\u80fd\u7684\u6269\u5c55\u3002 \u7acb\u5373\u5b66\u4e60\u201c\u201d\uff1b \u8bdd\u4e0d\u591a\u8bf4\uff0c\u4e0a\u4ee3\u7801\uff0c \u4e0b\u9762\u662f\u7ee7\u627fSDK\uff0c\u5b9e\u73b0\u4f01\u4e1a\u4ed8\u6b3e\u7684\u7ec4\u4ef6\uff1a $parameters\u53c2\u6570\u53c2\u8003\uff1a&nbsp;\u4f01\u4e1a\u4ed8\u6b3eAPI\u7684\u6587\u6863 &lt;?php \/\/ \u5f15\u5165SDK import(&#039;Common.Util.WxPay&#039;); \/** * \u5fae\u4fe1\u4f01\u4e1a\u4ed8\u6b3e\u64cd\u4f5c\u7c7b * Author : Max.wen * DateTime: &lt;15\/9\/16 11:00&gt; &nbsp;*\/ class&nbsp;WxMchPay&nbsp;extends&nbsp;Wxpay_client_pub { &nbsp;&nbsp;&nbsp;&nbsp;\/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;API&nbsp;\u53c2\u6570 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;array &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&#8216;mch_appid&#8217;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u516c\u4f17\u53f7APPID &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&#8216;mchid&#8217;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u5546\u6237\u53f7 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&#8216;device_info&#8217;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u8bbe\u5907\u53f7 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&#8216;nonce_str&#8217;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u968f\u673a\u5b57\u7b26\u4e32 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&#8216;partner_trade_no&#8217;&nbsp;&nbsp;#&nbsp;\u5546\u6237\u8ba2\u5355\u53f7 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&#8216;openid&#8217;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u6536\u6b3e\u7528\u6237openid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&#8216;check_name&#8217;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u6821\u9a8c\u7528\u6237\u59d3\u540d\u9009\u9879&nbsp;\u9488\u5bf9\u5b9e\u540d\u8ba4\u8bc1\u7684\u7528\u6237 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&#8216;re_user_name&#8217;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u6536\u6b3e\u7528\u6237\u59d3\u540d &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&#8216;amount&#8217;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u4ed8\u6b3e\u91d1\u989d &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&#8216;desc&#8217;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u4f01\u4e1a\u4ed8\u6b3e\u63cf\u8ff0\u4fe1\u606f &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&#8216;spbill_create_ip&#8217;&nbsp;&nbsp;#&nbsp;Ip\u5730\u5740 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&#8216;sign&#8217;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;\u7b7e\u540d &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;$parameters&nbsp;=&nbsp;[]; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;url&nbsp;=&nbsp;&#8216;https:\/\/api.mch.weixin.qq.com\/mmpaymkttransfers\/promotion\/transfers&#8217;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;curl_timeout&nbsp;=&nbsp;WxPayConf_pub::CURL_TIMEOUT; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;\/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u751f\u6210\u8bf7\u6c42xml\u6570\u636e &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;string &nbsp;&nbsp;&nbsp;&nbsp;&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-28671","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28671","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=28671"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/28671\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=28671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=28671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=28671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}