{"id":2354,"date":"2021-03-11T15:07:07","date_gmt":"2021-03-11T07:07:07","guid":{"rendered":"https:\/\/blog.brain1981.com\/?p=2354"},"modified":"2022-05-19T19:45:16","modified_gmt":"2022-05-19T11:45:16","slug":"%e5%9f%ba%e4%ba%8ewordpress%e7%9a%84%e5%be%ae%e4%bf%a1%e5%b0%8f%e7%a8%8b%e5%ba%8f%e6%94%af%e4%bb%98%e5%8a%9f%e8%83%bd%e5%bc%80%e5%8f%91","status":"publish","type":"post","link":"https:\/\/blog.brain1981.com\/2354.html","title":{"rendered":"\u57fa\u4e8eWordPress\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1"},"content":{"rendered":"<p>\u6211\u57282018\u5e74\u7684\u65f6\u5019\u603b\u7ed3\u8fc7\u4e00\u7bc7<a href=\"https:\/\/blog.brain1981.com\/1946.html\" rel=\"noopener\" target=\"_blank\">\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1\u4e0e\u8e29\u5751\u7ecf\u9a8c\u603b\u7ed3<\/a>\uff0c\u5f53\u65f6\u56e0\u4e3a\u7f51\u4e0a\u76f8\u5173\u6587\u6863\u548c\u8d44\u6e90\u7684\u7f3a\u4e4f\uff0c\u6587\u7ae0\u83b7\u5f97\u4e86\u5f88\u591a\u5173\u6ce8\u548c\u8f6c\u8f7d\uff0c\u5e76\u4e14\u4e5f\u6709\u5f88\u591a\u4eba\u6307\u51fa\u4e86\u5176\u4e2d\u7684\u4e0d\u8db3\u3002\u4e3b\u8981\u4e0d\u8db3\u4e4b\u5904\u5c31\u5728\u4e8e\u90a3\u7bc7\u6587\u7ae0\u628a\u6240\u6709\u7684\u7b7e\u540d\u5b57\u4e32\u5c01\u88c5\u90fd\u653e\u5230\u4e86\u524d\u7aef\uff0c\u4e5f\u5c31\u662f\u5c0f\u7a0b\u5e8f\u91cc\uff0c\u901a\u8fc7JS\u5b9e\u73b0\uff0c\u5176\u4e2d\u8fd8\u6d89\u53ca\u5230\u4e86\u5546\u6237key\u8fd9\u6837\u7684\u654f\u611f\u5b57\u6bb5\uff0c\u56e0\u6b64\u662f\u4e0d\u5b89\u5168\u7684\u3002\u4e0d\u8fc7\u57283\u5e74\u524d\u5fae\u4fe1\u672c\u8eab\u5bf9\u8fd9\u5757\u4e5f\u6ca1\u6709\u505a\u5f88\u4e25\u683c\u7684\u9650\u5236\uff0c\u6bd4\u5982\u6211\u628a\u5bf9\u201chttps:\/\/api.mch.weixin.qq.com\/pay\/unifiedorder&#8221;\u8fd9\u4e2a\u63a5\u53e3\u7684\u8bf7\u6c42\u653e\u5728\u5c0f\u7a0b\u5e8f\u91cc\uff0c\u90a3\u65f6\u5019\u7167\u6837\u662f\u80fd\u8fd0\u884c\u7684\u3002<\/p>\n<p>\u8fd1\u671f\uff0c\u628a\u5c0f\u7a0b\u5e8f\u7684\u57fa\u7840\u5e93\u6539\u6210\u8fd1\u671f\u7248\u672c\u540e\uff0c\u6211\u53d1\u73b0\u201chttps:\/\/api.mch.weixin.qq.com\/pay\/unifiedorder&#8221;\u8fd9\u4e2a\u63a5\u53e3\u7684\u8bf7\u6c42\u5df2\u7ecf\u4e0d\u80fd\u653e\u5728\u5c0f\u7a0b\u5e8f\u91cc\u4e86\uff0c\u5373\u4f7f\u6b64\u57df\u540d\u5df2\u7ecf\u52a0\u5165\u5230request\u5b89\u5168\u57df\u540d\u4e0b\u4e5f\u65e0\u6548\uff0c\u5fae\u4fe1\u90a3\u8fb9\u4f1a\u81ea\u52a8\u628a\u4f60\u52a0\u5165\u7684\u8fd9\u4e2a\u57df\u540d\u8fc7\u6ee4\u6389\u3002\u8fd9\u5c31\u8868\u793a\u4e00\u7cfb\u5217\u7684\u8bf7\u6c42\u5fc5\u987b\u653e\u5230\u670d\u52a1\u5668\u4e0a\u5b8c\u6210\u4e86\u3002\u56e0\u6b64\u6211\u91cd\u65b0\u6574\u7406\u4e86\u4e00\u4e0b\u540e\u7aef\u7684\u4ee3\u7801\uff0cPHP\u7248\u672c\u7684\u3002\u5e76\u4e14\u56e0\u4e3a\u6211\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u90fd\u662f\u57fa\u4e8eWordPress\u505a\u540e\u7aef\u7684\uff0c\u7d22\u6027\u628a\u81ea\u5b9a\u4e49\u7684\u63a5\u53e3\u8fd9\u5757\u4e5f\u7f1d\u5408\u8fc7\u6765\u3002<\/p>\n<p>\u5f53\u524d\u6700\u65b0\u7248\u8c03\u8bd5\u901a\u8fc7\uff1a<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.brain1981.com\/wp-content\/uploads\/2021\/03\/wx_pay-1.jpg\" alt=\"\" width=\"1243\" height=\"992\" class=\"alignnone size-full wp-image-2372\" srcset=\"https:\/\/blog.brain1981.com\/wp-content\/uploads\/2021\/03\/wx_pay-1.jpg 1243w, https:\/\/blog.brain1981.com\/wp-content\/uploads\/2021\/03\/wx_pay-1-300x239.jpg 300w, https:\/\/blog.brain1981.com\/wp-content\/uploads\/2021\/03\/wx_pay-1-1024x817.jpg 1024w, https:\/\/blog.brain1981.com\/wp-content\/uploads\/2021\/03\/wx_pay-1-768x613.jpg 768w, https:\/\/blog.brain1981.com\/wp-content\/uploads\/2021\/03\/wx_pay-1-624x498.jpg 624w\" sizes=\"auto, (max-width: 1243px) 100vw, 1243px\" \/><br \/>\n\u6253\u5305\u4ee3\u7801\u5982\u4e0b\uff1a<!--more--><\/p>\n<pre lang=\"PHP\" line=\"1\">\r\n\/* Author: Brain - blog.brain1981.com *\/\r\n\/\/\u7528\u4e8e\u5c01\u88c5\u5404\u79cd\u7528\u5f97\u5230\u7684\u5b57\u4e32\u5904\u7406\u65b9\u6cd5\r\nclass wx_pay_funcs{\r\n\tfunction postXmlCurl($xml, $url, $useCert = false, $second = 10){\r\n\t\t$ch = curl_init();\r\n\t\tcurl_setopt($ch, CURLOPT_TIMEOUT, $second);\r\n\t\tcurl_setopt($ch,CURLOPT_URL, $url);\r\n\t\tcurl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);\r\n\t\tcurl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);\r\n\t\tcurl_setopt($ch, CURLOPT_HEADER, FALSE);\r\n\t\tcurl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);\r\n\t\tcurl_setopt($ch, CURLOPT_POST, TRUE);\r\n\t\tcurl_setopt($ch, CURLOPT_POSTFIELDS, $xml);\r\n\t\t$data = curl_exec($ch);\r\n\t\t\/\/\u8fd4\u56de\u7ed3\u679c\r\n\t\tif($data){\r\n\t\t\tcurl_close($ch);\r\n\t\t\treturn $data;\r\n\t\t} else {\r\n\t\t\t$error = curl_errno($ch);\r\n\t\t\tcurl_close($ch);\r\n\t\t\treturn $error;\r\n\t\t}\r\n\t}\r\n\t\/\/\u5fae\u4fe1\u652f\u4ed8\u7b7e\u540d\u5b57\u7b26\u4e32\u4e32\u8054\r\n\tfunction toUrlParams($data){\r\n\t\t$buff = \"\";\r\n\t\tforeach ($data as $k => $v) {\r\n\t\t\tif($k != \"sign\" && $v != \"\" && !is_array($v)){\r\n\t\t\t\t$buff .= $k . \"=\" . $v . \"&\";\r\n\t\t\t}\r\n\t\t}\r\n\t\t$buff = trim($buff, \"&\");\r\n\t\treturn $buff;\r\n\t}\r\n\t\/\/\u6570\u7ec4\u8f6cXML\r\n\tfunction arrayToXml($arr){\r\n\t\t$xml = \"<xml>\";\r\n\t\tforeach ($arr as $key=>$val) {\r\n\t\t\tif (is_numeric($val)){\r\n\t\t\t\t$xml.=\"<\".$key.\">\".$val.\"<\/\".$key.\">\";\r\n\t\t\t}else{\r\n\t\t\t\t$xml.=\"<\".$key.\"><![CDATA[\".$val.\"]]><\/\".$key.\">\";\r\n\t\t\t}\r\n\t\t}\r\n\t\t$xml.=\"<\/xml>\";\r\n\t\treturn $xml;\r\n\t}\r\n\t\/\/XML\u8f6cJSON\r\n\tfunction xml_to_json($xmlstring) {\r\n\t\t\/\/XML\u8f6c\u6570\u7ec4\r\n\t\t$xmlarray = simplexml_load_string($xmlstring,'SimpleXMLElement',LIBXML_NOCDATA);\r\n\t\treturn json_encode($xmlarray,JSON_UNESCAPED_UNICODE);\r\n\t}\r\n\t\/\/XML\u8f6c\u6570\u7ec4\r\n\tfunction xmlToArray($xml){\r\n\t\tif(!$xml){\r\n\t\t\t\/\/ \u4eba\u5de5\u629b\u51fa\u9519\u8bef\r\n\t\t\tthrow new Exception(\"xml\u6570\u636e\u5f02\u5e38\uff01\");\r\n\t\t}\r\n\t\t\/\/\u5c06XML\u8f6c\u4e3aarray\r\n\t\t\/\/\u7981\u6b62\u5f15\u7528\u5916\u90e8xml\u5b9e\u4f53\r\n\t\tlibxml_disable_entity_loader(true);\r\n\t\t$this->values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);\r\n\t\treturn $this->values;\r\n\t}\r\n}\r\n\r\n\/\/\u4ee5\u4e0b\u662f\u8c03\u8d77\u652f\u4ed8\u8bf7\u6c42\u7684\u63a5\u53e3URL\r\n\/\/\u4f8b\uff1a https:\/\/www.abc.com\/wp-json\/wx_pay\/v1\/pay\/\r\nadd_action( 'rest_api_init', function () {\r\n\tregister_rest_route( 'wx_pay\/v1', '\/pay\/', array(\r\n\t\t'methods' => 'POST',\r\n\t\t'callback' => 'brain1981_wx_pay',\r\n\t\t'show_in_index' => false, \/\/\u6ce8\u610f\u9690\u85cf\u63a5\u53e3\r\n\t\t'permission_callback' => '__return_true'\r\n\t) );\r\n});\r\nfunction brain1981_wx_pay($request){\r\n\t\/\/\u4ec5\u4ee5\u4e0b4\u4e2a\u53d8\u91cf\u9700\u8981\u81ea\u5df1\u4fee\u6539\r\n\t$appid=\"wx...\"; \/\/\u5c0f\u7a0b\u5e8fappid\r\n\t$appsecret= \"avasdfasdf.....\"; \/\/\u5c0f\u7a0b\u5e8f\u7684secret\r\n\t$mch_id=\"1......\"; \/\/\u5546\u6237\u53f7id\r\n\t$mch_key=\"abc..........\"; \/\/\u5546\u6237\u53f7key\r\n\t\r\n\t$pay_funcs = new wx_pay_funcs;\r\n\r\n\t$total_fee = $request['total_fee']; \/\/\u652f\u4ed8\u91d1\u989d\r\n\t$openid = $request['openid']; \/\/\u7528\u6237\u7684Openid\r\n\t$order_name = $request['order_name']; \/\/\u8ba2\u5355\u540d\u79f0\r\n\tif(empty($total_fee) || empty($openid) || empty($order_name)){\r\n\t\treturn \"error, loss some parameters.\";\r\n\t}\r\n\r\n\t$total_fee = $total_fee * 100; \/\/\u652f\u4ed8\u91d1\u989d\u5355\u4f4d\u662f\u5206\r\n\t$url = \"https:\/\/api.mch.weixin.qq.com\/pay\/unifiedorder\";\r\n\r\n\t$data['appid'] = $appid;\r\n\t$data['mch_id'] = $mch_id;\r\n\t$data['nonce_str'] = md5($mch_id.time());\r\n\t$data['openid'] = $openid;\r\n\t$data['body'] = $order_name; \r\n\t$data['out_trade_no'] = date(\"YmdHis\").rand(0,1000); \/\/\u8ba2\u5355\u53f7id\r\n\t$data['total_fee'] = $total_fee;\r\n\t$data['spbill_create_ip'] = '8.8.8.8'; \/\/\u6b64\u53c2\u6570\u5728\u5c0f\u7a0b\u5e8f\u4e2d\u53ef\u4ee5\u968f\u4fbf\u586b\u4e2a\u5408\u6cd5\u7684IP\u5730\u5740\r\n\t$data['notify_url'] = \"https:\/\/www.abc.com\/wp-json\/wx_pay\/v1\/pay\/notify\/\"; \/\/\u56de\u8c03url\uff0c\u7528\u4e8e\u63a5\u6536\u652f\u4ed8\u5b8c\u6210\u540e\uff0c\u5fae\u4fe1\u8fd4\u56de\u7684\u6570\u636e\uff0c\u5176\u4e2d\u5305\u542b\u91cd\u8981\u4fe1\u606f\uff0c\u540e\u9762\u4ee3\u7801\u4f1a\u9644\u4e0a\u56de\u8c03\u5904\u7406\u90e8\u5206\r\n\t$data['trade_type'] = \"JSAPI\";\r\n\r\n\t\r\n\tksort($data); \r\n\t$sign_str = $pay_funcs->toUrlParams($data);\r\n\t$sign_str = $sign_str.\"&key=\".$mch_key;\r\n\t$data['sign'] = strtoupper(md5($sign_str));\r\n\t$xml = $pay_funcs->arrayToXml($data);\r\n\t$r = $pay_funcs->postXmlCurl($xml,$url,true);\r\n\t$result = json_decode($pay_funcs->xml_to_json($r));\r\n\r\n\t\/\/\u5982\u679c\u652f\u4ed8\u5931\u8d25\uff0c\u5728\u5c0f\u7a0b\u5e8f\u5f00\u53d1\u5de5\u5177\u4e2d\u76f4\u63a5\u8f93\u51fa\u6b64\u884c\uff0c\u53ef\u67e5\u770b\u62a5\u9519\u4fe1\u606f\r\n\t\/\/return $result;\r\n\r\n\tif($result->return_code == 'SUCCESS'){\r\n\t\t$second_data['appId'] = $appid;\r\n\t\t$second_data['timeStamp'] = time();\r\n\t\t$second_data['nonceStr'] = md5(time().rand().rand().$openid);\r\n\t\t$second_data['package'] = \"prepay_id=\".$result->prepay_id;\r\n\t\t$second_data['signType'] = \"MD5\";\r\n\r\n\t\tksort($second_data);\r\n\t\t$sign_str = $pay_funcs->toUrlParams($second_data);\r\n\t\t$sign_str = $sign_str.\"&key=\".$mch_key;\r\n\t\t$second_data['paySign'] = strtoupper(md5($sign_str));\r\n\t\t\/\/\u8fd4\u56de\u4e8c\u6b21\u7b7e\u540d\u6570\u636e\u5230\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\uff0c\u7528\u4e8e\u6700\u540e\u7684\u652f\u4ed8\u8bf7\u6c42\r\n\t\treturn $second_data;\r\n\t}else{\r\n\t\treturn \"\u7b7e\u540d\u9519\u8bef\";\r\n\t}\r\n}\r\n\r\n\/\/\u4ee5\u4e0b\u662f\u5b8c\u6210\u652f\u4ed8\u8bf7\u6c42\u7684\u63a5\u53e3URL\uff0c\u7528\u4e8e\u7f51\u7ad9\u6570\u636e\u5904\u7406\r\n\/\/\u4f8b\uff1a https:\/\/www.abc.com\/wp-json\/wx_pay\/vi\/paid\/\r\nadd_action( 'rest_api_init', function () {\r\n\tregister_rest_route( 'wx_pay\/v1', '\/paid\/', array(\r\n\t\t'methods' => 'POST',\r\n\t\t'callback' => 'brain1981_api_wx_pay_paid',\r\n\t\t'show_in_index' => false, \/\/\u6ce8\u610f\u9690\u85cf\u63a5\u53e3\r\n\t\t'permission_callback' => '__return_true'\r\n\t) );\r\n});\r\n\r\nfunction brain1981_api_wx_pay_paid( $request ){\r\n\tif( $request['action']!=\"paid\"){\r\n\t\treturn \"not a valied request.\";\r\n\t}\r\n\t\/\/\u6b64\u5904\u63d2\u5165\u81ea\u5df1\u7684\u4e1a\u52a1\u4ee3\u7801\r\n\treturn \"success\";\r\n}\r\n<\/pre>\n<p>\u6ce81\uff1a\u4ee3\u7801\u4e2dspbill_create_ip\u548cnotify_url\u8fd9\u4e24\u4e2a\u53c2\u6570\uff0c\u5728H5\u652f\u4ed8\u4e2d\u7528\u5f97\u5230\uff0c\u4f46\u662f\u5728\u5c0f\u7a0b\u5e8f\u4e2d\u662f\u53ef\u4ee5\u968f\u4fbf\u586b\u5199\u7684\uff0c\u56e0\u4e3a\u5c0f\u7a0b\u5e8f\u4e0d\u4f1a\u76f4\u63a5\u8fd4\u56de\u901a\u77e5\u9875\u9762\uff08\u9700\u5728\u652f\u4ed8\u5b8c\u6bd5\u540e\u81ea\u5df1\u5199\u53cd\u9988\u8bf7\u6c42\u5230\u670d\u52a1\u5668\uff09\uff0c\u4e5f\u65e0\u6240\u8c13\u7528\u6237\u7684IP\u5730\u5740\uff08\u53cd\u6b63\u90fd\u662f\u5728\u5fae\u4fe1\u91cc\uff09\u3002<br \/>\n\u6ce82\uff1a\u5982\u679c\u4e0d\u80fd\u8dd1\u901a\u652f\u4ed8\uff0c\u53ef\u53bb\u6389106\u884c\u7684\u6ce8\u91ca\u659c\u6760\uff0c\u5728\u5c0f\u7a0b\u5e8f\u4e2d\u67e5\u770b\u5fae\u4fe1\u5b98\u65b9\u7ed9\u51fa\u7684\u62a5\u9519\u4fe1\u606f\u4ee5\u53ca\u7b7e\u540d\u6240\u9700\u5b57\u6bb5\u7684\u5b9e\u9645\u8f93\u51fa\uff0c\u4ee5\u4fbfdebug\u3002\u5f88\u591a\u6743\u9650\u3001\u5c0f\u7a0b\u5e8f\u914d\u7f6e\u7b49\u4f4e\u7ea7\u9519\u8bef\uff0c\u90fd\u80fd\u5728\u8fd9\u91cc\u53d1\u73b0\u3002<\/p>\n<p>\u5c0f\u7a0b\u5e8f\u7aef\u7684JS\u4ee3\u7801\uff1a<\/p>\n<pre lang=\"javascript\" line=\"1\">\r\n\/* Author: Brain - blog.brain1981.com *\/\r\n\/\/\u53d1\u8d77\u53c2\u6570\u8bf7\u6c42\uff0c\u5f00\u59cb\u652f\u4ed8\r\n  payfee: function(){\r\n    var that = this\r\n    var url = \"https:\/\/www.abc.com\/wp-json\/wx_pay\/v1\/pay\/\"\r\n    var requestData = {\r\n      openid: openid, \/\/\u6b64\u5904\u8bf7\u5148\u83b7\u5f97\u7528\u6237openid\uff0c\u65b9\u6cd5\u89c1\u5b98\u65b9\u5f00\u53d1\u6587\u6863\r\n      total_fee: 0.01,\r\n      order_name: \"XXX\u8d39\u7528-\u8ba2\u5355\"+that.data.project_id \/\/\u81ea\u5df1\u4e1a\u52a1\u91cc\u7684\u8ba2\u5355\u540d\u79f0\uff0c\u81ea\u7531\u53d1\u6325\r\n    }\r\n    \r\n    wx.request({\r\n      url: url,\r\n      data: requestData,\r\n      method: 'POST',\r\n      success: function (res) {\r\n        if (res.statusCode == 200) {\r\n          var param = {\r\n            \"timeStamp\": res.data.timeStamp.toString(),\r\n            \"package\": res.data.package,\r\n            \"paySign\": res.data.paySign,\r\n            \"signType\": \"MD5\",\r\n            \"nonceStr\": res.data.nonceStr\r\n          }\r\n          console.log(\"param\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u63a5\u53e3\u53c2\u6570\", param);\r\n          that.processPay(param);\r\n\r\n        } else {\r\n          \/\/\u8bf7\u6c42\u5931\u8d25\r\n          wx.showModal({\r\n            title: '\u8bf7\u6c42\u5931\u8d25',\r\n            \/\/content: '',\r\n            showCancel:false\r\n          })\r\n        }\r\n      },\r\n    })\r\n  },\r\n \r\n  \/* \u5c0f\u7a0b\u5e8f\u652f\u4ed8 *\/\r\n  processPay: function (param) {\r\n    var that = this\r\n    wx.requestPayment({\r\n      timeStamp: param.timeStamp,\r\n      nonceStr: param.nonceStr,\r\n      package: param.package,\r\n      signType: param.signType,\r\n      paySign: param.paySign,\r\n      success: function (res) {\r\n        \/\/ success\r\n        console.log(\"wx.requestPayment\u8fd4\u56de\u4fe1\u606f\",res);\r\n        \/\/\u63d0\u4ea4\u7ed9\u670d\u52a1\u5668\u4fe1\u606f\uff0c\u6dfb\u52a0\u6d88\u606f\r\n        that.wxPayAfter()\r\n\r\n        wx.showModal({\r\n          title: '\u652f\u4ed8\u6210\u529f',\r\n          content: '\u60a8\u5c06\u5728\u201c\u5fae\u4fe1\u652f\u4ed8\u201d\u5b98\u65b9\u53f7\u4e2d\u6536\u5230\u652f\u4ed8\u51ed\u8bc1',\r\n          showCancel: false,\r\n          success: function (res) {\r\n            if (res.confirm) {\r\n              \/\/\u6309\u4e0b\u786e\u8ba4\r\n            }\r\n          }\r\n        })\r\n      },\r\n      fail: function (res) {\r\n        console.log(\"\u652f\u4ed8\u5931\u8d25\",res);\r\n      },\r\n      complete: function () {\r\n        \/\/console.log(\"\u652f\u4ed8\u5b8c\u6210(\u6210\u529f\u6216\u5931\u8d25\u90fd\u4e3a\u5b8c\u6210)\");\r\n      }\r\n    })\r\n  },\/\/processPay()\r\n\r\n  \/\/\u652f\u4ed8\u5b8c\u6210\u540e\uff0c\u4f7f\u670d\u52a1\u5668\u6dfb\u52a0\u4e00\u6761\u5b8c\u6210\u7684\u6d88\u606f\r\n  wxPayAfter: function(){\r\n    var that = this\r\n    var url = \"https:\/\/www.abc.com\/wp-json\/wx_pay\/vi\/paid\/\"\r\n    var requestData = {\r\n      project_id: that.data.project_id,\/\/\u81ea\u5df1\u4e1a\u52a1\u91cc\u7684\u8ba2\u5355\u53f7\u7b49\uff0c\u6b64\u5904\u8bf7\u81ea\u7531\u53d1\u6325\r\n      action:\"paid\"\r\n    }\r\n    wx.request({\r\n      url: url,\r\n      data: requestData,\r\n      method: 'POST',\r\n      success: function (res) {\r\n        console.log(\"\u4ed8\u6b3e\u72b6\u6001\u66f4\u65b0\", res)\r\n      },\r\n    })\r\n  },\r\n<\/pre>\n<p>\u81ea\u6b64\u586b\u5751\u5b8c\u6bd5\u3002\u5982\u679c\u4f60\u4e0d\u662f\u7528WordPress\u4e5f\u6ca1\u5173\u7cfb\uff0c\u5176\u4e2d\u540e\u7aef\u90e8\u5206\u7a0d\u52a0\u4fee\u6539\uff0c\u53bb\u6389\u4e24\u4e2aRest API\u7684\u63a5\u53e3\u76f8\u5173\u90e8\u5206\uff0c\u5373\u53ef\u4f7f\u7528\u3002<\/p>\n<p><strong>2022.4.24\u66f4\u65b0\uff1a<\/strong><br \/>\n\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u5f00\u53d1\u4e2d\u6d89\u53ca\u767b\u5f55\u3001\u652f\u4ed8\u8fd9\u4e24\u5757\uff0c\u9694\u51e0\u4e2a\u6708\u5c31\u53ef\u80fd\u56e0\u4e3a\u5fae\u4fe1\u5b98\u65b9\u66f4\u65b0\u63a5\u53e3\u6216\u6743\u9650\u7684\u539f\u56e0\uff0c\u4f7f\u9879\u76ee\u51fa\u73b0\u6545\u969c\uff0c\u5fc5\u987b\u8ddf\u8fdb\u7ef4\u62a4\u3002\u56e0\u518d\u6b21\u5f00\u53d1\u5c0f\u7a0b\u5e8f\u7528\u4e8e\u8dd1\u901a\u6d4b\u8bd5\uff0c\u53c8\u8c03\u6574\u4e86\u672c\u6587\u5c11\u91cf\u4ee3\u7801\uff0c\u518d\u6b21\u4eb2\u6d4b\u53ef\u901a\u3002<\/p>\n<p><strong>2022.5.2\u66f4\u65b0\uff1a<\/strong><br \/>\n\u4fee\u6539\u4e86\u90e8\u5206\u4ee3\u7801\uff0c\u5e76\u9644\u4e0a\u56de\u8c03\u5904\u7406<\/p>\n<pre lang=\"PHP\" line=\"1\">\r\n\/* Author: Brain - blog.brain1981.com *\/\r\nadd_action( 'rest_api_init', function () {\r\n\tregister_rest_route( 'wx_pay\/v1', '\/pay\/notify\/', array(\r\n\t\t'methods' => 'POST',\r\n\t\t'callback' => 'brain1981_api_wx_pay_notify',\r\n\t\t'show_in_index' => false,\r\n\t\t'permission_callback' => '__return_true'\r\n\t) );\r\n});\r\n \r\nfunction brain1981_api_wx_pay_notify( $request ){\r\n\t$xml = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents(\"php:\/\/input\");\r\n\t$pay_funcs = new wx_pay_funcs;\r\n\r\n\t\/\/\u5c06\u670d\u52a1\u5668\u8fd4\u56de\u7684XML\u6570\u636e\u8f6c\u5316\u4e3a\u6570\u7ec4\r\n\t$data = $pay_funcs->xmlToArray($xml);\r\n\r\n\t\/\/ \u5224\u65ad\u7b7e\u540d\u662f\u5426\u6b63\u786e  \u5224\u65ad\u652f\u4ed8\u72b6\u6001\r\n\tif ( ($data['return_code']=='SUCCESS') && ($data['result_code']=='SUCCESS') ) {\r\n\t\t\/\/\u83b7\u53d6\u670d\u52a1\u5668\u8fd4\u56de\u7684\u6570\u636e\r\n\t\t$order_num = $data['out_trade_no'];         \/\/\u8ba2\u5355\u5355\u53f7\r\n\t\t$openid = $data['openid'];                  \/\/\u4ed8\u6b3e\u4ebaopenID\r\n\t\t$total_fee = $data['total_fee'];            \/\/\u4ed8\u6b3e\u91d1\u989d\r\n\t\t$transaction_id = $data['transaction_id'];  \/\/\u5fae\u4fe1\u652f\u4ed8\u6d41\u6c34\u53f7\r\n\r\n\t\t\/\/\u4ee5\u4e0b\u4e3aWordPress\u4e1a\u52a1\u90e8\u5206\uff0c\u7528\u4e8e\u5904\u7406WooCommerce\u8ba2\u5355\r\n\t\t\/\/\u4ece\u8ba2\u5355out_trade_no\u83b7\u53d6WC\u7684order_id\uff0c\u6dfb\u52a0_transaction_id\u5b57\u6bb5\uff0ctransaction_id\u662f\u7528\u4e8e\u9000\u6b3e\u7684\u91cd\u8981\u51ed\u8bc1\r\n\t\tglobal $wpdb;\r\n\t\t$tbl = $wpdb->prefix.'postmeta';\r\n\t\t$prepare_guery = $wpdb->get_results( \"SELECT post_id FROM $tbl where meta_key ='out_trade_no' AND meta_value='\".$order_num.\"'\" );\r\n\t\tif (is_array($prepare_guery) && !empty($prepare_guery) && isset($prepare_guery[0])) {\r\n\t\t\t$order_id = $prepare_guery[0]->post_id;\r\n\t\t\t$order = wc_get_order( $order_id ); \r\n\t\t\t$order->payment_complete($transaction_id);\r\n\t\t\t$result = 0;\r\n\t\t}\r\n\t}else{\r\n\t    $result = -1;\r\n\t}\r\n\t\/\/ \u8fd4\u56de\u72b6\u6001\u7ed9\u5fae\u4fe1\u670d\u52a1\u5668\r\n\tif ($result == 0) { \/\/ \u6210\u529f\u4e4b\u540e\u4e0d\u4f1a\u518d\u56de\u8c03\r\n\t\t$str='<xml><return_code><![CDATA[SUCCESS]]><\/return_code><return_msg><![CDATA[OK]]><\/return_msg><\/xml>';\r\n\t}else{ \/\/ \u5931\u8d25\u540e\u4f1a\u7ee7\u7eed\u53d1\u9001\u51e0\u6b21\u56de\u8c03\r\n\t\t$str='<xml><return_code><![CDATA[FAIL]]><\/return_code><return_msg><![CDATA[Failed]]><\/return_msg><\/xml>';\r\n\t} \r\n\treturn $str;\r\n}\r\n<\/pre>\n<hr \/>\n","protected":false},"excerpt":{"rendered":"<p>\u6211\u57282018\u5e74\u7684\u65f6\u5019\u603b\u7ed3\u8fc7\u4e00\u7bc7\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1\u4e0e\u8e29\u5751\u7ecf\u9a8c\u603b\u7ed3\uff0c\u5f53\u65f6\u56e0\u4e3a\u7f51\u4e0a\u76f8\u5173\u6587\u6863\u548c\u8d44\u6e90\u7684\u7f3a\u4e4f\uff0c\u6587\u7ae0\u83b7\u5f97 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,33],"tags":[83],"class_list":["post-2354","post","type-post","status-publish","format-standard","hentry","category-wordpress","category-front-end-development","tag-83"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u57fa\u4e8eWordPress\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1 - Brain\u7684\u6280\u672f\u7b14\u8bb0<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.brain1981.com\/2354.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u57fa\u4e8eWordPress\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1 - Brain\u7684\u6280\u672f\u7b14\u8bb0\" \/>\n<meta property=\"og:description\" content=\"\u6211\u57282018\u5e74\u7684\u65f6\u5019\u603b\u7ed3\u8fc7\u4e00\u7bc7\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1\u4e0e\u8e29\u5751\u7ecf\u9a8c\u603b\u7ed3\uff0c\u5f53\u65f6\u56e0\u4e3a\u7f51\u4e0a\u76f8\u5173\u6587\u6863\u548c\u8d44\u6e90\u7684\u7f3a\u4e4f\uff0c\u6587\u7ae0\u83b7\u5f97 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.brain1981.com\/2354.html\" \/>\n<meta property=\"og:site_name\" content=\"Brain\u7684\u6280\u672f\u7b14\u8bb0\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-11T07:07:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-05-19T11:45:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.brain1981.com\/wp-content\/uploads\/2021\/03\/wx_pay-1.jpg\" \/>\n<meta name=\"author\" content=\"Brain\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brain\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/2354.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/2354.html\"},\"author\":{\"name\":\"Brain\",\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/#\\\/schema\\\/person\\\/7689202bbb2f967b4c66309c1cc5e65d\"},\"headline\":\"\u57fa\u4e8eWordPress\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1\",\"datePublished\":\"2021-03-11T07:07:07+00:00\",\"dateModified\":\"2022-05-19T11:45:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/2354.html\"},\"wordCount\":34,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/#\\\/schema\\\/person\\\/7689202bbb2f967b4c66309c1cc5e65d\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/2354.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.brain1981.com\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/wx_pay-1.jpg\",\"keywords\":[\"\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\"],\"articleSection\":[\"WordPress\",\"\u524d\u7aef\u5f00\u53d1\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.brain1981.com\\\/2354.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/2354.html\",\"url\":\"https:\\\/\\\/blog.brain1981.com\\\/2354.html\",\"name\":\"\u57fa\u4e8eWordPress\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1 - Brain\u7684\u6280\u672f\u7b14\u8bb0\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/2354.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/2354.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.brain1981.com\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/wx_pay-1.jpg\",\"datePublished\":\"2021-03-11T07:07:07+00:00\",\"dateModified\":\"2022-05-19T11:45:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/2354.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.brain1981.com\\\/2354.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/2354.html#primaryimage\",\"url\":\"https:\\\/\\\/blog.brain1981.com\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/wx_pay-1.jpg\",\"contentUrl\":\"https:\\\/\\\/blog.brain1981.com\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/wx_pay-1.jpg\",\"width\":1243,\"height\":992},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/2354.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\\\/\\\/blog.brain1981.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u57fa\u4e8eWordPress\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/#website\",\"url\":\"https:\\\/\\\/blog.brain1981.com\\\/\",\"name\":\"Brain\u7684\u6280\u672f\u7b14\u8bb0\",\"description\":\"WordPress\u5efa\u7ad9\u5f00\u53d1\u6559\u7a0b\u4e0e\u6280\u672f\u7814\u7a76\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/#\\\/schema\\\/person\\\/7689202bbb2f967b4c66309c1cc5e65d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.brain1981.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/#\\\/schema\\\/person\\\/7689202bbb2f967b4c66309c1cc5e65d\",\"name\":\"Brain\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/favicon.webp\",\"url\":\"https:\\\/\\\/blog.brain1981.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/favicon.webp\",\"contentUrl\":\"https:\\\/\\\/blog.brain1981.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/favicon.webp\",\"width\":75,\"height\":75,\"caption\":\"Brain\"},\"logo\":{\"@id\":\"https:\\\/\\\/blog.brain1981.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/favicon.webp\"},\"sameAs\":[\"http:\\\/\\\/brain1981.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u57fa\u4e8eWordPress\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1 - Brain\u7684\u6280\u672f\u7b14\u8bb0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.brain1981.com\/2354.html","og_locale":"zh_CN","og_type":"article","og_title":"\u57fa\u4e8eWordPress\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1 - Brain\u7684\u6280\u672f\u7b14\u8bb0","og_description":"\u6211\u57282018\u5e74\u7684\u65f6\u5019\u603b\u7ed3\u8fc7\u4e00\u7bc7\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1\u4e0e\u8e29\u5751\u7ecf\u9a8c\u603b\u7ed3\uff0c\u5f53\u65f6\u56e0\u4e3a\u7f51\u4e0a\u76f8\u5173\u6587\u6863\u548c\u8d44\u6e90\u7684\u7f3a\u4e4f\uff0c\u6587\u7ae0\u83b7\u5f97 [&hellip;]","og_url":"https:\/\/blog.brain1981.com\/2354.html","og_site_name":"Brain\u7684\u6280\u672f\u7b14\u8bb0","article_published_time":"2021-03-11T07:07:07+00:00","article_modified_time":"2022-05-19T11:45:16+00:00","og_image":[{"url":"https:\/\/blog.brain1981.com\/wp-content\/uploads\/2021\/03\/wx_pay-1.jpg","type":"","width":"","height":""}],"author":"Brain","twitter_misc":{"\u4f5c\u8005":"Brain","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.brain1981.com\/2354.html#article","isPartOf":{"@id":"https:\/\/blog.brain1981.com\/2354.html"},"author":{"name":"Brain","@id":"https:\/\/blog.brain1981.com\/#\/schema\/person\/7689202bbb2f967b4c66309c1cc5e65d"},"headline":"\u57fa\u4e8eWordPress\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1","datePublished":"2021-03-11T07:07:07+00:00","dateModified":"2022-05-19T11:45:16+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.brain1981.com\/2354.html"},"wordCount":34,"commentCount":2,"publisher":{"@id":"https:\/\/blog.brain1981.com\/#\/schema\/person\/7689202bbb2f967b4c66309c1cc5e65d"},"image":{"@id":"https:\/\/blog.brain1981.com\/2354.html#primaryimage"},"thumbnailUrl":"https:\/\/blog.brain1981.com\/wp-content\/uploads\/2021\/03\/wx_pay-1.jpg","keywords":["\u5fae\u4fe1\u5c0f\u7a0b\u5e8f"],"articleSection":["WordPress","\u524d\u7aef\u5f00\u53d1"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.brain1981.com\/2354.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.brain1981.com\/2354.html","url":"https:\/\/blog.brain1981.com\/2354.html","name":"\u57fa\u4e8eWordPress\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1 - Brain\u7684\u6280\u672f\u7b14\u8bb0","isPartOf":{"@id":"https:\/\/blog.brain1981.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.brain1981.com\/2354.html#primaryimage"},"image":{"@id":"https:\/\/blog.brain1981.com\/2354.html#primaryimage"},"thumbnailUrl":"https:\/\/blog.brain1981.com\/wp-content\/uploads\/2021\/03\/wx_pay-1.jpg","datePublished":"2021-03-11T07:07:07+00:00","dateModified":"2022-05-19T11:45:16+00:00","breadcrumb":{"@id":"https:\/\/blog.brain1981.com\/2354.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.brain1981.com\/2354.html"]}]},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/blog.brain1981.com\/2354.html#primaryimage","url":"https:\/\/blog.brain1981.com\/wp-content\/uploads\/2021\/03\/wx_pay-1.jpg","contentUrl":"https:\/\/blog.brain1981.com\/wp-content\/uploads\/2021\/03\/wx_pay-1.jpg","width":1243,"height":992},{"@type":"BreadcrumbList","@id":"https:\/\/blog.brain1981.com\/2354.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/blog.brain1981.com\/"},{"@type":"ListItem","position":2,"name":"\u57fa\u4e8eWordPress\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u652f\u4ed8\u529f\u80fd\u5f00\u53d1"}]},{"@type":"WebSite","@id":"https:\/\/blog.brain1981.com\/#website","url":"https:\/\/blog.brain1981.com\/","name":"Brain\u7684\u6280\u672f\u7b14\u8bb0","description":"WordPress\u5efa\u7ad9\u5f00\u53d1\u6559\u7a0b\u4e0e\u6280\u672f\u7814\u7a76","publisher":{"@id":"https:\/\/blog.brain1981.com\/#\/schema\/person\/7689202bbb2f967b4c66309c1cc5e65d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.brain1981.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":["Person","Organization"],"@id":"https:\/\/blog.brain1981.com\/#\/schema\/person\/7689202bbb2f967b4c66309c1cc5e65d","name":"Brain","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/blog.brain1981.com\/wp-content\/uploads\/2026\/01\/favicon.webp","url":"https:\/\/blog.brain1981.com\/wp-content\/uploads\/2026\/01\/favicon.webp","contentUrl":"https:\/\/blog.brain1981.com\/wp-content\/uploads\/2026\/01\/favicon.webp","width":75,"height":75,"caption":"Brain"},"logo":{"@id":"https:\/\/blog.brain1981.com\/wp-content\/uploads\/2026\/01\/favicon.webp"},"sameAs":["http:\/\/brain1981.com"]}]}},"views":6165,"_links":{"self":[{"href":"https:\/\/blog.brain1981.com\/wp-json\/wp\/v2\/posts\/2354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.brain1981.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.brain1981.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.brain1981.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.brain1981.com\/wp-json\/wp\/v2\/comments?post=2354"}],"version-history":[{"count":28,"href":"https:\/\/blog.brain1981.com\/wp-json\/wp\/v2\/posts\/2354\/revisions"}],"predecessor-version":[{"id":2877,"href":"https:\/\/blog.brain1981.com\/wp-json\/wp\/v2\/posts\/2354\/revisions\/2877"}],"wp:attachment":[{"href":"https:\/\/blog.brain1981.com\/wp-json\/wp\/v2\/media?parent=2354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.brain1981.com\/wp-json\/wp\/v2\/categories?post=2354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.brain1981.com\/wp-json\/wp\/v2\/tags?post=2354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}