{"id":29944,"date":"2024-11-25T16:26:33","date_gmt":"2024-11-25T08:26:33","guid":{"rendered":"https:\/\/fwq.ai\/blog\/29944\/"},"modified":"2024-11-25T16:26:33","modified_gmt":"2024-11-25T08:26:33","slug":"%e5%be%ae%e4%bf%a1%e5%bc%80%e5%8f%91%e4%b9%8bjs-api%e6%94%af%e4%bb%98%e7%9a%84%e5%ae%9e%e4%be%8b%e8%af%a6%e8%a7%a3","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/29944\/","title":{"rendered":"\u5fae\u4fe1\u5f00\u53d1\u4e4bJS API\u652f\u4ed8\u7684\u5b9e\u4f8b\u8be6\u89e3"},"content":{"rendered":"<p>\u5173\u952e\u5b57\uff1a\u5fae\u4fe1\u652f\u4ed8 \u5fae\u4fe1\u652f\u4ed8v3 jsapi\u652f\u4ed8 \u7edf\u4e00\u652f\u4ed8 native\u652f\u4ed8 prepay_id&nbsp;<\/p>\n<p>\u672c\u6587\u4ecb\u7ecd\u5fae\u4fe1\u652f\u4ed8\u4e0b\u7684jsapi\u5b9e\u73b0\u6d41\u7a0b<\/p>\n<h2>\u524d\u8a00<\/h2>\n<p>\u5fae\u4fe1\u652f\u4ed8\u73b0\u5728\u5206\u4e3av2\u7248\u548cv3\u7248\uff0c2014\u5e749\u670810\u53f7\u4e4b\u524d\u7533\u8bf7\u7684\u4e3av2\u7248\uff0c\u4e4b\u540e\u7533\u8bf7\u7684\u4e3av3\u7248\u3002V3\u7248\u7684\u5fae\u4fe1\u652f\u4ed8\u6ca1\u6709paySignKey\u53c2\u6570\u3002v2\u7684\u76f8\u5173\u4ecb\u7ecd\u8bf7\u53c2\u8003\u65b9\u500d\u5de5\u4f5c\u5ba4\u7684\u5176\u4ed6\u6587\u7ae0\u3002\u672c\u6587\u4ecb\u7ecd\u7684\u5fae\u4fe1\u652f\u4ed8v3\u3002<\/p>\n<h2>\u6d41\u7a0b\u5b9e\u73b0<\/h2>\n<h3>1. OAuth2.0\u6388\u6743<\/h3>\n<p>JSAPI \u652f\u4ed8\u524d\u9700\u8981\u8c03\u7528 \u767b\u5f55\u6388\u6743\u63a5\u53e3\u83b7\u53d6\u5230\u7528\u6237\u7684 Openid \u3002\u6240\u4ee5\u9700\u8981\u505a\u4e00\u6b21\u6388\u6743\uff0c\u8fd9\u6b21\u6388\u6743\u662f\u4e0d\u5f39\u51fa\u786e\u8ba4\u6846\u7684\u3002<br \/>\u5176\u5b9e\u8d28\u5c31\u662f\u5728\u7528\u6237\u8bbf\u95ee<\/p>\n<pre>http:\/\/www.fangbei.org\/wxpay\/js_api_call.php<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u65f6\u8df3\u8f6c\u5230<\/p>\n<pre>https:\/\/open.weixin.qq.com\/connect\/oauth2\/authorize?appid=wx8888888888888888&amp;redirect_uri=http:\/\/www.fangbei.org\/wxpay\/js_api_call.php&amp;response_type=code&amp;scope=snsapi_base&amp;state=STATE#wechat_redirect<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u4ee5\u6b64\u6765\u83b7\u5f97code\u53c2\u6570\uff0c\u5e76\u6839\u636ecode\u6765\u83b7\u5f97\u6388\u6743access_token\u53caopenid<\/p>\n<p>\u5176\u5b9e\u73b0\u7684\u8be6\u7ec6\u6d41\u7a0b\u53ef\u53c2\u8003&nbsp;\u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u5f00\u53d1\uff0871\uff09OAuth2.0\u7f51\u9875\u6388\u6743<\/p>\n<p>\u5728\u5fae\u4fe1\u652f\u4ed8\u7684Demo\u4e2d\uff0c\u5176\u4ee3\u7801\u4e3a<\/p>\n<pre>&nbsp;1&nbsp;\/\/\u4f7f\u7528jsapi\u63a5\u53e3&nbsp;2&nbsp;$jsApi&nbsp;=&nbsp;new&nbsp;JsApi_pub();&nbsp;3&nbsp;&nbsp;4&nbsp;\/\/=========\u6b65\u9aa41\uff1a\u7f51\u9875\u6388\u6743\u83b7\u53d6\u7528\u6237openid============&nbsp;5&nbsp;\/\/\u901a\u8fc7code\u83b7\u5f97openid&nbsp;6&nbsp;if&nbsp;(!isset($_GET['code']))&nbsp;7&nbsp;{&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u89e6\u53d1\u5fae\u4fe1\u8fd4\u56decode\u7801&nbsp;9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url&nbsp;=&nbsp;$jsApi-&amp;gt;createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Header(\"Location:&nbsp;$url\");&nbsp;\r\n11&nbsp;}else12&nbsp;{13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u83b7\u53d6code\u7801\uff0c\u4ee5\u83b7\u53d6openid14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$code&nbsp;=&nbsp;$_GET['code'];15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$jsApi-&amp;gt;setCode($code);16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$openid&nbsp;=&nbsp;$jsApi-&amp;gt;getOpenId();17&nbsp;}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u8fd9\u4e00\u6b65\u7684\u6700\u7ec8\u7ed3\u679c\u5c31\u662f\u83b7\u5f97\u4e86\u5f53\u524d\u7528\u6237\u7684openid<\/p>\n<pre>ou9dHt0L8qFLI1foP-kj5x1mDWsM<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<h3>2. \u7edf\u4e00\u652f\u4ed8<\/h3>\n<p>\u7edf\u4e00\u652f\u4ed8\u662fJSAPI\/NATIVE\/APP\u5404\u79cd\u652f\u4ed8\u573a\u666f\u4e0b\u751f\u6210\u652f\u4ed8\u8ba2\u5355\uff0c\u8fd4\u56de\u9884\u652f\u4ed8\u8ba2\u5355\u53f7\u7684\u63a5\u53e3\uff0c\u76ee\u524d\u5fae\u4fe1\u652f\u4ed8\u6240\u6709\u573a\u666f\u5747\u4f7f\u7528\u8fd9\u4e00\u63a5\u53e3<br \/>\u7edf\u4e00\u652f\u4ed8\u4e2d\u4ee5\u4e0b\u53c2\u6570\u4ece\u914d\u7f6e\u4e2d\u83b7\u53d6\uff0c\u6216\u7531\u7c7b\u81ea\u52a8\u751f\u6210\uff0c\u4e0d\u9700\u8981\u7528\u6237\u586b\u5199<\/p>\n<pre>$this-&amp;gt;parameters[\"appid\"]&nbsp;=&nbsp;WxPayConf_pub::APPID;\/\/\u516c\u4f17\u8d26\u53f7ID$this-&amp;gt;parameters[\"mch_id\"]&nbsp;=&nbsp;WxPayConf_pub::MCHID;\/\/\u5546\u6237\u53f7$this-&amp;gt;parameters[\"spbill_create_ip\"]&nbsp;=&nbsp;$_SERVER['REMOTE_ADDR'];\/\/\u7ec8\u7aefip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;parameters[\"nonce_str\"]&nbsp;=&nbsp;$this-&amp;gt;createNoncestr();\/\/\u968f\u673a\u5b57\u7b26\u4e32$this-&amp;gt;parameters[\"sign\"]&nbsp;=&nbsp;$this-&amp;gt;getSign($this-&amp;gt;parameters);\/\/\u7b7e\u540d<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u5728JSAPI\u652f\u4ed8\u4e2d\uff0c\u53e6\u5916\u586b\u5199\u4ee5\u4e0b\u53c2\u6570<\/p>\n<pre>\/\/\u7edf\u4e00\u652f\u4ed8\u63a5\u53e3\u4e2d\uff0ctrade_type\u4e3aJSAPI\u65f6\uff0copenid\u4e3a\u5fc5\u586b\u53c2\u6570\uff01$unifiedOrder-&amp;gt;setParameter(\"openid\",\"$openid\");\/\/\u5546\u54c1\u63cf\u8ff0$unifiedOrder-&amp;gt;setParameter(\"body\",\"\u65b9\u500d\u5de5\u4f5c\u5ba4\");\/\/\u5546\u54c1\u63cf\u8ff0\r\n\/\/\u81ea\u5b9a\u4e49\u8ba2\u5355\u53f7\uff0c\u6b64\u5904\u4ec5\u4f5c\u4e3e\u4f8b$timeStamp&nbsp;=&nbsp;time();$out_trade_no&nbsp;=&nbsp;WxPayConf_pub::APPID.\"$timeStamp\";$unifiedOrder-&amp;gt;setParameter(\"out_trade_no\",\"$out_trade_no\");\/\/\u5546\u6237\u8ba2\u5355\u53f7&nbsp;$unifiedOrder-&amp;gt;setParameter(\"total_fee\",\"1\");\/\/\u603b\u91d1\u989d$unifiedOrder-&amp;gt;setParameter(\"notify_url\",WxPayConf_pub::NOTIFY_URL);\/\/\u901a\u77e5\u5730\u5740&nbsp;$unifiedOrder-&amp;gt;setParameter(\"trade_type\",\"JSAPI\");\/\/\u4ea4\u6613\u7c7b\u578b<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u5176\u4ed6\u4e3a\u9009\u586b\u53c2\u6570<\/p>\n<pre>\/\/\u975e\u5fc5\u586b\u53c2\u6570\uff0c\u5546\u6237\u53ef\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u9009\u586b\r\n\/\/$unifiedOrder-&amp;gt;setParameter(\"sub_mch_id\",\"XXXX\");\/\/\u5b50\u5546\u6237\u53f7&nbsp;&nbsp;\r\n\/\/$unifiedOrder-&amp;gt;setParameter(\"device_info\",\"XXXX\");\/\/\u8bbe\u5907\u53f7&nbsp;\r\n\/\/$unifiedOrder-&amp;gt;setParameter(\"attach\",\"XXXX\");\/\/\u9644\u52a0\u6570\u636e&nbsp;\r\n\/\/$unifiedOrder-&amp;gt;setParameter(\"time_start\",\"XXXX\");\/\/\u4ea4\u6613\u8d77\u59cb\u65f6\u95f4\r\n\/\/$unifiedOrder-&amp;gt;setParameter(\"time_expire\",\"XXXX\");\/\/\u4ea4\u6613\u7ed3\u675f\u65f6\u95f4&nbsp;\r\n\/\/$unifiedOrder-&amp;gt;setParameter(\"goods_tag\",\"XXXX\");\/\/\u5546\u54c1\u6807\u8bb0&nbsp;\r\n\/\/$unifiedOrder-&amp;gt;setParameter(\"openid\",\"XXXX\");\/\/\u7528\u6237\u6807\u8bc6\r\n\/\/$unifiedOrder-&amp;gt;setParameter(\"product_id\",\"XXXX\");\/\/\u5546\u54c1ID<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u8fd9\u4e9b\u53c2\u6570\u6700\u7ec8\u7ec4\u6210\u4e86\u8fd9\u6837\u7684xml\u6570\u636e\uff0c<\/p>\n<pre>&lt;xml&gt;\r\n&nbsp;&nbsp;&lt;openid&gt;&lt;\/openid&gt;\r\n&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;out_trade_no&gt;&lt;\/out_trade_no&gt;\r\n&nbsp;&nbsp;&lt;total_fee&gt;1&lt;\/total_fee&gt;\r\n&nbsp;&nbsp;&lt;notify_url&gt;&lt;\/notify_url&gt;\r\n&nbsp;&nbsp;&lt;trade_type&gt;&lt;\/trade_type&gt;\r\n&nbsp;&nbsp;&lt;appid&gt;&lt;\/appid&gt;\r\n&nbsp;&nbsp;&lt;mch_id&gt;10012345&lt;\/mch_id&gt;\r\n&nbsp;&nbsp;&lt;spbill_create_ip&gt;&lt;\/spbill_create_ip&gt;\r\n&nbsp;&nbsp;&lt;nonce_str&gt;&lt;\/nonce_str&gt;\r\n&nbsp;&nbsp;&lt;sign&gt;&lt;\/sign&gt;&lt;\/xml&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u5c06\u8fd9\u4e9b\u6570\u636e\u63d0\u4ea4\u7ed9\u7edf\u4e00\u652f\u4ed8\u63a5\u53e3<\/p>\n<pre>https:\/\/api.mch.weixin.qq.com\/pay\/unifiedorder<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u5c06\u83b7\u5f97\u8fd4\u56de \u5982\u4e0b\u6570\u636e<\/p>\n<pre>&lt;xml&gt;\r\n&nbsp;&nbsp;&lt;return_code&gt;&lt;\/return_code&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;return_msg&gt;&lt;\/return_msg&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;appid&gt;&lt;\/appid&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;mch_id&gt;&lt;\/mch_id&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;nonce_str&gt;&lt;\/nonce_str&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;sign&gt;&lt;\/sign&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;result_code&gt;&lt;\/result_code&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;prepay_id&gt;&lt;\/prepay_id&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;trade_type&gt;&lt;\/trade_type&gt;&nbsp;&lt;\/xml&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u5176\u4e2d\u5305\u542b\u4e86\u6700\u91cd\u8981\u7684\u9884\u652f\u4ed8ID\u53c2\u6570\uff0cprepay_id\uff0c\u503c\u4e3a&nbsp;<\/p>\n<pre>wx201410272009395522657a690389285100<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<h3>3\u3001JS API\u652f\u4ed8<\/h3>\n<p>\u524d\u9762\u7684\u51c6\u5907\u5de5\u4f5c\u505a\u597d\u4e86\u4ee5\u540e\uff0cJS API\u6839\u636eprepay_id\u751f\u6210jsapi\u652f\u4ed8\u53c2\u6570<br \/>\u751f\u6210\u4ee3\u7801\u5982\u4e0b<\/p>\n<pre>\/\/=========\u6b65\u9aa43\uff1a\u4f7f\u7528jsapi\u8c03\u8d77\u652f\u4ed8============$jsApi-&gt;setPrepayId($prepay_id);$jsApiParameters = $jsApi-&gt;getParameters();<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u751f\u6210\u7684json\u6570\u636e\u5982\u4e0b<\/p>\n<pre>{\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"appId\":&nbsp;\"wx8888888888888888\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"timeStamp\":&nbsp;\"1414411784\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"nonceStr\":&nbsp;\"gbwr71b5no6q6ne18c8up1u7l7he2y75\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"package\":&nbsp;\"prepay_id=wx201410272009395522657a690389285100\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"signType\":&nbsp;\"MD5\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;\"paySign\":&nbsp;\"9C6747193720F851EB876299D59F6C7D\"\r\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u5728\u5fae\u4fe1\u6d4f\u89c8\u5668\u4e2d\u8c03\u8bd5\u8d77js\u63a5\u53e3\uff0c\u4ee3\u7801\u5982\u4e0b<\/p>\n<pre>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;\u5fae\u4fe1\u5b89\u5168\u652f\u4ed8&lt;\/title&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&gt;\r\n        \/\/\u8c03\u7528\u5fae\u4fe1JS api \u652f\u4ed8\r\n        function jsApiCall()\r\n        {\r\n            WeixinJSBridge.invoke(                &#039;getBrandWCPayRequest&#039;,                &lt;?php echo $jsApiParameters; ?&gt;,                function(res){\r\n                    WeixinJSBridge.log(res.err_msg);                    \/\/alert(res.err_code+res.err_desc+res.err_msg);                }\r\n            );\r\n        }        function callpay()\r\n        {            if (typeof WeixinJSBridge == \"undefined\"){                if( document.addEventListener ){\r\n                    document.addEventListener(&#039;WeixinJSBridgeReady&#039;, jsApiCall, false);\r\n                }else if (document.attachEvent){\r\n                    document.attachEvent(&#039;WeixinJSBridgeReady&#039;, jsApiCall); \r\n                    document.attachEvent(&#039;onWeixinJSBridgeReady&#039;, jsApiCall);\r\n                }\r\n            }else{\r\n                jsApiCall();\r\n            }\r\n        }    &lt;\/script&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;button&gt;\u8d21\u732e\u4e00\u4e0b&lt;\/button&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/p&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u5f53\u7528\u6237\u70b9\u51fb\u201c\u8d21\u732e\u4e00\u4e0b\u201d\u6309\u94ae\u65f6\uff0c\u5c06\u5f39\u51fa\u5fae\u4fe1\u652f\u4ed8\u63d2\u4ef6\uff0c\u7528\u6237\u53ef\u4ee5\u5f00\u59cb\u652f\u4ed8\u3002<\/p>\n<h3>4\u3001\u652f\u4ed8\u901a\u77e5<\/h3>\n<p>\u652f\u4ed8\u6210\u529f\u540e\uff0c\u901a\u77e5\u63a5\u53e3\u4e2d\u4e5f\u5c06\u6536\u5230\u652f\u4ed8\u6210\u529f\u7684xml\u901a\u77e5<\/p>\n<pre>&lt;xml&gt;\r\n&nbsp;&nbsp;&lt;appid&gt;&lt;\/appid&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;bank_type&gt;&lt;\/bank_type&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;fee_type&gt;&lt;\/fee_type&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;is_subscribe&gt;&lt;\/is_subscribe&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;mch_id&gt;&lt;\/mch_id&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;nonce_str&gt;&lt;\/nonce_str&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;openid&gt;&lt;\/openid&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;out_trade_no&gt;&lt;\/out_trade_no&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;result_code&gt;&lt;\/result_code&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;return_code&gt;&lt;\/return_code&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;sign&gt;&lt;\/sign&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;sub_mch_id&gt;&lt;\/sub_mch_id&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;time_end&gt;&lt;\/time_end&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;total_fee&gt;1&lt;\/total_fee&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;trade_type&gt;&lt;\/trade_type&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;transaction_id&gt;&lt;\/transaction_id&gt;&nbsp;&lt;\/xml&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>notify_url\u6536\u5230\u4ee5\u540e\uff0c\u518d\u8fd4\u56de\u786e\u8ba4\u6210\u529f\u6d88\u606f\u7ed9\u5fae\u4fe1\u670d\u52a1\u5668<\/p>\n<pre>&lt;xml&gt;\r\n&nbsp;&nbsp;&lt;return_code&gt;&lt;\/return_code&gt;&lt;\/xml&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u5fae\u4fe1\u5f00\u53d1\u4e4bJS API\u652f\u4ed8\u7684\u5b9e\u4f8b\u8be6\u89e3\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>\u5173\u952e\u5b57\uff1a\u5fae\u4fe1\u652f\u4ed8 \u5fae\u4fe1\u652f\u4ed8v3 jsapi\u652f\u4ed8 \u7edf\u4e00\u652f\u4ed8 native\u652f\u4ed8 prepay_id&nbsp; \u672c\u6587\u4ecb\u7ecd\u5fae\u4fe1\u652f\u4ed8\u4e0b\u7684jsapi\u5b9e\u73b0\u6d41\u7a0b \u524d\u8a00 \u5fae\u4fe1\u652f\u4ed8\u73b0\u5728\u5206\u4e3av2\u7248\u548cv3\u7248\uff0c2014\u5e749\u670810\u53f7\u4e4b\u524d\u7533\u8bf7\u7684\u4e3av2\u7248\uff0c\u4e4b\u540e\u7533\u8bf7\u7684\u4e3av3\u7248\u3002V3\u7248\u7684\u5fae\u4fe1\u652f\u4ed8\u6ca1\u6709paySignKey\u53c2\u6570\u3002v2\u7684\u76f8\u5173\u4ecb\u7ecd\u8bf7\u53c2\u8003\u65b9\u500d\u5de5\u4f5c\u5ba4\u7684\u5176\u4ed6\u6587\u7ae0\u3002\u672c\u6587\u4ecb\u7ecd\u7684\u5fae\u4fe1\u652f\u4ed8v3\u3002 \u6d41\u7a0b\u5b9e\u73b0 1. OAuth2.0\u6388\u6743 JSAPI \u652f\u4ed8\u524d\u9700\u8981\u8c03\u7528 \u767b\u5f55\u6388\u6743\u63a5\u53e3\u83b7\u53d6\u5230\u7528\u6237\u7684 Openid \u3002\u6240\u4ee5\u9700\u8981\u505a\u4e00\u6b21\u6388\u6743\uff0c\u8fd9\u6b21\u6388\u6743\u662f\u4e0d\u5f39\u51fa\u786e\u8ba4\u6846\u7684\u3002\u5176\u5b9e\u8d28\u5c31\u662f\u5728\u7528\u6237\u8bbf\u95ee http:\/\/www.fangbei.org\/wxpay\/js_api_call.php \u767b\u5f55\u540e\u590d\u5236 \u65f6\u8df3\u8f6c\u5230 https:\/\/open.weixin.qq.com\/connect\/oauth2\/authorize?appid=wx8888888888888888&amp;redirect_uri=http:\/\/www.fangbei.org\/wxpay\/js_api_call.php&amp;response_type=code&amp;scope=snsapi_base&amp;state=STATE#wechat_redirect \u767b\u5f55\u540e\u590d\u5236 \u4ee5\u6b64\u6765\u83b7\u5f97code\u53c2\u6570\uff0c\u5e76\u6839\u636ecode\u6765\u83b7\u5f97\u6388\u6743access_token\u53caopenid \u5176\u5b9e\u73b0\u7684\u8be6\u7ec6\u6d41\u7a0b\u53ef\u53c2\u8003&nbsp;\u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u5f00\u53d1\uff0871\uff09OAuth2.0\u7f51\u9875\u6388\u6743 \u5728\u5fae\u4fe1\u652f\u4ed8\u7684Demo\u4e2d\uff0c\u5176\u4ee3\u7801\u4e3a &nbsp;1&nbsp;\/\/\u4f7f\u7528jsapi\u63a5\u53e3&nbsp;2&nbsp;$jsApi&nbsp;=&nbsp;new&nbsp;JsApi_pub();&nbsp;3&nbsp;&nbsp;4&nbsp;\/\/=========\u6b65\u9aa41\uff1a\u7f51\u9875\u6388\u6743\u83b7\u53d6\u7528\u6237openid============&nbsp;5&nbsp;\/\/\u901a\u8fc7code\u83b7\u5f97openid&nbsp;6&nbsp;if&nbsp;(!isset($_GET[&#8216;code&#8217;]))&nbsp;7&nbsp;{&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u89e6\u53d1\u5fae\u4fe1\u8fd4\u56decode\u7801&nbsp;9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$url&nbsp;=&nbsp;$jsApi-&amp;gt;createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Header(&#8220;Location:&nbsp;$url&#8221;);&nbsp; 11&nbsp;}else12&nbsp;{13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/\u83b7\u53d6code\u7801\uff0c\u4ee5\u83b7\u53d6openid14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$code&nbsp;=&nbsp;$_GET[&#8216;code&#8217;];15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$jsApi-&amp;gt;setCode($code);16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$openid&nbsp;=&nbsp;$jsApi-&amp;gt;getOpenId();17&nbsp;} \u767b\u5f55\u540e\u590d\u5236 \u8fd9\u4e00\u6b65\u7684\u6700\u7ec8\u7ed3\u679c\u5c31\u662f\u83b7\u5f97\u4e86\u5f53\u524d\u7528\u6237\u7684openid ou9dHt0L8qFLI1foP-kj5x1mDWsM \u767b\u5f55\u540e\u590d\u5236 2. \u7edf\u4e00\u652f\u4ed8 \u7edf\u4e00\u652f\u4ed8\u662fJSAPI\/NATIVE\/APP\u5404\u79cd\u652f\u4ed8\u573a\u666f\u4e0b\u751f\u6210\u652f\u4ed8\u8ba2\u5355\uff0c\u8fd4\u56de\u9884\u652f\u4ed8\u8ba2\u5355\u53f7\u7684\u63a5\u53e3\uff0c\u76ee\u524d\u5fae\u4fe1\u652f\u4ed8\u6240\u6709\u573a\u666f\u5747\u4f7f\u7528\u8fd9\u4e00\u63a5\u53e3\u7edf\u4e00\u652f\u4ed8\u4e2d\u4ee5\u4e0b\u53c2\u6570\u4ece\u914d\u7f6e\u4e2d\u83b7\u53d6\uff0c\u6216\u7531\u7c7b\u81ea\u52a8\u751f\u6210\uff0c\u4e0d\u9700\u8981\u7528\u6237\u586b\u5199 $this-&amp;gt;parameters[&#8220;appid&#8221;]&nbsp;=&nbsp;WxPayConf_pub::APPID;\/\/\u516c\u4f17\u8d26\u53f7ID$this-&amp;gt;parameters[&#8220;mch_id&#8221;]&nbsp;=&nbsp;WxPayConf_pub::MCHID;\/\/\u5546\u6237\u53f7$this-&amp;gt;parameters[&#8220;spbill_create_ip&#8221;]&nbsp;=&nbsp;$_SERVER[&#8216;REMOTE_ADDR&#8217;];\/\/\u7ec8\u7aefip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;parameters[&#8220;nonce_str&#8221;]&nbsp;=&nbsp;$this-&amp;gt;createNoncestr();\/\/\u968f\u673a\u5b57\u7b26\u4e32$this-&amp;gt;parameters[&#8220;sign&#8221;]&nbsp;=&nbsp;$this-&amp;gt;getSign($this-&amp;gt;parameters);\/\/\u7b7e\u540d \u767b\u5f55\u540e\u590d\u5236 \u5728JSAPI\u652f\u4ed8\u4e2d\uff0c\u53e6\u5916\u586b\u5199\u4ee5\u4e0b\u53c2\u6570 \/\/\u7edf\u4e00\u652f\u4ed8\u63a5\u53e3\u4e2d\uff0ctrade_type\u4e3aJSAPI\u65f6\uff0copenid\u4e3a\u5fc5\u586b\u53c2\u6570\uff01$unifiedOrder-&amp;gt;setParameter(&#8220;openid&#8221;,&#8221;$openid&#8221;);\/\/\u5546\u54c1\u63cf\u8ff0$unifiedOrder-&amp;gt;setParameter(&#8220;body&#8221;,&#8221;\u65b9\u500d\u5de5\u4f5c\u5ba4&#8221;);\/\/\u5546\u54c1\u63cf\u8ff0 \/\/\u81ea\u5b9a\u4e49\u8ba2\u5355\u53f7\uff0c\u6b64\u5904\u4ec5\u4f5c\u4e3e\u4f8b$timeStamp&nbsp;=&nbsp;time();$out_trade_no&nbsp;=&nbsp;WxPayConf_pub::APPID.&#8221;$timeStamp&#8221;;$unifiedOrder-&amp;gt;setParameter(&#8220;out_trade_no&#8221;,&#8221;$out_trade_no&#8221;);\/\/\u5546\u6237\u8ba2\u5355\u53f7&nbsp;$unifiedOrder-&amp;gt;setParameter(&#8220;total_fee&#8221;,&#8221;1&#8243;);\/\/\u603b\u91d1\u989d$unifiedOrder-&amp;gt;setParameter(&#8220;notify_url&#8221;,WxPayConf_pub::NOTIFY_URL);\/\/\u901a\u77e5\u5730\u5740&nbsp;$unifiedOrder-&amp;gt;setParameter(&#8220;trade_type&#8221;,&#8221;JSAPI&#8221;);\/\/\u4ea4\u6613\u7c7b\u578b \u767b\u5f55\u540e\u590d\u5236 \u5176\u4ed6\u4e3a\u9009\u586b\u53c2\u6570 \/\/\u975e\u5fc5\u586b\u53c2\u6570\uff0c\u5546\u6237\u53ef\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u9009\u586b \/\/$unifiedOrder-&amp;gt;setParameter(&#8220;sub_mch_id&#8221;,&#8221;XXXX&#8221;);\/\/\u5b50\u5546\u6237\u53f7&nbsp;&nbsp; \/\/$unifiedOrder-&amp;gt;setParameter(&#8220;device_info&#8221;,&#8221;XXXX&#8221;);\/\/\u8bbe\u5907\u53f7&nbsp; \/\/$unifiedOrder-&amp;gt;setParameter(&#8220;attach&#8221;,&#8221;XXXX&#8221;);\/\/\u9644\u52a0\u6570\u636e&nbsp; \/\/$unifiedOrder-&amp;gt;setParameter(&#8220;time_start&#8221;,&#8221;XXXX&#8221;);\/\/\u4ea4\u6613\u8d77\u59cb\u65f6\u95f4 \/\/$unifiedOrder-&amp;gt;setParameter(&#8220;time_expire&#8221;,&#8221;XXXX&#8221;);\/\/\u4ea4\u6613\u7ed3\u675f\u65f6\u95f4&nbsp; \/\/$unifiedOrder-&amp;gt;setParameter(&#8220;goods_tag&#8221;,&#8221;XXXX&#8221;);\/\/\u5546\u54c1\u6807\u8bb0&nbsp; \/\/$unifiedOrder-&amp;gt;setParameter(&#8220;openid&#8221;,&#8221;XXXX&#8221;);\/\/\u7528\u6237\u6807\u8bc6 \/\/$unifiedOrder-&amp;gt;setParameter(&#8220;product_id&#8221;,&#8221;XXXX&#8221;);\/\/\u5546\u54c1ID \u767b\u5f55\u540e\u590d\u5236 \u8fd9\u4e9b\u53c2\u6570\u6700\u7ec8\u7ec4\u6210\u4e86\u8fd9\u6837\u7684xml\u6570\u636e\uff0c &lt;xml&gt; &nbsp;&nbsp;&lt;openid&gt;&lt;\/openid&gt; &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-29944","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29944","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=29944"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29944\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=29944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=29944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=29944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}