学习分享,一起进步

注:若是公司是在原来已经使用过支付宝老的快捷登陆接口的基础上做快捷登录接口升级,那么可能会遇到麻烦,因为支付宝老的快捷登录接口返回的是16位openId(有些叫UserId,现在支付宝都统称叫OpenId),而新的支付宝快捷登陆接口返回的是32的OpenId!该问题,后面会介绍解决办法。

支付宝快捷登陆新接口暂时仅支持移动版本的快捷登陆

所以这里暂时讲下支付宝无线快捷登陆的集成的注意事项(支付宝的教程也比较详细,我这里主要说下我在集成过程终于到的问题,可以让后来的小伙伴少走些弯路)

支付宝新版本的快捷登陆集成步骤:

1、签约

公司需要有公司的支付宝账号(开发者账号),作为商家账号,支付宝会为每一个商家账号分配一个PID,PID只是一个编号,是商家的唯一标识。

在该账号下面需要与支付宝签订“无线账户授权V1”协议,签订协议后,在该协议下,会为商家分配对应该协议的APPID。

PID、APPID这两个东西是支付宝用户定位商家和支付宝产品的坐标,这两个ID的会贯穿整个与支付宝的交互过程!

协议签订完成后,就可以做支付宝快捷登陆功能的集成了!!

2、下载支付宝无线快捷登录集成教程以及DEMO

我在官网上找了好久的快捷登录教程,仅仅看到了PC版本的快捷登陆教程,最后无线版本的教程是产品经理发给我的,我这里把该教程上次到到CSDN空间,供大家在官网找不到教程的时候在这里下载:

支付宝无线快捷授权登录-下载地址

在查看了支付宝的快捷登陆教程后,大家应该大概知道怎么做了,但是应该还会存在一些问题,但是至少已经知道怎么生出RSA密钥、公钥了吧,所以在继续下面的步骤的时候,你最好已经有了RSA公钥、私钥了

注:RSA是一种加密方式,RSA密钥分为公钥、私钥两种,公钥是对外公开的,,而私钥是需要保密的,所以在接下里的步骤中大家一定要注意公钥、私钥的不同使用地方

3、进入支付宝上家服务网站(https://b.alipay.com),维护对应“无线账户授权V1”的RSA公钥,以及一些必要的设置

具体设置步骤请参考其他帖子:

4、完成上面的步骤后,我们手里已经拿到了如下几个关键的参数:

PID、APPID、RSA私钥、RSA公钥、支付宝集成DEMO

为了减少客户端的逻辑,以及信息的安全性,我们这里把大部分逻辑放到后台实现,让一些敏感的参数不会被外部获取到(比如RSA私钥),所以我下面的代码仅仅只是后台代码逻辑,至于我们的客户端(Android/IOS等)怎么写代码,参考支付宝DEMO、以及文档几乎不会出任何问题

注:在继续下面之前我假设您已经对支付宝快捷登录集成有一个大概了解了

5、支付宝请求报文(调用支付宝SDK的参数拼接,我这里称为报文)

具体写法参考支付宝提供的demo,这里只对一些参数坐下说明:

apiname:com.alipay.account.auth(固定值)

app_id:上面提到过的APPID

auth_type:AUTHACCOUNT(授权登录就用这个、固定值)

biz_type:openservice(固定值)

app_name:mc(固定值)

product_id:WAP_FAST_LOGIN(固定值)

sin_date:当前系统时间,具体日期格式参考支付宝demo

target_id:这个东西也是必填的,用来标志每次请求支付宝的唯一请求,我这里是每次请求生成一个UUID

pid:上面提到过的PID

scope:kuaijie(固定值)

具体的加密步骤以及参数拼接参考支付宝的DEMO就够了,这里列举出来的一些参数都是需要注意的!!

6、支付宝返回的几种常见的错误码,以及解决办法

系统繁忙,请稍后再试(ALI164)

报这个错,一般是值没有进行步骤4的进行公钥更新

系统繁忙,请稍后再试(ALI110)

报这个错,一般是由于与支付宝的协议问题(需要与支付宝签无线账户授权V1协议),若是公司有多个支付宝账号,一定要确认产品或者商务给你提供的支付宝账号是否正确。

系统繁忙,请稍后再试(ALI619)

报这个异常,直接意思就是说明RSA签名有问题,如果报这个错,那需要检查下步骤4中的公钥设置是否正确,若是这个设置没问题,在检查下你各个参数的配置是否有问题,支付宝的每个参数值都要加双引号的

7、关于支付宝无线快捷登陆接口升级中,支付宝返回的UserId,新老接口不一样的解决办法

支付宝在开放平台提供了一个接口alipay.platform.openid.get,通过这个接口,商家可以把存量的UserId从16位升级到32位

支付宝开放平台地址:

这里我就仅对这个接口调用的时候一些注意点简要说明下就行了,具体的操作步骤,还是参考支付宝提供的文档吧。

调用支付宝开放平台的接口最简单的方式,就是调用下载支付宝的SDK,使用支付宝提供的SDK开发代码就很简单了

public static void main(String[] args) throws AlipayApiException {String serverUrl = "https://openapi.alipay.com/gateway.do";String appId = "20150115000xxxxx";String privateKey = "MIICd……..3s2/r0=";AlipayClient client = new DefaultAlipayClient(serverUrl, appId, privateKey, "json");AlipayPlatformOpenidGetRequest req = new AlipayPlatformOpenidGetRequest();req.setBizContent("{\&;user_ids\&;:[\&;20889029562xxxxx\&;,\&;20889029562xxxxx\&;,\&;20889029562xxxxx\&;]}");AlipayPlatformOpenidGetResponse res = client.execute(req, null);System.out.println(res.getMsg());;System.out.println(res.getParams());System.out.println(res.getBody());}若是你是第一次调用支付宝的开放平台接口,bizContent的格式一定要参考上面的代码,这个代码是同时传了3个老的支付宝userId,这个接口支持一次1-50个userid。

当一个人真正觉悟的一刻,他放弃追寻外在世界的财富,而开始追寻他内心世界的真正财富

学习分享,一起进步

相关文章:

你感兴趣的文章:

标签云: