支付宝集分宝接口开发的相关问题解答

上周做了个后台自动派发集分宝的功能,折腾了三天才搞定,其实主要是支付宝的自己问题

支付宝应用沙箱的私钥其实是经过 PKCS8 编码过的,导致PHP根本无法使用,

openssl_get_privatekey 方法直接就报错了,无效的私钥格式

Warning: openssl_sign(): supplied key param cannot be coerced into a private key


我一开始以为是配置问题,但本地和服务器都已安装并开启 openssl ,在网上搜索了半天没搞定

后来干脆自己生成了一个私钥,用原生私钥来试了一次,结果就没有报错了,在将私钥 PKCS8 编码后试了试就出现上面同样的错误

下面是支付宝官方的公私钥生成方法:

https://openhome.alipay.com/doc/docIndex.htm?url=https://openhome.alipay.com/doc/viewKbDoc.htm?key=236615_428849&type=info




主要就是耽误在这里了,和他们技术沟通也非常费时,许久才来一个回复说这个私钥放了很久他们自己也不清楚了,我艹。。

后来为了验证确认是私钥的问题,我又写了 JAVA 的测试,使用官方沙箱的默认私钥来生成签名请求成功了,查看官方的 java SDK 源码后可以确定这个私钥是经过 PKCS8 编码过的了,后来我把项目和问题给官方发了过去,不知他们现在有没有改正这个问题。




还好公司之前有个已上线的应用,通过那个应用的原生私钥进行的测试,一切正常了,只等新应用上线再切换过来。


所以,如果是 PHP 开发的话 支付宝的沙箱私钥是不能用的,也就不能用沙箱测试了


下面是测试期间遇到的其他小问题的说明:官方都没有任何提示,搞的好郁闷

1. 应用的公钥只能上传两个,如果要修改或者删除就需要作废掉才行。


2. 支付宝公钥是固定的,不能操作的,我们操作的就只是 应用 RSA 公钥

3. 在创建应用时必须选择实名认证类型才能使用支付宝的集分宝接口,否则在提交审核选择所需接口时复选框将是灰色不可选择

这个问题连他们自己都没搞清楚,问了好多次,还跟我说是什么 C类应用也就是 桌面应用才行,这TMD怎么可能呢,还是我自己搞了一下午创建了好几个应用亲自测试出来的






4. 要使用支付宝的接口,必须商家帐号授权才能调用

https://openauth.alipaydev.com/oauth2/authorize.htm?client_id=102014072800006218&scope=p
https://openauth.alipaydev.com/oauth2/authorize.htm?client_id=top.21563300&scope=p

类似上面这样的 client_id 换成自己的应用ID,然后进行授权获得 code 然后通过 SDK 换取访问和刷新令牌 并记录在自己服务器上,访问令牌到期后需要用刷新令牌延期,大概是一年左右吧,这些就不多说了

https://openhome.alipay.com/doc/docIndex.htm?url=https://openhome.alipay.com/doc/viewKbDoc.htm?key=236615_236620_259878&type=info


5. 实际使用时,

私钥的格式不是按照官方文档所说的换成一行什么的,也是必须按照原生的格式,大概16行左右的才行的,不能改成一行,

填写公钥时也不需要换成一行,只复制 BEGIN  和 END 之间的部分粘贴到输入框就行了


附上支付宝接口和 SDK 下载地址

 API: https://openhome.alipay.com/doc/docIndex.htm?url=https://openhome.alipay.com/doc/packageDetail.htm?packageCode=POINT

其实淘宝上的接口文档才是完整的

http://open.taobao.com/api/api_cat_detail.htm?spm=a219a.7386789.0.0.GSZsCf&cat_id=10238&category_id=102


 SDK: https://openhome.alipay.com/doc/docIndex.htm?url=https://openhome.alipay.com/doc/toSdk.htm


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


补充:2014/0813 15:03 


等了一个星期,应用才终于审核通过了,不过麻烦问题又来了

之前的接口私钥问题确定OK,不过又出现了一个商户授权的问题。


问题描述:通过调用

alipay.system.oauth.token

授权后,使用获得的 access_token 请求

alipay.point.order.add

结果始终返回  令牌已过期 的提示,而且授权接口返回的参数比官方文档上的少了一个 alipay_user_id,但我用另一个上线的应用请求接口是有该参数的,实在是想不通是怎么回事,跟他们客服和技术说了半天,都没纠缠清楚,都说不可能。


最后还是旺旺的 “alipay开放平台”  同学帮我搞定了这个问题,


之前说到的 应用授权页面地址需要增加一个 参数


https://openauth.alipaydev.com/oauth2/authorize.htm?client_id=102014072800006218&scope=p

支付宝的授权分两种:

1. 登录授权; 2 支付授权;

如上面的链接,加上红色部分就是支付授权,凡是需要支付的都需要通过该地址进行授权,普通的登录则不加


通过增加该参数,你会发现,此时授权需要多一步安装本地证书的操作,授权成功后,这世界一下就清静了。

而上面说道的 少了个参数,据该同学讲,是因为官方的文档已经很古老了,虽然文档注明是必要参数,但还是不要太过计较了,该放下就放下吧

ok 这么简单而复杂的一个问题终于被解决了,这下应该没有问题了吧。







  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神神的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值