用户登陆授权
打点平台提供 oAuth 登陆授权机制,开发者可以通过以下三步来获取用户基本信息。
第一步:用户同意授权,获取 code
code
说明 :code
作为换取access_token
的票据,每次用户授权带上的code
将不一样,code
只能使用一次,5 分钟未被使用自动过期。
商家跳转到打点钱包进行授权
-
地址: https://www.ddpurse.com/openapi/get_code?app_id={app_id}&redirect_uri={redirect_uri}
-
方式:
GET
(必须是浏览器,不能从后端) -
参数:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
app_id | string | 是 | 商家应用账号 |
redirect_uri | string | 是 | 授权后重定向的链接地址,必须开头http://或者https:// |
当地开发的话 redirect_uri 不要用 localhost,可以先用
ifconfig | grep netmask
找到你的本地 IP,例如192.168.1.142
然后这里输入http://192.168.1.142:3000
。记得在我们开房平台的应用设置页面注册这个回调地址,注册时候不要用 http,直接是192.168.1.142:3000
。
下图为跳转到打点钱包的授权页面:

- 用户点击同意,页面将跳转至 {redirect_uri}/?code={code}
例:http://www.example.com?code=8506d6f290f2c944ab95879b29ef98ee19d36829711d5ba17459ef672153ad4a
- 用户点击拒绝,页面将跳转至{redirect_uri},并不会携带{code}
错误返回码说明如下:
返回码 | 说明 |
---|---|
10003 | redirect_uri 域名与后台配置不一致 |
第二步:通过 code 换取网页授权 access_token
注意:
1、由于打点钱包的secret
和获取到的access_token
安全级别都非常高,必须只保存在服务器,不允许传给客户端
2、后续刷新access_token
、通过access_token
获取用户信息等步骤,必须从服务器发起
-
方式:
POST
-
Body 参数(JSON):
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
app_id | string | 是 | 商家应用账号 |
secret | string | 是 | 商家应用密钥 |
code | string | 是 | 第一步中获取的 code |
- 请求案例
curl --location --request POST 'https://www.ddpurse.com/openapi/access_token' \
--header 'Content-Type: application/json' \
--data-raw '{
"app_id":"0d158bc3605fffef7046f0c9c7e4bf",
"secret":"e9943b6b167554f55e39c1428c1d86",
"code":"593f40971422015be811f8526970436f5326b5371a514ca5c45b53bc4ec85039"
}'
- 成功
错误码
code
为0
时表示成功
{
"code": 0,
"msg": "",
"data": {
"access_token": "ACCESS_TOKEN",
"expires_in": 7200,
"refresh_token": "REFRESH_TOKEN"
}
}
- 失败
{
"code": -10017,
"data": [],
"msg": "登录错误,code 无效,错误码:10017"
}
- 返回参数说明
参数 | 类型 | 说明 |
---|---|---|
access_token | string | 接口调用凭证 |
expires_in | int | access_token 接口调用凭证超时时间,单位(秒) |
refresh_token | string | 用户刷新 access_token,见附 1 |
第三步:拉取用户信息
开发者可以通过 access_token
拉取用户信息了。
-
地址: https://www.ddpurse.com/openapi/get_user_info?access_token={access_token}
-
方式:
GET
-
参数:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | string | 是 | 第二步中获取的接口调用凭证 |
- 成功
错误码
code
为 0 时表示成功
{
"code": 0,
"msg": "",
"data": {
"user_open_id": "USER_OPEN_ID",
"user_name": "USER_NAME",
"user_avatar": "USER_AVATAR",
"user_address": "1BNPUQAGjAmW9m8cK3HV4Xp3GZLnW1UZ99",
"pay_status": 1,
"pre_amount": 800,
"total_amount": 12000
}
}
- 失败
{
"code": 10021,
"msg": "登录错误,获取用户信息失败,错误码:10021",
"data": []
}
- 返回参数说明
参数 | 类型 | 说明 |
---|---|---|
user_open_id | string | 用户的唯一标识 |
user_name | string | 用户昵称 |
user_avatar | string | 用户头像,为图片 url 地址 |
user_address | string | 用户的收款地址 |
pay_status | int | 是否授权小额支付,0 为否,1 为是 |
pre_amount | int | 小额支付的单笔最大金额 |
total_amount | int | 小额支付的累计最大金额 |
附 1:刷新 access_token
由于
access_token
拥有较短的有效期(7200 秒),当access_token
超时后,可以使用refresh_token
进行刷新,refresh_token
有效期为 30 天,当refresh_token
失效之后,需要用户重新授权。
-
地址: https://www.ddpurse.com/openapi/refresh_access_token?app_id={app_id}&refresh_token={refresh_token}
-
方式:
GET
-
参数:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
app_id | string | 是 | 商家应用账号 |
refresh_token | string | 是 | 用来刷新 access_token 的 token |
- 成功
错误码
code
为 0 时表示成功
{
"code": 0,
"msg": "",
"data": {
"access_token": "ACCESS_TOKEN",
"expires_in": 7200,
"refresh_token": "REFRESH_TOKEN"
}
}
- 失败
{
"code": 10303,
"msg": "刷新 access_token 错误,刷新 access token 失败,错误码:10303",
"data": []
}
- 返回参数说明
参数 | 类型 | 说明 |
---|---|---|
access_token | string | 接口调用凭证 |
expires_in | int | access_token 接口调用凭证超时时间,单位(秒) |
refresh_token | string | 用户刷新 access_token |
附 2:检验 access_token
-
地址: https://www.ddpurse.com/openapi/check_access_token/?access_token={access_token}
-
方式:
GET
-
参数:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
access_token | string | 是 | 第二步中获取的接口调用凭证 |
- 成功
错误码{code}为 0 时表示成功
{
"code": 0,
"msg": "",
"data": {
"status": 1,
"expire_time": 4010
}
}
- 失败
{
"code": 10021,
"msg": "登录错误,获取用户信息失败,错误码:10021",
"data": []
}
- 返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
status | int | 状态,0 为不存在,-1 为已过期,1 为有效 |
expire_time | int | 有效剩余时间,单位为秒 |