{"id":1450,"date":"2025-05-20T10:55:48","date_gmt":"2025-05-20T02:55:48","guid":{"rendered":"https:\/\/open-doc.jkos.com\/?post_type=docs&#038;p=1450"},"modified":"2025-05-20T10:59:03","modified_gmt":"2025-05-20T02:59:03","slug":"jop-gateway","status":"publish","type":"docs","link":"https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway","title":{"rendered":"JOP Gateway"},"content":{"rendered":"<div class=\"ub_table-of-contents\" data-showtext=\"show\" data-hidetext=\"hide\" data-scrolltype=\"auto\" id=\"ub_table-of-contents-6a591dd6-a2d1-4094-8cdc-65b379b056bc\" data-initiallyhideonmobile=\"false\"\n                    data-initiallyshow=\"true\"><div class=\"ub_table-of-contents-extra-container\"><div class=\"ub_table-of-contents-container ub_table-of-contents-1-column \"><ul><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#0-%E7%B0%A1%E4%BB%8B>\u7c21\u4ecb<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#1-%E7%B0%BD%E7%AB%A0%E8%A6%8F%E5%89%87>\u7c3d\u7ae0\u898f\u5247<\/a><ul><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#2-%E5%8F%96%E5%BE%97%E7%B0%BD%E7%AB%A0%E5%85%A7%E5%AE%B9>\u53d6\u5f97\u7c3d\u7ae0\u5167\u5bb9<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#3-%E7%B0%BD%E7%AB%A0>\u7c3d\u7ae0<\/a><\/li><\/ul><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#4-%E5%85%AC%E5%85%B1%E5%8F%83%E6%95%B8>\u516c\u5171\u53c3\u6578<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#5-%E6%A5%AD%E5%8B%99%E5%8F%83%E6%95%B8>\u696d\u52d9\u53c3\u6578<\/a><ul><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#6-request>Request<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#7-response>Response<\/a><\/li><\/ul><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#8-api-documentation>API Documentation<\/a><ul><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#9-baseurl>BaseURL<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#10-request-url>Request URL<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#11-content-type>Content-Type<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#12-1-%E5%8F%96%E5%BE%97-access-token-by-auth-code-or-refresh-token>1. \u53d6\u5f97 access token (by auth code or refresh token)<\/a><ul><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#13-description>Description<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#14-request-body-x-www-form-urlencoded>Request Body (x-www-form-urlencoded)<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#15-request-example>Request Example<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#16-response-body>Response Body<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#17-response-example>Response Example<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#18-error-code>Error Code<\/a><\/li><\/ul><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#19-2-%E8%AA%BF%E7%94%A8%E7%94%A8%E6%88%B6%E6%8E%88%E6%AC%8A%E8%B3%87%E6%96%99-by-access-token>2. \u8abf\u7528\u7528\u6236\u6388\u6b0a\u8cc7\u6599 (by access token)<\/a><ul><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#20-description>Description<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#21-request-body-x-www-form-urlencoded>Request Body (x-www-form-urlencoded)<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#22-request-example>Request Example<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#23-response-body>Response Body<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#24-response-example>Response Example<\/a><\/li><li><a href=https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/jop-gateway#25-error-code>Error Code<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/div><\/div><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"0-%E7%B0%A1%E4%BB%8B\">\u7c21\u4ecb<\/h2>\n\n\n\n<p>JOP Gateway \u4f5c\u70ba ISV \u696d\u8005\u8a2a\u554f\u8857\u53e3\u958b\u653e\u5e73\u53f0\u4e4b\u7db2\u95dc\uff0c\u7576 ISV \u696d\u8005\u767c\u9001\u8acb\u6c42\u81f3\u8857\u53e3 JOP Gateway \u6642\u9700\u8981\u5e36\u5165\u76f8\u95dc\u8cc7\u8a0a\uff0c\u7d30\u7bc0\u8acb\u898b\u4e0b\u65b9\u8aaa\u660e\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1-%E7%B0%BD%E7%AB%A0%E8%A6%8F%E5%89%87\">\u7c3d\u7ae0\u898f\u5247<\/h2>\n\n\n\n<p>\u7576 ISV \u696d\u8005\u7533\u8acb\u8857\u53e3\u958b\u653e\u5e73\u53f0\u7684\u4f7f\u7528\u6b0a\u9650\u6642\uff0c\u5c07\u6703\u7372\u5f97\u4e00\u7d44\u53ef\u5b58\u53d6\u8857\u53e3\u670d\u52d9\u4e4b Credential (client_id) \u8207\u5bc6\u9470 (secret_key)\u3002\u5728\u8857\u53e3\u958b\u653e\u5e73\u53f0\u767c\u8d77\u8acb\u6c42\u6642\uff0c\u7686\u9808\u63d0\u4f9b\u900f\u904e\u8a72 Credential \u8207\u5bc6\u9470\u5c0d\u8a72\u7b46\u8acb\u6c42\u9032\u884c\u7c3d\u7ae0\u4e4b signature \u7d66\u8857\u53e3\u958b\u653e\u5e73\u53f0\u9032\u884c\u9a57\u8b49\u3002<\/p>\n\n\n\n<p>\u4e0b\u5217\u6b65\u9a5f\u8aaa\u660e\u7c3d\u7ae0\u7522\u751f\u898f\u5247\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-%E5%8F%96%E5%BE%97%E7%B0%BD%E7%AB%A0%E5%85%A7%E5%AE%B9\">\u53d6\u5f97\u7c3d\u7ae0\u5167\u5bb9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u521d\u59cb\u5316\u4e00\u500b json \u7269\u4ef6 (or map)\uff0c\u4e0b\u7a31 signBody<\/li>\n\n\n\n<li>\u5c07\u6307\u5b9a\u8cc7\u6599<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u4f9d\u5e8f<\/mark>\u653e\u5165\u7269\u4ef6\u4e2d\n<ul class=\"wp-block-list\">\n<li>a. client_id<\/li>\n\n\n\n<li>b. access_token (\u82e5\u8acb\u6c42\u7684 api \u9700\u8981\u5e36\u5165 access token)<\/li>\n\n\n\n<li>c. \u696d\u52d9\u53c3\u6578\uff1a\u4f9d\u7167\u53c3\u6578\u540d\u7a31 ASCII Code \u6392\u5e8f<\/li>\n\n\n\n<li>d. timestamp<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u5c07 json \u8f49\u63db\u70ba String\uff0c\u4e0b\u7a31 jsonBody<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code class=\" line-numbers\">\/\/ 1. init a map <br>Map&lt;String, Object&gt; signBody = new LinkedHashMap&lt;&gt;();<br><br>\/\/ 2.a put the client_id in the signBody<br>signBody.put(ParamNames.CLIENT_ID_NAME, apiParam.fetchClientId());<br><br>\/\/ 2.b if the access token is required in the requested api<br>if (Objects.nonNull(apiParam.fetchAccessToken())) {<br>  signBody.put(ParamNames.APP_AUTH_TOKEN_NAME, apiParam.fetchAccessToken());<br>}<br><br>\/\/ 2.c sort the params by name and put all in the signBody<br>List&lt;String&gt; keyList = new ArrayList&lt;&gt;();<br>apiParam.forEach(<br>    (k, v) -&gt; {<br>      if (ignoredKey.containsKey(k)) {<br>        return;<br>      }<br>      keyList.add(k);<br>    });<br>Collections.sort(keyList);<br>keyList.forEach(<br>    key -&gt; {<br>      signBody.put(key, apiParam.get(key));<br>    });<br><br>\/\/ 2.d put timestamp into the signBody<br>\/\/ *timestamp's type is String here<br>signBody.put(ParamNames.TIMESTAMP_NAME, apiParam.fetchTimestamp());<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3-%E7%B0%BD%E7%AB%A0\">\u7c3d\u7ae0<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6839\u64da\u4e0a\u8ff0\u53d6\u5f97\u7c3d\u7ae0 String \u5f8c\uff0c\u4ee5 {secret}, {jsonBody}, {timestamp\/1000\/86400} \u7684\u9806\u5e8f\u7d44\u88dd\uff0c\u53d6\u5f97 SHA256 Hash \u503c\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">StringBuilder sb = new StringBuilder();<br>sb.append(secret).append(jsonBody).append(timestamp \/ 1000 \/ 86400);<br>String body = sb.toString();<br>return getSHA256(body.toLowerCase()).toUpperCase();<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"4-%E5%85%AC%E5%85%B1%E5%8F%83%E6%95%B8\">\u516c\u5171\u53c3\u6578<\/h2>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u547c\u53eb\u4efb\u4f55 API \u90fd\u9700\u8981\u5e36\u5165\u7684\u53c3\u6578<\/mark><\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Name<\/th><th>Type<\/th><th>Required<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>client_id<\/td><td>string<\/td><td>true<\/td><td>\u8868\u793a ISV \u696d\u8005\u4e4b\u8eab\u4efd\uff0c\u9700\u5e36\u5165\u65bc\u958b\u653e\u5e73\u53f0\u53d6\u5f97<br>\u4e4b Credential<\/td><\/tr><tr><td>method<\/td><td>string<\/td><td>true<\/td><td>\u6b32\u547c\u53eb\u4e4b API \u540d\u7a31<\/td><\/tr><tr><td>sign<\/td><td>string<\/td><td>true<\/td><td>\u8a72\u8acb\u6c42\u4e4b\u7c3d\u7ae0\u3002\u7c3d\u7ae0\u898f\u5247\u5982\u4e0a<\/td><\/tr><tr><td>sign_method<\/td><td>string<\/td><td>true<\/td><td>\u7c3d\u540d\u65b9\u6cd5\uff0c\u76ee\u524d\u652f\u63f4\u7684\u503c\u70ba JKOS_SIGN<\/td><\/tr><tr><td>timestamp<\/td><td>string<\/td><td>true<\/td><td>\u50b3\u9001\u8a72\u8acb\u6c42\u7684 Unix Timestamp\uff08\u6beb\u79d2\uff09 \u8857\u53e3<br>\u91d1\u79d1 Gateway \u5141\u8a31\u8acb\u6c42\u6700\u5927\u6642\u9593\u8aa4\u5dee\u70ba\u4e00\u5c0f<br>\u6642<\/td><\/tr><tr><td>access_token<\/td><td>string<\/td><td>false<\/td><td>\u8a2a\u554f\u4ee4\u724c<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"5-%E6%A5%AD%E5%8B%99%E5%8F%83%E6%95%B8\">\u696d\u52d9\u53c3\u6578<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"6-request\">Request<\/h3>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">API \u547c\u53eb\u9664\u4e86\u5305\u542b\u516c\u5171\u53c3\u6578\uff0c\u5982\u679c API \u672c\u8eab\u6709\u696d\u52d9\u7d1a\u7684\u53c3\u6578\u4e5f\u5fc5\u9808\u50b3\u5165\u3002<\/mark><\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Name<\/th><th>Type<\/th><th>Required<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>grant_type<\/td><td>string<\/td><td>true<\/td><td>\u6388\u6b0a\u985e\u578b\uff0c\u5176\u503c\u53ef\u80fd\u70ba <strong>authorization_code<\/strong> \u6216 <strong>refresh_token<\/strong>\u3002<br>\u5176\u503c\u70ba authorization_code \u6642\uff0c\u4ee3\u8868\u4f7f\u7528 auth_code \u63db\u53d6\uff1b\u5176\u503c\u70ba refresh_token \u6642\uff0c\u4ee3\u8868\u7528 refresh_token \u63db\u53d6\u3002<\/td><\/tr><tr><td>code<\/td><td>string<\/td><td>false<\/td><td>\u6388\u6b0a\u78bc\u3002\u4f7f\u7528\u8005\u5c0d\u61c9\u7528\u6388\u6b0a\u5f8c\u5f97\u5230\uff0c\u5373\u7b2c\u4e00\u6b65<br>\u4e2d\u958b\u767c\u8005\u7372\u53d6\u5230\u7684 auth_code \u503c\u3002\u5982\u958b\u767c\u8005\u9078<br>\u64c7\u50b3\u5165 refresh_token\uff0c\u5247\u7121\u9700\u50b3\u5165 code\u3002<\/td><\/tr><tr><td>refresh_token<\/td><td>string<\/td><td>false<\/td><td>Refresh token \u3002\u5237\u65b0 access_token \u6642\u4f7f\u7528\uff0c<br>\u82e5\u8acb\u6c42\u5df2\u50b3\u5165 code \u5f8c\u7121\u9700\u50b3\u5165\u3002<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"7-response\">Response<\/h3>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Name<\/th><th>Type<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>code<\/td><td>string<\/td><td>\u670d\u52d9\u4ee3\u78bc<\/td><\/tr><tr><td>msg<\/td><td>string<\/td><td>\u670d\u52d9\u8a0a\u606f<\/td><\/tr><tr><td>result<\/td><td>object<\/td><td>\u7d42\u7aef\u670d\u52d9\u56de\u50b3\u5167\u5bb9<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"8-api-documentation\">API Documentation<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"9-baseurl\">BaseURL<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>UAT\uff1a<a href=\"https:\/\/uat-gw-jop.jkos.app\">https:\/\/uat-gw-jop.jkos.app<\/a><\/li>\n\n\n\n<li>PROD\uff1a<a href=\"https:\/\/gw-jop.jkos.com\">https:\/\/gw-jop.jkos.com<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"10-request-url\">Request URL<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">POST https:\/\/{BaseUrl}\/api<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"11-content-type\">Content-Type<\/h3>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><strong>application\/x-www-form-urlencoded<\/strong><\/mark><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"12-1-%E5%8F%96%E5%BE%97-access-token-by-auth-code-or-refresh-token\">1. \u53d6\u5f97 access token (by auth code or refresh token)<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"13-description\">Description<\/h4>\n\n\n\n<p>\u7b2c\u4e09\u65b9\u670d\u52d9\u6b32\u8abf\u7528\u7528\u6236\u8a31\u53ef\u4e4b\u8cc7\u6599\u6216\u662f\u670d\u52d9\u6642\uff0c\u9700\u8981\u5148\u4f7f\u7528 authcode \u63db\u53d6\u8a2a\u554f\u4ee4\u724c access token\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"14-request-body-x-www-form-urlencoded\">Request Body (x-www-form-urlencoded)<\/h4>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Name<\/th><th>Type<\/th><th>Required<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>client_id<\/td><td>string<\/td><td>true<\/td><td>\u8868\u793a ISV \u696d\u8005\u4e4b\u8eab\u4efd\uff0c\u9700\u5e36\u5165\u65bc\u958b\u653e\u5e73\u53f0\u53d6\u5f97\u4e4b Credential<\/td><\/tr><tr><td>method<\/td><td>string<\/td><td>true<\/td><td>\u6b32\u547c\u53eb\u4e4b API \u540d\u7a31<\/td><\/tr><tr><td>sign<\/td><td>string<\/td><td>true<\/td><td>\u8a72\u8acb\u6c42\u4e4b\u7c3d\u7ae0<\/td><\/tr><tr><td>sign_method<\/td><td>string<\/td><td>true<\/td><td>\u7c3d\u540d\u6458\u8981\u7b97\u6cd5\uff0c\u76ee\u524d\u652f\u63f4\u7684\u503c\u70ba JKOS_SIGN<\/td><\/tr><tr><td>timestamp<\/td><td>string<\/td><td>true<\/td><td>\u50b3\u9001\u8a72\u8acb\u6c42\u7684 Unix \u6642\u9593\u6233\uff08\u7c92\u5ea6\uff1a\u6beb\u79d2\uff09<br>\u8857\u53e3\u91d1\u79d1 Gateway \u5141\u8a31\u8acb\u6c42\u6700\u5927\u6642\u9593\u8aa4\u5dee\u70ba\u4e00\u5c0f\u6642\u3002<\/td><\/tr><tr><td>grant_type<\/td><td>string<\/td><td>true<\/td><td>\u6388\u6b0a\u985e\u578b\uff0c\u5176\u503c\u53ef\u80fd\u70ba <strong>authorization_code<\/strong> \u6216 <strong>refresh_token<\/strong>\u3002<br>\u5176\u503c\u70ba authorization_code \u6642\uff0c\u4ee3\u8868\u4f7f\u7528 auth_code \u63db\u53d6\uff1b\u5176\u503c\u70ba refresh_token \u6642\uff0c\u4ee3\u8868\u7528 refresh_token \u63db\u53d6\u3002<\/td><\/tr><tr><td>code<\/td><td>string<\/td><td>false<\/td><td>\u6388\u6b0a\u78bc\u3002\u4f7f\u7528\u8005\u5c0d\u61c9\u7528\u6388\u6b0a\u5f8c\u5f97\u5230\uff0c\u5373\u7b2c\u4e00\u6b65<br>\u4e2d\u958b\u767c\u8005\u7372\u53d6\u5230\u7684 auth_code \u503c\u3002\u5982\u958b\u767c\u8005\u9078<br>\u64c7\u50b3\u5165 refresh_token\uff0c\u5247\u7121\u9700\u50b3\u5165 code<\/td><\/tr><tr><td>refresh_token<\/td><td>string<\/td><td>false<\/td><td>Refresh token \u3002\u5237\u65b0 access_token \u6642\u4f7f\u7528\uff0c<br>\u82e5\u8acb\u6c42\u5df2\u50b3\u5165 code \u5f8c\u7121\u9700\u50b3\u5165<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"15-request-example\">Request Example<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"\" class=\" line-numbers\">curl --location --request POST 'https:\/\/{BaseUrl}\/api' \\<br>--header 'Content-Type: application\/x-www-form-urlencoded' \\<br>--data-urlencode 'grant_type=authorization_code' \\<br>--data-urlencode 'code=935165030d357d7e2aab0a0d1e7f58bb' \\<br>--data-urlencode 'client_id=80938078' \\<br>--data-urlencode 'method=jkopay.system.oauth.token' \\<br>--data-urlencode 'sign=testsign' \\<br>--data-urlencode 'timestamp=1648201714000' \\<br>--data-urlencode 'sign_method=JKOS_SIGN'<\/code><\/pre>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\"># \u5982\u958b\u767c\u8005\u9078\u64c7\u50b3\u5165 refresh_token\uff0c\u5247\u7121\u9700\u50b3\u5165 code<br># -d &#8216;refresh_token=thisisrefreshtoken&#8217;<br># \u5237\u65b0 access_token\u6642\u4f7f\u7528\uff0c\u50b3\u5165 code\u5f8c\u7121\u9700\u50b3\u5165<\/mark><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"16-response-body\">Response Body<\/h4>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Name<\/th><th>Type<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>code<\/td><td>string<\/td><td>\u670d\u52d9\u4ee3\u78bc<\/td><\/tr><tr><td>msg<\/td><td>string<\/td><td>\u670d\u52d9\u8a0a\u606f<\/td><\/tr><tr><td>result<\/td><td>object<\/td><td>\u7d42\u7aef\u670d\u52d9\u56de\u50b3\u5167\u5bb9<\/td><\/tr><tr><td>result.user_id<\/td><td>string<\/td><td>\u7528\u6236\u65bc\u8857\u53e3\u7684 user_id<\/td><\/tr><tr><td>result.access_token<\/td><td>string<\/td><td>\u958b\u767c\u8005\u63a5\u4e0b\u4f86\u4f7f\u7528\u8857\u53e3\u958b\u653e\u5e73\u53f0\u6642\u6240\u9700\u8981\u7684 access token<\/td><\/tr><tr><td>result.expires_in<\/td><td>number<\/td><td>access_token \u6709\u6548\u671f\uff0c\u55ae\u4f4d\u70ba\u79d2<\/td><\/tr><tr><td>result.refresh_token<\/td><td>string<\/td><td>\u7528\u65bc\u53d6\u5f97\u65b0 access token \u7684 token&nbsp;<\/td><\/tr><tr><td>result.refresh_expires_in<\/td><td>number<\/td><td>refresh_token \u6709\u6548\u671f\uff0c\u55ae\u4f4d\u70ba\u79d2<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"17-response-example\">Response Example<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"\" class=\"\">{<br>    \"code\": \"OA-001\",<br>    \"msg\": \"Success\",<br>    \"result\": {<br>        \"user_id\": \"780a7306-0ef0-11ec-90a0-00505684fd45\",<br>        \"access_token\": \"21c71e5cbffe6ed8749c6be78fe7d727\",<br>        \"expires_in\": 2592000,<br>        \"refresh_token\": \"38a600e7b9e4cb89ccc043a2af0f285c\",<br>        \"refresh_expires_in\": 7776000<br>    }<br>}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"18-error-code\">Error Code<\/h4>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Error Code<\/th><th>Message<\/th><th>\u5099\u8a3b<\/th><\/tr><\/thead><tbody><tr><td>205<\/td><td>\u7121\u6548\u6216\u932f\u8aa4\u53c3\u6578\uff0c\u8acb\u53c3\u8003 msg \u56de\u8986<\/td><td><\/td><\/tr><tr><td>999<\/td><td>\u7db2\u95dc\u670d\u52d9\u7570\u5e38<\/td><td><\/td><\/tr><tr><td>OA-001<\/td><td>\u6210\u529f<\/td><td><\/td><\/tr><tr><td>OA-205<\/td><td>Auth Code \u5df2\u88ab\u4f7f\u7528<\/td><td><\/td><\/tr><tr><td>OA-360<\/td><td>Auth Code \u904e\u671f<\/td><td><\/td><\/tr><tr><td>OA-999<\/td><td>\u7cfb\u7d71\u7570\u5e38<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"19-2-%E8%AA%BF%E7%94%A8%E7%94%A8%E6%88%B6%E6%8E%88%E6%AC%8A%E8%B3%87%E6%96%99-by-access-token\">2. \u8abf\u7528\u7528\u6236\u6388\u6b0a\u8cc7\u6599 (by access token)<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"20-description\">Description<\/h4>\n\n\n\n<p>\u958b\u767c\u8005\u5728\u7372\u53d6\u4e86 access_token \u5f8c\uff0c\u5982\u679c\u60f3\u9032\u4e00\u6b65\u53d6\u5f97\u4f7f\u7528\u8005\u7684\u982d\u50cf\u3001\u66b1\u7a31\u7b49\u5176\u4ed6\u8a0a\u606f\uff0c\u53ef\u4ee5\u8abf\u7528 API&nbsp;<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">jkopay.user.profile<\/mark>&nbsp;\u53d6\u5f97\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"21-request-body-x-www-form-urlencoded\">Request Body (x-www-form-urlencoded)<\/h4>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Name<\/th><th>Type<\/th><th>Required<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>client_id<\/td><td>string<\/td><td>true<\/td><td>\u8868\u793a ISV \u696d\u8005\u4e4b\u8eab\u4efd\uff0c\u9700\u5e36\u5165\u65bc\u958b\u653e\u5e73\u53f0\u53d6\u5f97\u4e4b Credential<\/td><\/tr><tr><td>method<\/td><td>string<\/td><td>true<\/td><td>\u6b32\u547c\u53eb\u4e4b API \u540d\u7a31<\/td><\/tr><tr><td>sign<\/td><td>string<\/td><td>true<\/td><td>\u8a72\u8acb\u6c42\u4e4b\u7c3d\u7ae0<\/td><\/tr><tr><td>sign_method<\/td><td>string<\/td><td>true<\/td><td>\u7c3d\u540d\u6458\u8981\u7b97\u6cd5\uff0c\u76ee\u524d\u652f\u63f4\u7684\u503c\u70ba JKOS_SIGN<\/td><\/tr><tr><td>timestamp<\/td><td>string<\/td><td>true<\/td><td>\u50b3\u9001\u8a72\u8acb\u6c42\u7684 Unix \u6642\u9593\u6233\uff08\u7c92\u5ea6\uff1a\u6beb\u79d2\uff09<br>\u8857\u53e3\u91d1\u79d1 Gateway \u5141\u8a31\u8acb\u6c42\u6700\u5927\u6642\u9593\u8aa4\u5dee\u70ba\u4e00\u5c0f\u6642<\/td><\/tr><tr><td>access_token<\/td><td>string<\/td><td>false<\/td><td>\u8a2a\u554f\u4ee4\u724c<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"22-request-example\">Request Example<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"\" class=\" line-numbers\">curl --location --request POST 'https:\/\/{BaseUrl}\/api' \\<br>--header 'Content-Type: application\/x-www-form-urlencoded' \\<br>--data-urlencode 'client_id=80938078' \\<br>--data-urlencode 'method=jkopay.user.profile' \\<br>--data-urlencode 'sign=testsign' \\<br>--data-urlencode 'timestamp=1648201714000' \\<br>--data-urlencode 'access_token=fc2bba6e5f5215a102517fbc7b19bf71' \\<br>--data-urlencode 'sign_method=JKOS_SIGN'<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"23-response-body\">Response Body<\/h4>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Name<\/th><th>Type<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>code<\/td><td>string<\/td><td>\u670d\u52d9\u4ee3\u78bc<\/td><\/tr><tr><td>msg<\/td><td>string<\/td><td>\u670d\u52d9\u8a0a\u606f<\/td><\/tr><tr><td>result<\/td><td>object<\/td><td>\u7d42\u7aef\u670d\u52d9\u56de\u50b3\u5167\u5bb9<\/td><\/tr><tr><td>result.user_id<\/td><td>string<\/td><td>\u7528\u4ee5\u6a19\u8b58\u8857\u53e3\u4f7f\u7528\u8005\u7684\u552f\u4e00ID<\/td><\/tr><tr><td>result.phone<\/td><td>string<\/td><td>\u4f7f\u7528\u8005\u624b\u6a5f\uff08\u82e5\u7528\u6236\u7121\u6b64\u503c\u5247\u70ba\u7a7a\uff09<\/td><\/tr><tr><td>result.email<\/td><td>string<\/td><td>\u4f7f\u7528\u8005\u96fb\u5b50\u4fe1\u7bb1\uff08\u82e5\u7528\u6236\u7121\u6b64\u503c\u5247\u70ba\u7a7a\uff09<\/td><\/tr><tr><td>result.phone_barcode<\/td><td>string<\/td><td>\u4f7f\u7528\u8005\u624b\u6a5f\u8f09\u5177\uff08\u82e5\u7528\u6236\u7121\u6b64\u503c\u5247\u70ba\u7a7a\uff09<\/td><\/tr><tr><td>result.name<\/td><td>string<\/td><td>\u4f7f\u7528\u8005\u540d\u59d3\u540d\uff08\u82e5\u7528\u6236\u7121\u6b64\u503c\u5247\u70ba\u7a7a\uff09<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"24-response-example\">Response Example<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"\" class=\"\">{<br>    \"code\": \"UP-001\",<br>    \"msg\": \"Success\",<br>    \"result\": {<br>        \"user_id\": \"780a7306-0ef0-11ec-90a0-00505684fd45\",<br>        \"phone\": \"+886922135789\",<br>        \"email\": \"0922135789@jkos.com\",<br>        \"phone_barcode\": \"\",<br>        \"name\": \"\u81ea\u52d5\u5316\",<br>        \"id_number\": \"A000000000\",<br>        \"birthday\": \"\",<br>        \"gender\": \"\",<br>        \"avatar\": \"\",<br>        \"nickname\": \"\",<br>        \"jkos_account\": \"\"<br>    }<br>}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"25-error-code\">Error Code<\/h4>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Error Code<\/th><th>Message<\/th><th>\u5099\u8a3b<\/th><\/tr><\/thead><tbody><tr><td>205<\/td><td>\u7121\u6548\u6216\u932f\u8aa4\u53c3\u6578\uff0c\u8acb\u53c3\u8003 msg \u56de\u8986<\/td><td><\/td><\/tr><tr><td>405<\/td><td>\u6b0a\u9650\u4e0d\u8db3<\/td><td><\/td><\/tr><tr><td>999<\/td><td>\u7db2\u95dc\u670d\u52d9\u7570\u5e38<\/td><td><\/td><\/tr><tr><td>UP-001<\/td><td>\u6210\u529f<\/td><td><\/td><\/tr><tr><td>UP-360<\/td><td>Auth Code \u904e\u671f<\/td><td><\/td><\/tr><tr><td>UP-460<\/td><td>Access Token \u904e\u671f<\/td><td><\/td><\/tr><tr><td>UP-999<\/td><td>\u7cfb\u7d71\u7570\u5e38<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"featured_media":0,"parent":1381,"menu_order":1,"comment_status":"open","ping_status":"closed","template":"","doc_tag":[],"class_list":["post-1450","docs","type-docs","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/open-doc.jkos.com\/index.php?rest_route=\/wp\/v2\/docs\/1450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/open-doc.jkos.com\/index.php?rest_route=\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/open-doc.jkos.com\/index.php?rest_route=\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/open-doc.jkos.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1450"}],"version-history":[{"count":20,"href":"https:\/\/open-doc.jkos.com\/index.php?rest_route=\/wp\/v2\/docs\/1450\/revisions"}],"predecessor-version":[{"id":1602,"href":"https:\/\/open-doc.jkos.com\/index.php?rest_route=\/wp\/v2\/docs\/1450\/revisions\/1602"}],"up":[{"embeddable":true,"href":"https:\/\/open-doc.jkos.com\/index.php?rest_route=\/wp\/v2\/docs\/1381"}],"next":[{"title":"OAuth \u9a57\u7c3d\u5de5\u5177","link":"https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/oauth-%e9%a9%97%e7%b0%bd%e5%b7%a5%e5%85%b7","href":"https:\/\/open-doc.jkos.com\/index.php?rest_route=\/wp\/v2\/docs\/925"}],"prev":[{"title":"\u958b\u653e\u5e73\u53f0\u7c21\u4ecb","link":"https:\/\/open-doc.jkos.com\/?docs=inapp-%e7%ac%ac%e4%b8%89%e6%96%b9%e6%9c%8d%e5%8b%99\/oauth\/%e9%96%8b%e6%94%be%e5%b9%b3%e5%8f%b0%e7%b0%a1%e4%bb%8b","href":"https:\/\/open-doc.jkos.com\/index.php?rest_route=\/wp\/v2\/docs\/1424"}],"wp:attachment":[{"href":"https:\/\/open-doc.jkos.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1450"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/open-doc.jkos.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdoc_tag&post=1450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}