Appearance
爱读图通用接口
- 这个记录一些 爱读图通用接口
扫码登录
- 扫码登录分 2 个步骤
1.获取登录二维码
shell
curl --request POST \
--url https://www.lingduquan.com/wx/qrlogin \
--header 'Content-Type: application/json' \
--data '{
"app":"aidutu",
"prefix":"yi"
}'curl --request POST \
--url https://www.lingduquan.com/wx/qrlogin \
--header 'Content-Type: application/json' \
--data '{
"app":"aidutu",
"prefix":"yi"
}'- 提交体
json
{
"app": "aidutu", //公众号
"prefix": "yi" //前缀代表服务
}{
"app": "aidutu", //公众号
"prefix": "yi" //前缀代表服务
}- 返回得到
url关注公众号的二维码 需要以二维码显示给微信扫码 - 返回得到
token给下一步使用 - 返回体如下
json
{
"token": "yi:abc1212233",
"url": "http://weixin.qq.com/q/02gemzBCLXdwF1TjUhxEcf"
}{
"token": "yi:abc1212233",
"url": "http://weixin.qq.com/q/02gemzBCLXdwF1TjUhxEcf"
}2.获取登录结果
- 返回体
json
{
"open_id": "ob7tg6a6-L4pn8d0vueJPMfq4ZFk",
"status": "success",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTk4MTA1OTAsImlhdCI6MTc1ODUxNDU5MCwib3Blbl9pZCI6Im9iN3RnNmE2LUw0cG44ZDB2dWVKUE1mcTRaRmsiLCJ1c2VyX2lkIjoiMjEzMjQifQ.hbTHeBeUlyJz6QERj45Fo9LE74wwtbU-9yL3DA4sCQg",
"user_id": "21324"
}{
"open_id": "ob7tg6a6-L4pn8d0vueJPMfq4ZFk",
"status": "success",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTk4MTA1OTAsImlhdCI6MTc1ODUxNDU5MCwib3Blbl9pZCI6Im9iN3RnNmE2LUw0cG44ZDB2dWVKUE1mcTRaRmsiLCJ1c2VyX2lkIjoiMjEzMjQifQ.hbTHeBeUlyJz6QERj45Fo9LE74wwtbU-9yL3DA4sCQg",
"user_id": "21324"
}- 返回体说明
| 字段 | 类型 | 说明 |
|---|---|---|
| open_id | string | 微信公众号 open_id |
| status | string | 取值 success 或者 wait_scan |
| token | string | token 是一个 jwt 的 token , 后面的交互就把 token 放到 header 中 |
| user_id | string | user_id |
- 最终得到是 token jwt 字符串
- token 的 jwt 里面包含
user_idopen_id过期时间等 - 如何解 jwt ?需要秘钥 可以跟工作人员联系
微信支付
- 微信外 通过扫码 得到支付链接到 微信内支付
- 微信内 直接链接到支付页
- 需要约定 webhook 地址
- 需要约定 返回地址 地址
1.获取支付链接
- 直接用户访问 https://www.lingduquan.com/pay/weixin/yi-{user_id}-{amount}
yi对于的是前缀user_id用户 uidamount支付金额单位:人民币分- 样例 https://www.lingduquan.com/pay/weixin/yi-9-100
9是用户 uid ,1人民币的支付金额 - 如果是在微信外,请将支付链接转为二维码,然后在微信内扫码支付
2 webhook
提交体 格式
json
{
"do": "finish", //动作 finish 完成,create 建立
"act": "yi",
"ctime": 1758611970,
"payload": {
提交数据
}
}{
"do": "finish", //动作 finish 完成,create 建立
"act": "yi",
"ctime": 1758611970,
"payload": {
提交数据
}
}返回显示 ok
2.1 webhook 订单建立
json
{
"do": "create",
"act": "yi",
"ctime": 1758611970,
"payload": {
"user_id": "9",
"open_id": "ob7tg6a6-L4pn8d0vueJPMfq4ZFk",
"amount": "10",
"trade_no": "WJ202509231447447592"
}
}{
"do": "create",
"act": "yi",
"ctime": 1758611970,
"payload": {
"user_id": "9",
"open_id": "ob7tg6a6-L4pn8d0vueJPMfq4ZFk",
"amount": "10",
"trade_no": "WJ202509231447447592"
}
}do为create建立订单payload.user_id用户 uidpayload.open_id用户 open_idpayload.amount支付金额payload.trade_no外部订单号
2.2 webhook 支付完成
json
{
"do": "finish",
"act": "yi",
"ctime": 1758611970,
"payload": {
"user_id": "9",
"trade_no": "WJ202509231519185462",
"amount": "10",
"pay_id": "4200002792202509233954521750",
"pay_time": "1758611970",
"payer": "ob7tg6a6-L4pn8d0vueJPMfq4ZFk"
}
}{
"do": "finish",
"act": "yi",
"ctime": 1758611970,
"payload": {
"user_id": "9",
"trade_no": "WJ202509231519185462",
"amount": "10",
"pay_id": "4200002792202509233954521750",
"pay_time": "1758611970",
"payer": "ob7tg6a6-L4pn8d0vueJPMfq4ZFk"
}
}do为finish支付订单完成payload.payer支付人 open_idpayload.pay_id支付订单号
3 主动查询支付结果
返回体
json
{
"data": {
"status": "success",
"payload": {
"user_id": "9",
"trade_no": "WJ202509231519185462",
"amount": "1",
"ctime": "1758611958",
"act": "yi",
"pay_id": "4200002792202509233954521750",
"pay_time": "1758611970",
"payer": "ob7tg6a6-L4pn8d0vueJPMfq4ZFk"
}
},
"error": 0,
"error_des": ""
}{
"data": {
"status": "success",
"payload": {
"user_id": "9",
"trade_no": "WJ202509231519185462",
"amount": "1",
"ctime": "1758611958",
"act": "yi",
"pay_id": "4200002792202509233954521750",
"pay_time": "1758611970",
"payer": "ob7tg6a6-L4pn8d0vueJPMfq4ZFk"
}
},
"error": 0,
"error_des": ""
}data.status为success表示成功
微信内登录
- 需要预设 返回的 url 比如
http:://a.cn/login - 最终会返回
http:://a.cn/login?code={code} code为微信返回的 code
1.获取登录的 code
- 这个步骤是用户点击的,不是程序请求
api=yi需要先预定返回的 url 比如约定http:://a.cn/login- 最终会引导用户 redirect 到
http:://a.cn/login?code={code}
2.通过 code 拉取登录信息
- 返回体
json
{
"open_id": "ob7tg6a6-L4pn8d0vueJPMfq4ZFk",
"status": "success",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTk4MTA1OTAsImlhdCI6MTc1ODUxNDU5MCwib3Blbl9pZCI6Im9iN3RnNmE2LUw0cG44ZDB2dWVKUE1mcTRaRmsiLCJ1c2VyX2lkIjoiMjEzMjQifQ.hbTHeBeUlyJz6QERj45Fo9LE74wwtbU-9yL3DA4sCQg",
"user_id": "21324"
}{
"open_id": "ob7tg6a6-L4pn8d0vueJPMfq4ZFk",
"status": "success",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTk4MTA1OTAsImlhdCI6MTc1ODUxNDU5MCwib3Blbl9pZCI6Im9iN3RnNmE2LUw0cG44ZDB2dWVKUE1mcTRaRmsiLCJ1c2VyX2lkIjoiMjEzMjQifQ.hbTHeBeUlyJz6QERj45Fo9LE74wwtbU-9yL3DA4sCQg",
"user_id": "21324"
}- 返回体说明
| 字段 | 类型 | 说明 |
|---|---|---|
| open_id | string | 微信公众号 open_id |
| status | string | 取值 success 或者 wait_scan |
| token | string | token 是一个 jwt 的 token , 后面的交互就把 token 放到 header 中 |
| user_id | string | user_id |
- 最终得到是 token jwt 字符串
- token 的 jwt 里面包含
user_idopen_id过期时间等 - 如何解 jwt ?需要秘钥 可以跟工作人员联系
HIGO