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


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

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

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

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


    我一開始以为是配置问题,但本地和server都已安装并开启 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 换取訪问和刷新令牌 并记录在自己server上,訪问令牌到期后须要用刷新令牌延期,大概是一年左右吧。这些就不多说了

    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 这么简单而复杂的一个问题最终被攻克了,这下应该没有问题了吧。







  • 相关阅读:
    RadioButton练习(android)
    关于 RArrayFixFlat 与 RArray 与 CArrayPtrFlat 的测试
    How do I add an attachment to the message
    Grid View
    android 布局文件属性说明(转)
    File 存储(android)
    How to Make an HTTP Connection Using TCP/IP with RSocket
    使用RHTTPTransaction后产生CONE 36 Panic的解决办法
    SharedPreferences 存储(android)
    对话框的练习(android)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5162153.html
Copyright © 2020-2023  润新知