应用宝YSDK支付接入技术细节

前言

应用宝是出了名的坑,主要体现在:

  • 文档杂乱繁多

  • 信息不全或描述模糊

  • 文档格式不规范

  • 技术支持很不及时

并且可以明显察觉到为了兼容QQ和微信,应用宝的接入规范有诸多不合理的地方。来来回回折腾了一周,流程总算通了。这里给大家分享一下接入的一些注意事项

参数的处理

应用宝有非常多的参数。在文档里有相关的说明,我补充说明一下:

首先拿到一套接入参数中,QQ和微信各有一套appidappkey,各自的appkey只有登录的时候使用,不区分沙箱和线上环境。支付还有单独的一套appkey,区分沙箱和线上环境。登录校验的时候,QQ微信使用各自的appkey。支付的时候:

  • 统一使用QQ的appid

  • 如果是沙箱环境,统一使用沙箱的appkey

  • 正式环境,使用正式环境的appkey

另外客户端登录后获取的返回参数一共有6个,其中openid,pf,pfkey为微信QQ共有,用途也是一样。而其他的参数:

  • access_token:qq的token有效时间是90天,微信的只有2小时,这一点给业务设计造成了一定的麻烦。同时也是微信的支付票据

  • payToken:qq独有,做为qq支付的票据

  • refreshToken:微信独有,文档注明是用来刷新微信access_token,但是并没有给出相关的刷新接口文档。根据技术支持的回复,由客户端实时调用getLoginRecord()来获取最新的token,我理解为:服务端无法维护微信token,并且保存token也没有意义。具体做法是客户端发起支付的时候,同步传入所有需要的token、pfkey等字段,服务端不做任何保存

  • 即支付接口里的openkey,qq传payToken,微信传access_token

以上参数,不要弄混淆了。

支付接口调用

支付接口签名比较坑,构造过程容易疏漏出错,而且奇葩的是有几个参数居然需要设置到Cookie里。在Google了应用宝的接入经验之后,才发现实际上是有接口通用demo的(下载地址),签名自动做好了(文档和技术支持貌似都没有提到还有这么个demo)。下载下来发现不能直接使用,需要自己略做修改。

以JDK1.7为例,需要下载两个额外的jar包:

demo的入口文件为:OpenApiV3.java,要拿来用还有几个要注意的地方:

  • 只有post的请求方式,自己略作修改新增了一个get请求方式(应用宝的支付接口都是https 的get请求),

  • Cookie需要自己赋值,demo里是直接置为null

  • demo里有个校验openid基本格式的方法,根据实际测试,只符合qq的openid格式,微信的openid则不满足,暂时直接去掉了这个校验。

  • 修改后的文档见附件,直接替换demo里的同名文件即可

cookie直接按照接口文档里的提示设置即可

其他注意事项

  • /v3/r的接口前缀是签名的时候才加,请求接口的地址不要加

  • 应用宝企业QQ提供的技术支持基本上等于没有,还是需要商务联系真正的技术支持人员

附录:相关代码

修改后的OpenApiV3代码见 github,直接覆盖demo里同名文件即可

调用代码为:


//请求应用宝接口

OpenApiV3 ysdkHelper = new OpenApiV3(appId,secretKey);

//设置域名

ysdkHelper.setServerName(domain);

//接口路径 、http请求类型、请求参数、cookies、http协议

String response = ysdkHelper.api(api,httpType ,reqParam,cookies, "https");
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值