支付宝小程序扩展能力 AntBuilder 用户信息对接指南

2020-09-19 10:45 更新

使用目的

在小程序跳转外部 H5 页面或用户登录时,由于业务场景需要依赖用户信息来打通完整业务流程,接入方可按照下列方式获取到用户信息进行留存或用户认证。

互通模式

登录回调模式

操作流程

操作员需要在 web-managemnt 管理后台配置登录后回调地址。

image.png

image.png

实例

说明:收到通知后成功返回 true 字符串,失败返回 false 字符串;如内部逻辑复杂,建议使用异步方式处理;根据支付宝 UID 做好用户幂等操作。

demo 示例

 /**    
* 登录后通知demo,收到通知后通过SDK调用用户信息获取     
* appId:应用ID     
* ticket:用户授权令牌     
* @return     
*/    
@RequestMapping(value = "/login/notify"m,ethod = {RequestMethod.GET,RequestMethod.POST})
    public String  loginNotify(String appId,String ticket){
        UserAccountApi api = new UserAccountApi("127.0.0.1",8080);
        try {
            UserAccountInfo userAccountInfo = api.queryUserInfo(appId, ticket);
            System.out.println(JSON.toJSONString(userAccountInfo));
        } catch (Exception e) {
            return "false";
        }
        return "true";
    }

说明:获取用户信息的方法参考下方说明。

服务跳转参数模式

参数说明

  • ticket:用户授权凭证
  • appId:应用的 APPID
  • auth_code:支付宝用户授权码(参数名可动态更改),可通过该码进行服务端用户信息交换。

说明:获取用户信息的方法参考下方说明。

服务跳转类型

  • H5 跳转

例如:http://www.taobao.com

  • 外部小程序跳转

例如:alipays://platformapi/startapp?appId=2021001130622070

取参方式

获取小程序启动参数需要在小程序 app.js 文件 app() 的 onLaunch(options) 监听小程序初始化函数中使用 options.query 获取,获取到值后,可以设置全局变量,使用页面通过 getApp() 方式获取。

demo 示例

App({
  onLaunch(options) {
    console.log('options====', options);
    const { query = {} } = options;
    this.globalData.ticket = query.ticket;
    this.globalData.appId = query.appId;
    this.globalData.auth_code = query.auth_code;
  },
  onShow() {
    console.log('app onShow');
  },
  onHide() {
    console.log('--------onHide');
  },
  onError(msg) {
    console.log('app OnError: ', msg);
  },
  shareData: {
  },
  globalData: {
    ticket: '',
  },
});
  • 本地小程序跳转

 // 页面 page/index/indexconst app = getApp()
const ticket = app.ticket;
const appIdRes = my.getAppIdSync();

说明:获取用户信息的方法参考下方说明。

获取用户信息方式

前端获取 ticket、appId 参数后,通过服务端完成用户信息的获取,通过用户信息获取完成用户认证。

说明:该接口只适用于服务端交互,暂不支持直接对外网开放,需要由业务系统包装一层后传到前端系统。

SDK 方式

下载 SDK

调用示例

UserAccountApi api = new UserAccountApi("127.0.0.1",8080);// web-management内网IP,端口号
/*参数说明:1、appId : 由小程序端携带传递(应用ID)2、ticket: 由小程序端携带传递(用户授权令牌)3、cardTemplateId: 由小程序端携带传递,可为空*/
UserAccountInfo userAccountInfo = api.queryUserInfo("2021001137624110","0EK4MjA4ODExMjYzNTE4Mzk1Ng==37Q","2222");
System.out.println(JSON.toJSONString(userAccountInfo));

HTTP 方式

  • 接口地址:/api/v1/biz/user/info
  • 请求方式:get/post
  • 请求参数:
参数 类型 必填 最大长度 参数说明
ticket String 64 服务端用户凭证(前端参数)
appId String 64 应用 ID(前端参数)
cardTemplateId String 64 会员卡模板 ID,会员卡号查询时存在

  • 响应参数(json 格式)
参数 类型 必填 最大长度 描述
code String - 接口返回码
msg String - 接口返回码描述
data Object - 业务数据
└expiresTime long - 访问令牌的到期时间
└avatar string - 头像
└alipayUid string 65 支付宝用户唯一标识
└nickName string - 支付宝昵称
└fullName - 用户真实姓名
└phone string - 手机号
└idcardNoMD5 string - 身份证号MD5加密
└idcardNo string - 身份证号
└certType string - 证件类型
└gender string - 性别 m/f
└email string - 邮箱
└address string - 住址
└province String 20 省份名称
└city String 20 市名称。
└isCertified string - 是否实名,T/F
└bizCardNos List - 用户会员卡号列表,cardTemplateId有值时为单个,cardTemplateId无则查询该用户下所有的卡号

  • API 公共错误码
code(返回码) msg(返回码描述) 解决方案
200 接口调用成功 使用data展示数据
20001 授权权限不足,ticket参数为空 通过1.1.1接口获取票据
20002 授权已过期 通过1.1.1接口重新获取票据
40001 业务参数缺失 检查请求参数必填项
40004 业务处理失败 -

AuthCode方式

说明:仅适合 java 语言。

可通过参数 auth_code 进行用户信息获取。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号