{"id":32995,"date":"2024-11-25T14:11:14","date_gmt":"2024-11-25T06:11:14","guid":{"rendered":"https:\/\/fwq.ai\/blog\/32995\/"},"modified":"2024-11-25T14:11:14","modified_gmt":"2024-11-25T06:11:14","slug":"%e5%b0%8f%e7%a8%8b%e5%ba%8f%e6%80%8e%e4%b9%88%e5%ae%9e%e7%8e%b0%e5%be%ae%e4%bf%a1%e6%94%af%e4%bb%98","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/32995\/","title":{"rendered":"\u5c0f\u7a0b\u5e8f\u600e\u4e48\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/039\/5e8164265a3e4980.jpg\" class=\"aligncenter\" title=\"\u5c0f\u7a0b\u5e8f\u600e\u4e48\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8\u63d2\u56fe\" alt=\"\u5c0f\u7a0b\u5e8f\u600e\u4e48\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8\u63d2\u56fe\" \/><\/p>\n<p>\u5c0f\u7a0b\u5e8f\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8\u7684\u65b9\u6cd5\uff1a<\/p>\n<p>\u524d\u671f\u51c6\u5907\uff1a<\/p>\n<p>1.\u5f00\u901a\u4e86\u5fae\u4fe1\u652f\u4ed8\uff0c\u5e76\u4e14\u5c0f\u7a0b\u5e8f\u7ed1\u5b9a\u4e86\u5fae\u4fe1\u652f\u4ed8\uff1b<\/p>\n<p>2.\u51c6\u5907\u597d\u5c0f\u7a0b\u5e8f\u7684appid\uff0c\u5fae\u4fe1\u652f\u4ed8\u7684\u5546\u6237\u53f7\uff0c\u652f\u4ed8\u79d8\u94a5\u3002<\/p>\n<p>\u5546\u6237\u7cfb\u7edf\u548c\u5fae\u4fe1\u652f\u4ed8\u7cfb\u7edf\u4e3b\u8981\u4ea4\u4e92\uff1a<\/p>\n<p>1\u3001\u5c0f\u7a0b\u5e8f\u5185\u8c03\u7528\u767b\u5f55\u63a5\u53e3\uff0c\u83b7\u53d6\u5230\u7528\u6237\u7684openid<\/p>\n<p>2\u3001\u8c03\u7528\u5546\u6237\u670d\u52a1\u5668\u652f\u4ed8\u7edf\u4e00\u4e0b\u5355\u63a5\u53e3\uff0c\u8fdb\u884c\u9884\u652f\u4ed8<\/p>\n<pre>\/**\n&nbsp;*&nbsp;\u9884\u652f\u4ed8\u8bf7\u6c42\u63a5\u53e3(POST)\n&nbsp;*&nbsp;@param&nbsp;string&nbsp;$openid&nbsp;\topenid\n&nbsp;*&nbsp;@param&nbsp;string&nbsp;$body&nbsp;\t\t\u5546\u54c1\u7b80\u5355\u63cf\u8ff0\n&nbsp;*&nbsp;@param&nbsp;string&nbsp;$order_sn&nbsp;&nbsp;\u8ba2\u5355\u7f16\u53f7\n&nbsp;*&nbsp;@param&nbsp;string&nbsp;$total_fee&nbsp;\u91d1\u989d\n&nbsp;*&nbsp;@return&nbsp;&nbsp;json\u7684\u6570\u636e\n&nbsp;*\/\npublic&nbsp;function&nbsp;prepay(){\n\t$config&nbsp;=&nbsp;$this-&amp;gt;config;\n\t\n\t$openid&nbsp;=&nbsp;I('post.openid');\n\t$body&nbsp;=&nbsp;I('post.body');\n\t$order_sn&nbsp;=&nbsp;I('post.order_sn');\n\t$total_fee&nbsp;=&nbsp;I('post.total_fee');\n\t\n\t\/\/\u7edf\u4e00\u4e0b\u5355\u53c2\u6570\u6784\u9020\n\t$unifiedorder&nbsp;=&nbsp;array(\n\t\t'appid'\t\t\t=&amp;gt;&nbsp;$config['appid'],\n\t\t'mch_id'\t\t=&amp;gt;&nbsp;$config['pay_mchid'],\n\t\t'nonce_str'\t\t=&amp;gt;&nbsp;self::getNonceStr(),\n\t\t'body'\t\t\t=&amp;gt;&nbsp;$body,\n\t\t'out_trade_no'\t=&amp;gt;&nbsp;$order_sn,\n\t\t'total_fee'\t\t=&amp;gt;&nbsp;$total_fee&nbsp;*&nbsp;100,\n\t\t'spbill_create_ip'\t=&amp;gt;&nbsp;get_client_ip(),\n\t\t'notify_url'\t=&amp;gt;&nbsp;'https:\/\/'.$_SERVER['HTTP_HOST'].'\/Api\/Wxpay\/notify',\n\t\t'trade_type'\t=&amp;gt;&nbsp;'JSAPI',\n\t\t'openid'\t\t=&amp;gt;&nbsp;$openid\n\t);\n\t$unifiedorder['sign']&nbsp;=&nbsp;self::makeSign($unifiedorder);\n\t\/\/\u8bf7\u6c42\u6570\u636e\n\t$xmldata&nbsp;=&nbsp;self::array2xml($unifiedorder);\n\t$url&nbsp;=&nbsp;'https:\/\/api.mch.weixin.qq.com\/pay\/unifiedorder';\n\t$res&nbsp;=&nbsp;self::curl_post_ssl($url,&nbsp;$xmldata);\n\tif(!$res){\n\t\tself::return_err(\"Can't&nbsp;connect&nbsp;the&nbsp;server\");\n\t}\n\t\/\/&nbsp;\u8fd9\u53e5file_put_contents\u662f\u7528\u6765\u67e5\u770b\u670d\u52a1\u5668\u8fd4\u56de\u7684\u7ed3\u679c&nbsp;\u6d4b\u8bd5\u5b8c\u53ef\u4ee5\u5220\u9664\u4e86\n\t\/\/file_put_contents(APP_ROOT.'\/Statics\/log1.txt',$res,FILE_APPEND);\n\t\n\t$content&nbsp;=&nbsp;self::xml2array($res);\n\tif(strval($content['result_code'])&nbsp;==&nbsp;'FAIL'){\n\t\tself::return_err(strval($content['err_code_des']));\n\t}\n\tif(strval($content['return_code'])&nbsp;==&nbsp;'FAIL'){\n\t\tself::return_err(strval($content['return_msg']));\n\t}\n\tself::return_data(array('data'=&amp;gt;$content));\n\t\/\/$this-&amp;gt;ajaxReturn($content);\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>3\u3001\u8c03\u7528\u5546\u6237\u670d\u52a1\u5668\u518d\u6b21\u7b7e\u540d\u63a5\u53e3\uff0c\u8fd4\u56de\u652f\u4ed8\u6570\u636e<\/p>\n<pre>\/**\n&nbsp;*&nbsp;\u8fdb\u884c\u652f\u4ed8\u63a5\u53e3(POST)\n&nbsp;*&nbsp;@param&nbsp;string&nbsp;$prepay_id&nbsp;\u9884\u652f\u4ed8ID(\u8c03\u7528prepay()\u65b9\u6cd5\u4e4b\u540e\u7684\u8fd4\u56de\u6570\u636e\u4e2d\u83b7\u53d6)\n&nbsp;*&nbsp;@return&nbsp;&nbsp;json\u7684\u6570\u636e\n&nbsp;*\/\npublic&nbsp;function&nbsp;pay(){\n\t$config&nbsp;=&nbsp;$this-&amp;gt;config;\n\t$prepay_id&nbsp;=&nbsp;I('post.prepay_id');\n\t\n\t$data&nbsp;=&nbsp;array(\n\t\t'appId'\t\t=&amp;gt;&nbsp;$config['appid'],\n\t\t'timeStamp'\t=&amp;gt;&nbsp;time(),\n\t\t'nonceStr'\t=&amp;gt;&nbsp;self::getNonceStr(),\n\t\t'package'\t=&amp;gt;&nbsp;'prepay_id='.$prepay_id,\n\t\t'signType'\t=&amp;gt;&nbsp;'MD5'\n\t);\n\t\n\t$data['paySign']&nbsp;=&nbsp;self::makeSign($data);\n\t\n\t$this-&amp;gt;ajaxReturn($data);\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>4\u3001\u5c0f\u7a0b\u5e8f\u5185\u5b8c\u6210\u652f\u4ed8\uff0c\u5546\u6237\u670d\u52a1\u5668\u63a5\u6536\u652f\u4ed8\u56de\u8c03\u901a\u77e5<\/p>\n<p>\u5c0f\u7a0b\u5e8f\u7aef\u4ee3\u7801:<\/p>\n<pre>wx.requestPayment({\n&nbsp;&nbsp;&nbsp;'timeStamp':&nbsp;'',\n&nbsp;&nbsp;&nbsp;'nonceStr':&nbsp;'',\n&nbsp;&nbsp;&nbsp;'package':&nbsp;'',\n&nbsp;&nbsp;&nbsp;'signType':&nbsp;'MD5',\n&nbsp;&nbsp;&nbsp;'paySign':&nbsp;'',\n&nbsp;&nbsp;&nbsp;'success':function(res){\n&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;'fail':function(res){\n&nbsp;&nbsp;&nbsp;}\n})<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u670d\u52a1\u5668\u56de\u8c03\u901a\u77e5:<\/p>\n<pre>\/\/\u5fae\u4fe1\u652f\u4ed8\u56de\u8c03\u9a8c\u8bc1\npublic&nbsp;function&nbsp;notify(){\n\t$xml&nbsp;=&nbsp;$GLOBALS['HTTP_RAW_POST_DATA'];\n\t\n\t\/\/&nbsp;\u8fd9\u53e5file_put_contents\u662f\u7528\u6765\u67e5\u770b\u670d\u52a1\u5668\u8fd4\u56de\u7684XML\u6570\u636e&nbsp;\u6d4b\u8bd5\u5b8c\u53ef\u4ee5\u5220\u9664\u4e86\n\t\/\/file_put_contents(APP_ROOT.'\/Statics\/log2.txt',$res,FILE_APPEND);\n\t\n\t\/\/\u5c06\u670d\u52a1\u5668\u8fd4\u56de\u7684XML\u6570\u636e\u8f6c\u5316\u4e3a\u6570\u7ec4\n\t$data&nbsp;=&nbsp;self::xml2array($xml);\n\t\/\/&nbsp;\u4fdd\u5b58\u5fae\u4fe1\u670d\u52a1\u5668\u8fd4\u56de\u7684\u7b7e\u540dsign\n\t$data_sign&nbsp;=&nbsp;$data['sign'];\n\t\/\/&nbsp;sign\u4e0d\u53c2\u4e0e\u7b7e\u540d\u7b97\u6cd5\n\tunset($data['sign']);\n\t$sign&nbsp;=&nbsp;self::makeSign($data);\n\t\n\t\/\/&nbsp;\u5224\u65ad\u7b7e\u540d\u662f\u5426\u6b63\u786e&nbsp;&nbsp;\u5224\u65ad\u652f\u4ed8\u72b6\u6001\n\tif&nbsp;(&nbsp;($sign===$data_sign)&nbsp;&amp;amp;&amp;amp;&nbsp;($data['return_code']=='SUCCESS')&nbsp;&amp;amp;&amp;amp;&nbsp;($data['result_code']=='SUCCESS')&nbsp;)&nbsp;{\n\t\t$result&nbsp;=&nbsp;$data;\n\t\t\/\/\u83b7\u53d6\u670d\u52a1\u5668\u8fd4\u56de\u7684\u6570\u636e\n\t\t$order_sn&nbsp;=&nbsp;$data['out_trade_no'];\t\t\t\/\/\u8ba2\u5355\u5355\u53f7\n\t\t$openid&nbsp;=&nbsp;$data['openid'];\t\t\t\t\t\/\/\u4ed8\u6b3e\u4ebaopenID\n\t\t$total_fee&nbsp;=&nbsp;$data['total_fee'];\t\t\t\/\/\u4ed8\u6b3e\u91d1\u989d\n\t\t$transaction_id&nbsp;=&nbsp;$data['transaction_id'];&nbsp;\t\/\/\u5fae\u4fe1\u652f\u4ed8\u6d41\u6c34\u53f7\n\t\t\n\t\t\/\/\u66f4\u65b0\u6570\u636e\u5e93\n\t\t$this-&amp;gt;updateDB($order_sn,$openid,$total_fee,$transaction_id);\n\t\t\n\t}else{\n\t\t$result&nbsp;=&nbsp;false;\n\t}\n\t\/\/&nbsp;\u8fd4\u56de\u72b6\u6001\u7ed9\u5fae\u4fe1\u670d\u52a1\u5668\n\tif&nbsp;($result)&nbsp;{\n\t\t$str='&lt;xml&gt;&lt;return_code&gt;&lt;\/return_code&gt;&lt;return_msg&gt;&lt;\/return_msg&gt;&lt;\/xml&gt;';\n\t}else{\n\t\t$str='&lt;xml&gt;&lt;return_code&gt;&lt;\/return_code&gt;&lt;return_msg&gt;&lt;\/return_msg&gt;&lt;\/xml&gt;';\n\t}\n\techo&nbsp;$str;\n\treturn&nbsp;$result;\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u5c0f\u7a0b\u5e8f\u7aef\u5b8c\u6574\u4ee3\u7801\u5982\u4e0b:<\/p>\n<pre>\/**\n&nbsp;*&nbsp;\u652f\u4ed8\u51fd\u6570\n&nbsp;*&nbsp;@param&nbsp;&nbsp;{[type]}&nbsp;_payInfo&nbsp;[description]\n&nbsp;*&nbsp;@return&nbsp;{[type]}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[description]\n&nbsp;*\/\npay:function(_payInfo,success,fail){\n\tvar&nbsp;payInfo&nbsp;=&nbsp;{\n\t\tbody:'',\n\t\ttotal_fee:0,\n\t\torder_sn:''\n\t}\n\tObject.assign(payInfo,&nbsp;_payInfo);\n\tif(payInfo.body.length==0){\n\t\twx.showToast({\n\t\t\ttitle:'\u652f\u4ed8\u4fe1\u606f\u63cf\u8ff0\u9519\u8bef'\n\t\t})\n\t\treturn&nbsp;false;\n\t}\n\tif(payInfo.total_fee==0){\n\t\twx.showToast({\n\t\t\ttitle:'\u652f\u4ed8\u91d1\u989d\u4e0d\u80fd0'\n\t\t})\n\t\treturn&nbsp;false;&nbsp;\n\t}\n\tif(payInfo.order_sn.length==0){\n\t\twx.showToast({\n\t\t\ttitle:'\u8ba2\u5355\u53f7\u4e0d\u80fd\u4e3a\u7a7a'\n\t\t})\n\t\treturn&nbsp;false;&nbsp;\n\t}\n\tvar&nbsp;This&nbsp;=&nbsp;this;\n\tThis.getOpenid(function(openid){\n\t\tpayInfo.openid=openid;\n\t\tThis.request({\n\t\t\turl:'api\/pay\/prepay',\n\t\t\tdata:payInfo,\n\t\t\tsuccess:function(res){\n\t\t\t\tvar&nbsp;data&nbsp;=&nbsp;res.data;\n\t\t\t\tconsole.log(data);\n\t\t\t\tif(!data.status){\n\t\t\t\t\twx.showToast({\n\t\t\t\t\t\ttitle:data['errmsg']\n\t\t\t\t\t})\n\t\t\t\t\treturn&nbsp;false;\n\t\t\t\t}\n\t\t\t\tThis.request({\n\t\t\t\t\turl:'api\/pay\/pay',\n\t\t\t\t\tdata:{prepay_id:data.data.data.prepay_id},\n\t\t\t\t\tsuccess:function(_payResult){\n\t\t\t\t\t\tvar&nbsp;payResult&nbsp;=&nbsp;_payResult.data;\n\t\t\t\t\t\tconsole.log(payResult);\n\t\t\t\t\t\twx.requestPayment({\n\t\t\t\t\t\t\t'timeStamp':&nbsp;payResult.timeStamp.toString(),\n\t\t\t\t\t\t\t'nonceStr':&nbsp;payResult.nonceStr,\n\t\t\t\t\t\t\t'package':&nbsp;payResult.package,\n\t\t\t\t\t\t\t'signType':&nbsp;payResult.signType,\n\t\t\t\t\t\t\t'paySign':&nbsp;payResult.paySign,\n\t\t\t\t\t\t\t'success':&nbsp;function&nbsp;(succ)&nbsp;{\n\t\t\t\t\t\t\t\tsuccess&amp;amp;&amp;amp;success(succ);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'fail':&nbsp;function&nbsp;(err)&nbsp;{\n\t\t\t\t\t\t\t\tfail&amp;amp;&amp;amp;fail(err);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'complete':&nbsp;function&nbsp;(comp)&nbsp;{&nbsp;\n&nbsp;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})&nbsp;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t})\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u63a8\u8350\uff1a\u300a\u300b<\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u5c0f\u7a0b\u5e8f\u600e\u4e48\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5c0f\u7a0b\u5e8f\u5b9e\u73b0\u5fae\u4fe1\u652f\u4ed8\u7684\u65b9\u6cd5\uff1a \u524d\u671f\u51c6\u5907\uff1a 1.\u5f00\u901a\u4e86\u5fae\u4fe1\u652f\u4ed8\uff0c\u5e76\u4e14\u5c0f\u7a0b\u5e8f\u7ed1\u5b9a\u4e86\u5fae\u4fe1\u652f\u4ed8\uff1b 2.\u51c6\u5907\u597d\u5c0f\u7a0b\u5e8f\u7684appid\uff0c\u5fae\u4fe1\u652f\u4ed8\u7684\u5546\u6237\u53f7\uff0c\u652f\u4ed8\u79d8\u94a5\u3002 \u5546\u6237\u7cfb\u7edf\u548c\u5fae\u4fe1\u652f\u4ed8\u7cfb\u7edf\u4e3b\u8981\u4ea4\u4e92\uff1a 1\u3001\u5c0f\u7a0b\u5e8f\u5185\u8c03\u7528\u767b\u5f55\u63a5\u53e3\uff0c\u83b7\u53d6\u5230\u7528\u6237\u7684openid 2\u3001\u8c03\u7528\u5546\u6237\u670d\u52a1\u5668\u652f\u4ed8\u7edf\u4e00\u4e0b\u5355\u63a5\u53e3\uff0c\u8fdb\u884c\u9884\u652f\u4ed8 \/** &nbsp;*&nbsp;\u9884\u652f\u4ed8\u8bf7\u6c42\u63a5\u53e3(POST) &nbsp;*&nbsp;@param&nbsp;string&nbsp;$openid&nbsp; openid &nbsp;*&nbsp;@param&nbsp;string&nbsp;$body&nbsp; \u5546\u54c1\u7b80\u5355\u63cf\u8ff0 &nbsp;*&nbsp;@param&nbsp;string&nbsp;$order_sn&nbsp;&nbsp;\u8ba2\u5355\u7f16\u53f7 &nbsp;*&nbsp;@param&nbsp;string&nbsp;$total_fee&nbsp;\u91d1\u989d &nbsp;*&nbsp;@return&nbsp;&nbsp;json\u7684\u6570\u636e &nbsp;*\/ public&nbsp;function&nbsp;prepay(){ $config&nbsp;=&nbsp;$this-&amp;gt;config; $openid&nbsp;=&nbsp;I(&#8216;post.openid&#8217;); $body&nbsp;=&nbsp;I(&#8216;post.body&#8217;); $order_sn&nbsp;=&nbsp;I(&#8216;post.order_sn&#8217;); $total_fee&nbsp;=&nbsp;I(&#8216;post.total_fee&#8217;); \/\/\u7edf\u4e00\u4e0b\u5355\u53c2\u6570\u6784\u9020 $unifiedorder&nbsp;=&nbsp;array( &#8216;appid&#8217; =&amp;gt;&nbsp;$config[&#8216;appid&#8217;], &#8216;mch_id&#8217; =&amp;gt;&nbsp;$config[&#8216;pay_mchid&#8217;], &#8216;nonce_str&#8217; =&amp;gt;&nbsp;self::getNonceStr(), &#8216;body&#8217; =&amp;gt;&nbsp;$body, &#8216;out_trade_no&#8217; =&amp;gt;&nbsp;$order_sn, &#8216;total_fee&#8217; =&amp;gt;&nbsp;$total_fee&nbsp;*&nbsp;100, &#8216;spbill_create_ip&#8217; =&amp;gt;&nbsp;get_client_ip(), &#8216;notify_url&#8217; =&amp;gt;&nbsp;&#8216;https:\/\/&#8217;.$_SERVER[&#8216;HTTP_HOST&#8217;].&#8217;\/Api\/Wxpay\/notify&#8217;, &#8216;trade_type&#8217; =&amp;gt;&nbsp;&#8216;JSAPI&#8217;, &#8216;openid&#8217; =&amp;gt;&nbsp;$openid ); $unifiedorder[&#8216;sign&#8217;]&nbsp;=&nbsp;self::makeSign($unifiedorder); \/\/\u8bf7\u6c42\u6570\u636e $xmldata&nbsp;=&nbsp;self::array2xml($unifiedorder); $url&nbsp;=&nbsp;&#8216;https:\/\/api.mch.weixin.qq.com\/pay\/unifiedorder&#8217;; $res&nbsp;=&nbsp;self::curl_post_ssl($url,&nbsp;$xmldata); if(!$res){ self::return_err(&#8220;Can&#8217;t&nbsp;connect&nbsp;the&nbsp;server&#8221;); } \/\/&nbsp;\u8fd9\u53e5file_put_contents\u662f\u7528\u6765\u67e5\u770b\u670d\u52a1\u5668\u8fd4\u56de\u7684\u7ed3\u679c&nbsp;\u6d4b\u8bd5\u5b8c\u53ef\u4ee5\u5220\u9664\u4e86 [&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-32995","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/32995","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=32995"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/32995\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=32995"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=32995"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=32995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}