用户登陆授权

打点平台提供 oAuth 登陆授权机制,开发者可以通过以下三步来获取用户基本信息。

  1. 第一步:用户同意授权,获取 code

  2. 第二步:通过 code 换取网页授权 access_token

  3. 第三步:拉取用户信息

  4. 附 1:刷新 access_token

  5. 附 2:检验 access_token

第一步:用户同意授权,获取 code

code 说明 :code 作为换取 access_token 的票据,每次用户授权带上的 code将不一样,code 只能使用一次,5 分钟未被使用自动过期。

商家跳转到打点钱包进行授权

参数 类型 是否必须 说明
app_id string 商家应用账号
redirect_uri string 授权后重定向的链接地址,必须开头http://或者https://

下图为跳转到打点钱包的授权页面:

Authorize
  • 用户点击同意,页面将跳转至 {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 获取用户信息等步骤,必须从服务器发起

参数 类型 是否必须 说明
app_id string 商家应用账号
secret string 商家应用密钥
code string 第一步中获取的 code
  • 请求案例
curl --location --request POST 'https://www.ddpurse.com/platform/openapi/access_token' \
--header 'Content-Type: application/json' \
--data-raw '{
	"app_id":"0d158bc3605fffef7046f0c9c7e4bf",
	"secret":"e9943b6b167554f55e39c1428c1d86",
	"code":"593f40971422015be811f8526970436f5326b5371a514ca5c45b53bc4ec85039"
}'
  • 成功

错误码code0 时表示成功

{
  "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 拉取用户信息了。

参数 类型 是否必须 说明
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 失效之后,需要用户重新授权。

参数 类型 是否必须 说明
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

参数 类型 是否必须 说明
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 有效剩余时间,单位为秒