{"id":30373,"date":"2024-11-25T14:13:15","date_gmt":"2024-11-25T06:13:15","guid":{"rendered":"https:\/\/fwq.ai\/blog\/30373\/"},"modified":"2024-11-25T14:13:15","modified_gmt":"2024-11-25T06:13:15","slug":"%e5%b0%8f%e7%a8%8b%e5%ba%8f%e4%b9%8b%e7%ba%a2%e5%8c%85%e6%8e%a5%e5%8f%a3%e5%bc%80%e5%8f%91%e5%ae%9e%e4%be%8b%e4%bb%a3%e7%a0%81","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/30373\/","title":{"rendered":"\u5c0f\u7a0b\u5e8f\u4e4b\u7ea2\u5305\u63a5\u53e3\u5f00\u53d1\u5b9e\u4f8b\u4ee3\u7801"},"content":{"rendered":"<p>\u5fae\u4fe1\u7ea2\u5305\u63a5\u53e3\u5f00\u53d1\uff0c\u5176\u5b9e\u4e0d\u662f\u5f88\u96be\uff0c\u4e0d\u8981\u88ab\u4ed6\u7684\u8868\u8c61\u5413\u5230\u4e86\uff0c\u53c2\u8003\u7f51\u4e0a\u597d\u51e0\u4e2a\u7248\u672c\u7684\u7b54\u6848\u54af~\uff0c\u7279\u5730\u5206\u4eab\u5982\u4e0b<\/p>\n<p><strong>\u5206\u88c5 \u7ea2\u5305\u5de5\u5177\u7c7b :<br \/><\/strong><\/p>\n<pre>package&nbsp;com.tepusoft.web.weixin.utils;\r\nimport&nbsp;java.io.BufferedReader;\r\nimport&nbsp;java.io.IOException;\r\nimport&nbsp;java.io.InputStream;\r\nimport&nbsp;java.io.InputStreamReader;\r\nimport&nbsp;java.security.KeyStore;\r\nimport&nbsp;java.security.NoSuchAlgorithmException;\r\nimport&nbsp;java.text.SimpleDateFormat;\r\nimport&nbsp;java.util.Date;\r\nimport&nbsp;java.util.Iterator;\r\nimport&nbsp;java.util.Map;\r\nimport&nbsp;java.util.Map.Entry;\r\nimport&nbsp;java.util.Random;\r\nimport&nbsp;java.util.Set;\r\nimport&nbsp;java.util.SortedMap;\r\nimport&nbsp;java.util.TreeMap;\r\nimport&nbsp;java.util.UUID;\r\nimport&nbsp;javax.net.ssl.SSLContext;\r\nimport&nbsp;org.apache.commons.codec.digest.DigestUtils;\r\nimport&nbsp;org.apache.http.HttpEntity;\r\nimport&nbsp;org.apache.http.client.methods.CloseableHttpResponse;\r\nimport&nbsp;org.apache.http.client.methods.HttpPost;\r\nimport&nbsp;org.apache.http.conn.ssl.SSLConnectionSocketFactory;\r\nimport&nbsp;org.apache.http.conn.ssl.SSLContexts;\r\nimport&nbsp;org.apache.http.entity.StringEntity;\r\nimport&nbsp;org.apache.http.impl.client.CloseableHttpClient;\r\nimport&nbsp;org.apache.http.impl.client.HttpClients;\r\nimport&nbsp;org.apache.http.util.EntityUtils;\r\n\/**\r\n&nbsp;*&nbsp;@author&nbsp;wangiegie\r\n&nbsp;*&nbsp;@date&nbsp;2015\u5e7410\u670819\u65e5\u4e0b\u53482:07:11\r\n&nbsp;*&nbsp;@description\r\n&nbsp;*\/\r\npublic&nbsp;class&nbsp;HongBaoUtil&nbsp;{\r\npublic&nbsp;static&nbsp;final&nbsp;String&nbsp;MCH_ID&nbsp;=&nbsp;\"\";&nbsp;\/\/&nbsp;\u5546\u6237\u53f7\r\npublic&nbsp;static&nbsp;final&nbsp;String&nbsp;WXAPPID&nbsp;=&nbsp;\"\";&nbsp;\/\/&nbsp;\u516c\u4f17\u8d26\u53f7appid\r\npublic&nbsp;static&nbsp;final&nbsp;String&nbsp;NICK_NAME&nbsp;=&nbsp;\"\u6f4d\u574a\u7279\u666e\u8f6f\u4ef6\u5f00\u53d1\u6709\u9650\u516c\u53f8\";&nbsp;\/\/&nbsp;\u63d0\u4f9b\u65b9\u540d\u79f0\r\npublic&nbsp;static&nbsp;final&nbsp;String&nbsp;SEND_NAME&nbsp;=&nbsp;\"\u6f4d\u574a\u7279\u666e\u8f6f\u4ef6\";&nbsp;\/\/&nbsp;\u5546\u6237\u540d\u79f0\r\npublic&nbsp;static&nbsp;final&nbsp;int&nbsp;MIN_VALUE&nbsp;=&nbsp;;&nbsp;\/\/&nbsp;\u7ea2\u5305\u6700\u5c0f\u91d1\u989d&nbsp;\u5355\u4f4d:\u5206\r\npublic&nbsp;static&nbsp;final&nbsp;int&nbsp;MAX_VALUE&nbsp;=&nbsp;;&nbsp;\/\/&nbsp;\u7ea2\u5305\u6700\u5927\u91d1\u989d&nbsp;\u5355\u4f4d:\u5206\r\npublic&nbsp;static&nbsp;final&nbsp;int&nbsp;TOTAL_NUM&nbsp;=&nbsp;1;&nbsp;\/\/&nbsp;\u7ea2\u5305\u53d1\u653e\u4eba\u6570\r\npublic&nbsp;static&nbsp;final&nbsp;String&nbsp;WISHING&nbsp;=&nbsp;\"\u751f\u65e5\u5feb\u4e50\";&nbsp;\/\/&nbsp;\u7ea2\u5305\u795d\u798f\u8bed\r\npublic&nbsp;static&nbsp;final&nbsp;String&nbsp;CLIENT_IP&nbsp;=&nbsp;\"182.41.214.82\";&nbsp;\/\/&nbsp;\u8c03\u7528\u63a5\u53e3\u7684\u673a\u5668IP\r\npublic&nbsp;static&nbsp;final&nbsp;String&nbsp;ACT_NAME&nbsp;=&nbsp;\"??\";&nbsp;\/\/&nbsp;\u6d3b\u52a8\u540d\u79f0\r\npublic&nbsp;static&nbsp;final&nbsp;String&nbsp;REMARK&nbsp;=&nbsp;\"\u7ea2\u5305\u6d4b\u8bd5\";&nbsp;\/\/&nbsp;\u5907\u6ce8\r\npublic&nbsp;static&nbsp;final&nbsp;String&nbsp;KEY&nbsp;=&nbsp;\"\";&nbsp;\/\/&nbsp;\u79d8\u94a5\r\npublic&nbsp;static&nbsp;final&nbsp;int&nbsp;FAIL&nbsp;=&nbsp;0;&nbsp;\/\/&nbsp;\u9886\u53d6\u5931\u8d25\r\npublic&nbsp;static&nbsp;final&nbsp;int&nbsp;SUCCESS&nbsp;=&nbsp;1;&nbsp;\/\/&nbsp;\u9886\u53d6\u6210\u529f\r\npublic&nbsp;static&nbsp;final&nbsp;int&nbsp;LOCK&nbsp;=&nbsp;2;&nbsp;\/\/&nbsp;\u5df2\u5728\u4f59\u989d\u8868\u4e2d\u9501\u5b9a\u8be5\u7528\u6237\u7684\u4f59\u989d,\u9632\u6b62\u9886\u53d6\u7684\u7ea2\u5305\u91d1\u989d\u5927\u4e8e\u9884\u7b97\r\n\/**\r\n&nbsp;*&nbsp;\u5bf9\u8bf7\u6c42\u53c2\u6570\u540dASCII\u7801\u4ece\u5c0f\u5230\u5927\u6392\u5e8f\u540e\u7b7e\u540d\r\n&nbsp;*&nbsp;\r\n&nbsp;*&nbsp;@param&nbsp;params\r\n&nbsp;*\/\r\npublic&nbsp;static&nbsp;void&nbsp;sign(SortedMap&lt;string&gt;&nbsp;params)&nbsp;{\r\nSet&lt;entry&gt;&amp;gt;&nbsp;entrys&nbsp;=&nbsp;params.entrySet();\r\nIterator&lt;entry&gt;&amp;gt;&nbsp;it&nbsp;=&nbsp;entrys.iterator();\r\nStringBuffer&nbsp;result&nbsp;=&nbsp;new&nbsp;StringBuffer();\r\nwhile&nbsp;(it.hasNext())&nbsp;{\r\nEntry&lt;string&gt;&nbsp;entry&nbsp;=&nbsp;it.next();\r\nresult.append(entry.getKey()).append(\"=\").append(entry.getValue()).append(\"&amp;amp;\");\r\n}\r\nresult.append(\"key=\").append(KEY);\r\nparams.put(\"sign\",&nbsp;DigestUtils.md5Hex(result.toString()));\r\n}\r\n\/**\r\n&nbsp;*&nbsp;\u751f\u6210\u63d0\u4ea4\u7ed9\u5fae\u4fe1\u670d\u52a1\u5668\u7684xml\u683c\u5f0f\u53c2\u6570\r\n&nbsp;*&nbsp;\r\n&nbsp;*&nbsp;@param&nbsp;params\r\n&nbsp;*&nbsp;@return\r\n&nbsp;*\/\r\npublic&nbsp;static&nbsp;String&nbsp;getRequestXml(SortedMap&lt;string&gt;&nbsp;params)&nbsp;{\r\nStringBuffer&nbsp;sb&nbsp;=&nbsp;new&nbsp;StringBuffer();\r\nsb.append(\"&lt;xml&gt;\");\r\nSet&nbsp;es&nbsp;=&nbsp;params.entrySet();\r\nIterator&nbsp;it&nbsp;=&nbsp;es.iterator();\r\nwhile&nbsp;(it.hasNext())&nbsp;{\r\nMap.Entry&nbsp;entry&nbsp;=&nbsp;(Map.Entry)&nbsp;it.next();\r\nString&nbsp;k&nbsp;=&nbsp;(String)&nbsp;entry.getKey();\r\nString&nbsp;v&nbsp;=&nbsp;(String)&nbsp;entry.getValue();\r\nif&nbsp;(\"nick_name\".equalsIgnoreCase(k)&nbsp;||&nbsp;\"send_name\".equalsIgnoreCase(k)&nbsp;||&nbsp;\"wishing\".equalsIgnoreCase(k)\r\n||&nbsp;\"act_name\".equalsIgnoreCase(k)&nbsp;||&nbsp;\"remark\".equalsIgnoreCase(k)&nbsp;||&nbsp;\"sign\".equalsIgnoreCase(k))&nbsp;{\r\nsb.append(\"\"&nbsp;+&nbsp;\"\"&nbsp;+&nbsp;k&nbsp;+&nbsp;\"&amp;gt;\");\r\n}&nbsp;else&nbsp;{\r\nsb.append(\"\"&nbsp;+&nbsp;v&nbsp;+&nbsp;\"\"&nbsp;+&nbsp;k&nbsp;+&nbsp;\"&amp;gt;\");\r\n}\r\n}\r\nsb.append(\"&lt;\/xml&gt;\");\r\nreturn&nbsp;sb.toString();\r\n}\r\n\/**\r\n&nbsp;*&nbsp;\u521b\u5efamap\r\n&nbsp;*&nbsp;\r\n&nbsp;*&nbsp;@param&nbsp;billNo\r\n&nbsp;*&nbsp;@param&nbsp;openid\r\n&nbsp;*&nbsp;@param&nbsp;userId\r\n&nbsp;*&nbsp;@param&nbsp;amount\r\n&nbsp;*&nbsp;@return\r\n&nbsp;*\/\r\npublic&nbsp;static&nbsp;SortedMap&lt;string&gt;&nbsp;createMap(String&nbsp;openid,&nbsp;String&nbsp;userId,&nbsp;int&nbsp;amount)&nbsp;{\r\nSortedMap&lt;string&gt;&nbsp;params&nbsp;=&nbsp;new&nbsp;TreeMap&lt;string&gt;();\r\nparams.put(\"wxappid\",&nbsp;WXAPPID);\r\nparams.put(\"nonce_str\",&nbsp;createNonceStr());\r\nparams.put(\"mch_billno\",&nbsp;createBillNo(userId));\r\nparams.put(\"mch_id\",&nbsp;MCH_ID);\r\nparams.put(\"nick_name\",&nbsp;NICK_NAME);\r\nparams.put(\"send_name\",&nbsp;SEND_NAME);\r\nparams.put(\"re_openid\",&nbsp;openid);\r\nparams.put(\"total_amount\",&nbsp;amount&nbsp;+&nbsp;\"\");\r\nparams.put(\"min_value\",&nbsp;amount&nbsp;+&nbsp;\"\");\r\nparams.put(\"max_value\",&nbsp;amount&nbsp;+&nbsp;\"\");\r\nparams.put(\"total_num\",&nbsp;TOTAL_NUM&nbsp;+&nbsp;\"\");\r\nparams.put(\"wishing\",&nbsp;WISHING);\r\nparams.put(\"client_ip\",&nbsp;CLIENT_IP);\r\nparams.put(\"act_name\",&nbsp;ACT_NAME);\r\nparams.put(\"remark\",&nbsp;REMARK);\r\nreturn&nbsp;params;\r\n}\r\n\/**\r\n&nbsp;*&nbsp;\u751f\u6210\u968f\u673a\u5b57\u7b26\u4e32\r\n&nbsp;*&nbsp;\r\n&nbsp;*&nbsp;@return\r\n&nbsp;*\/\r\npublic&nbsp;static&nbsp;String&nbsp;createNonceStr()&nbsp;{\r\nreturn&nbsp;UUID.randomUUID().toString().toUpperCase().replace(\"-\",&nbsp;\"\");\r\n}\r\n\/**\r\n&nbsp;*&nbsp;\u751f\u6210\u5546\u6237\u8ba2\u5355\u53f7\r\n&nbsp;*&nbsp;\r\n&nbsp;*&nbsp;@param&nbsp;mch_id\r\n&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u5546\u6237\u53f7\r\n&nbsp;*&nbsp;@param&nbsp;userId\r\n&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u8be5\u7528\u6237\u7684userID\r\n&nbsp;*&nbsp;@return\r\n&nbsp;*\/\r\npublic&nbsp;static&nbsp;String&nbsp;createBillNo(String&nbsp;userId)&nbsp;{\r\n\/\/&nbsp;\u7ec4\u6210\uff1a&nbsp;mch_id+yyyymmdd+10\u4f4d\u4e00\u5929\u5185\u4e0d\u80fd\u91cd\u590d\u7684\u6570\u5b57\r\n\/\/&nbsp;10\u4f4d\u4e00\u5929\u5185\u4e0d\u80fd\u91cd\u590d\u7684\u6570\u5b57\u5b9e\u73b0\u65b9\u6cd5\u5982\u4e0b:\r\n\/\/&nbsp;\u56e0\u4e3a\u6bcf\u4e2a\u7528\u6237\u7ed1\u5b9a\u4e86userId,\u4ed6\u4eec\u7684userId\u4e0d\u540c,\u52a0\u4e0a\u968f\u673a\u751f\u6210\u7684(10-length(userId))\u53ef\u4fdd\u8bc1\u8fd910\u4f4d\u6570\u5b57\u4e0d\u4e00\u6837\r\nDate&nbsp;dt&nbsp;=&nbsp;new&nbsp;Date();\r\nSimpleDateFormat&nbsp;df&nbsp;=&nbsp;new&nbsp;SimpleDateFormat(\"yyyymmdd\");\r\nString&nbsp;nowTime&nbsp;=&nbsp;df.format(dt);\r\nint&nbsp;length&nbsp;=&nbsp;10&nbsp;-&nbsp;userId.length();\r\nreturn&nbsp;MCH_ID&nbsp;+&nbsp;nowTime&nbsp;+&nbsp;userId&nbsp;+&nbsp;getRandomNum(length);\r\n}\r\n\/**\r\n&nbsp;*&nbsp;\u751f\u6210\u7279\u5b9a\u4f4d\u6570\u7684\u968f\u673a\u6570\u5b57\r\n&nbsp;*&nbsp;\r\n&nbsp;*&nbsp;@param&nbsp;length\r\n&nbsp;*&nbsp;@return\r\n&nbsp;*\/\r\nprivate&nbsp;static&nbsp;String&nbsp;getRandomNum(int&nbsp;length)&nbsp;{\r\nString&nbsp;val&nbsp;=&nbsp;\"\";\r\nRandom&nbsp;random&nbsp;=&nbsp;new&nbsp;Random();\r\nfor&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;p&gt;\u8c03\u7528:&lt;br&gt;&lt;\/p&gt;\n&lt;pre class=\"brush:java;toolbar:false\"&gt;@Test\r\npublic&nbsp;void&nbsp;testHongBao()&nbsp;throws&nbsp;Exception&nbsp;{\r\nSortedMap&lt;string&gt;&nbsp;sortedMap&nbsp;=&nbsp;HongBaoUtil.createMap(openId,&nbsp;userId,&nbsp;money);\r\nHongBaoUtil.sign(sortedMap);\r\nString&nbsp;postXML&nbsp;=&nbsp;HongBaoUtil.getRequestXml(sortedMap);\r\nFileInputStream&nbsp;instream&nbsp;=&nbsp;new&nbsp;FileInputStream(new&nbsp;File(\"\u8bc1\u4e66\u6587\u4ef6\u5730\u5740\"));\r\nHongBaoUtil.post(postXML,&nbsp;instream);\r\n}&lt;\/string&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p><strong>\u597d\u54af &nbsp;&#8230;\u522b\u88ab\u5fae\u4fe1\u652f\u4ed8\u540e\u53f0\u7684\u90a3\u4e48\u591a\u7684\u914d\u7f6e\u548c\u53c2\u6570\u4fa0\u76d7 ,\u5fae\u4fe1\u7ea2\u5305\u5f00\u53d1\u5c31\u662f\u8fd9\u4e48\u7b80\u5355 &nbsp;~<\/strong><\/p>\n<p>\u3010\u76f8\u5173\u63a8\u8350\u3011<\/p>\n<p>1.&nbsp;<\/p>\n<p>2.&nbsp;<\/p>\n<p>3.&nbsp;<\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u5c0f\u7a0b\u5e8f\u4e4b\u7ea2\u5305\u63a5\u53e3\u5f00\u53d1\u5b9e\u4f8b\u4ee3\u7801\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>\u5fae\u4fe1\u7ea2\u5305\u63a5\u53e3\u5f00\u53d1\uff0c\u5176\u5b9e\u4e0d\u662f\u5f88\u96be\uff0c\u4e0d\u8981\u88ab\u4ed6\u7684\u8868\u8c61\u5413\u5230\u4e86\uff0c\u53c2\u8003\u7f51\u4e0a\u597d\u51e0\u4e2a\u7248\u672c\u7684\u7b54\u6848\u54af~\uff0c\u7279\u5730\u5206\u4eab\u5982\u4e0b \u5206\u88c5 \u7ea2\u5305\u5de5\u5177\u7c7b : package&nbsp;com.tepusoft.web.weixin.utils; import&nbsp;java.io.BufferedReader; import&nbsp;java.io.IOException; import&nbsp;java.io.InputStream; import&nbsp;java.io.InputStreamReader; import&nbsp;java.security.KeyStore; import&nbsp;java.security.NoSuchAlgorithmException; import&nbsp;java.text.SimpleDateFormat; import&nbsp;java.util.Date; import&nbsp;java.util.Iterator; import&nbsp;java.util.Map; import&nbsp;java.util.Map.Entry; import&nbsp;java.util.Random; import&nbsp;java.util.Set; import&nbsp;java.util.SortedMap; import&nbsp;java.util.TreeMap; import&nbsp;java.util.UUID; import&nbsp;javax.net.ssl.SSLContext; import&nbsp;org.apache.commons.codec.digest.DigestUtils; import&nbsp;org.apache.http.HttpEntity; import&nbsp;org.apache.http.client.methods.CloseableHttpResponse; import&nbsp;org.apache.http.client.methods.HttpPost; import&nbsp;org.apache.http.conn.ssl.SSLConnectionSocketFactory; import&nbsp;org.apache.http.conn.ssl.SSLContexts; import&nbsp;org.apache.http.entity.StringEntity; import&nbsp;org.apache.http.impl.client.CloseableHttpClient; import&nbsp;org.apache.http.impl.client.HttpClients; import&nbsp;org.apache.http.util.EntityUtils; \/** &nbsp;*&nbsp;@author&nbsp;wangiegie &nbsp;*&nbsp;@date&nbsp;2015\u5e7410\u670819\u65e5\u4e0b\u53482:07:11 &nbsp;*&nbsp;@description &nbsp;*\/ public&nbsp;class&nbsp;HongBaoUtil&nbsp;{ public&nbsp;static&nbsp;final&nbsp;String&nbsp;MCH_ID&nbsp;=&nbsp;&#8220;&#8221;;&nbsp;\/\/&nbsp;\u5546\u6237\u53f7 public&nbsp;static&nbsp;final&nbsp;String&nbsp;WXAPPID&nbsp;=&nbsp;&#8220;&#8221;;&nbsp;\/\/&nbsp;\u516c\u4f17\u8d26\u53f7appid public&nbsp;static&nbsp;final&nbsp;String&nbsp;NICK_NAME&nbsp;=&nbsp;&#8220;\u6f4d\u574a\u7279\u666e\u8f6f\u4ef6\u5f00\u53d1\u6709\u9650\u516c\u53f8&#8221;;&nbsp;\/\/&nbsp;\u63d0\u4f9b\u65b9\u540d\u79f0 public&nbsp;static&nbsp;final&nbsp;String&nbsp;SEND_NAME&nbsp;=&nbsp;&#8220;\u6f4d\u574a\u7279\u666e\u8f6f\u4ef6&#8221;;&nbsp;\/\/&nbsp;\u5546\u6237\u540d\u79f0 public&nbsp;static&nbsp;final&nbsp;int&nbsp;MIN_VALUE&nbsp;=&nbsp;;&nbsp;\/\/&nbsp;\u7ea2\u5305\u6700\u5c0f\u91d1\u989d&nbsp;\u5355\u4f4d:\u5206 public&nbsp;static&nbsp;final&nbsp;int&nbsp;MAX_VALUE&nbsp;=&nbsp;;&nbsp;\/\/&nbsp;\u7ea2\u5305\u6700\u5927\u91d1\u989d&nbsp;\u5355\u4f4d:\u5206 public&nbsp;static&nbsp;final&nbsp;int&nbsp;TOTAL_NUM&nbsp;=&nbsp;1;&nbsp;\/\/&nbsp;\u7ea2\u5305\u53d1\u653e\u4eba\u6570 public&nbsp;static&nbsp;final&nbsp;String&nbsp;WISHING&nbsp;=&nbsp;&#8220;\u751f\u65e5\u5feb\u4e50&#8221;;&nbsp;\/\/&nbsp;\u7ea2\u5305\u795d\u798f\u8bed public&nbsp;static&nbsp;final&nbsp;String&nbsp;CLIENT_IP&nbsp;=&nbsp;&#8220;182.41.214.82&#8221;;&nbsp;\/\/&nbsp;\u8c03\u7528\u63a5\u53e3\u7684\u673a\u5668IP public&nbsp;static&nbsp;final&nbsp;String&nbsp;ACT_NAME&nbsp;=&nbsp;&#8220;??&#8221;;&nbsp;\/\/&nbsp;\u6d3b\u52a8\u540d\u79f0 public&nbsp;static&nbsp;final&nbsp;String&nbsp;REMARK&nbsp;=&nbsp;&#8220;\u7ea2\u5305\u6d4b\u8bd5&#8221;;&nbsp;\/\/&nbsp;\u5907\u6ce8 public&nbsp;static&nbsp;final&nbsp;String&nbsp;KEY&nbsp;=&nbsp;&#8220;&#8221;;&nbsp;\/\/&nbsp;\u79d8\u94a5 public&nbsp;static&nbsp;final&nbsp;int&nbsp;FAIL&nbsp;=&nbsp;0;&nbsp;\/\/&nbsp;\u9886\u53d6\u5931\u8d25 public&nbsp;static&nbsp;final&nbsp;int&nbsp;SUCCESS&nbsp;=&nbsp;1;&nbsp;\/\/&nbsp;\u9886\u53d6\u6210\u529f public&nbsp;static&nbsp;final&nbsp;int&nbsp;LOCK&nbsp;=&nbsp;2;&nbsp;\/\/&nbsp;\u5df2\u5728\u4f59\u989d\u8868\u4e2d\u9501\u5b9a\u8be5\u7528\u6237\u7684\u4f59\u989d,\u9632\u6b62\u9886\u53d6\u7684\u7ea2\u5305\u91d1\u989d\u5927\u4e8e\u9884\u7b97 \/** &nbsp;*&nbsp;\u5bf9\u8bf7\u6c42\u53c2\u6570\u540dASCII\u7801\u4ece\u5c0f\u5230\u5927\u6392\u5e8f\u540e\u7b7e\u540d [&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-30373","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/30373","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=30373"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/30373\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=30373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=30373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=30373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}