在 https://packagist.org/ 有高人造好的轮子,直接安装即可使用,可有些配置的说明并不是很详细,使用者如果不看一遍文档,会踩在坑里面。
几年前开发过支付宝接口,对于新的开放平台没有了解过,也想偷懒,直接在 packagist 上面找轮子。
这次选择了下载量最高的 “yansongda/pay”,并没有仔细看开发文档发现延签始终失败。
来回折腾了1天,始终找不到问题。
最终不得不静下心来,仔细看文档,并且找到一篇很详细的文章:https://www.csweigou.com/article/2176.html
才发现问题所在。
应用公钥 和 支付宝公钥 是不同的,不是一回事。
这里做点细节记录:
1、RSA2 就是 RSA(SHA256)密钥,目前这里不给选择,必须用这个。
2、支付宝公钥,是在保存好应用公钥后再获得的,需要再点击查看“支付宝公钥”来获取。别肉眼以为秘钥前面和后面一样,就以为是一样的。
3、使用支付宝签名工具的时候:https://docs.open.alipay.com/291/106097 如果是PHP语言,秘钥格式要选择 PKCS1(非JAVA适用),秘钥长度选择:2048
支付宝接口文档搜集:
上传应用公钥并获取支付宝公钥:https://docs.open.alipay.com/291/105972/
以下是转载原文,备份:
原文地址:https://www.csweigou.com/article/2176.html
支付宝帐号不用说,就是你的支付宝帐号。而其他的要正常使用,首先得签约支付宝当面付接口,否则即使也也是不能够正常使用的。可以在https://b.alipay.com支付宝商户平台的“产品大全”中签约当面付。(如果自己不会签约可以扫描文章底部二维码联系)。
签约成功后,进入支付宝开发平台的“网页&移动应用”,地址如下:
https://openhome.alipay.com/platform/appManage.htm
如果出现如下图界面,说明你的支付宝帐号还没有入驻该平台,你可以选择自研开发者,然后按照提示入驻即可。可以参考文章《入驻支付宝开放平台并创建应用的基本流程》,参考第一步和第二步。
然后,进入到“网页&移动应用”界面,此时平台会默认创建一个应用。在页面中“我的应用”可以看到一个名为“应用2.0签约201704096469****”的应用,包含一个appid,这个APPID就是我们需要用的。
如果看到右边的状态是已经上线就是正常的,如下图,然后我们点击查看。
点击“查看”后进入的页面我们需要看到如下状态,说明该帐号的当面付接口签约成功了,否则则失败。
然后需要点击右边栏的“应用信息”,如下图:
在该页面中找到“接口加签方式”,默认就是RSA2,也可以切换为RSA。然后点击”设置应用公钥“(如果已经设置过是显示“查看应用公钥”,可以修改公钥)。
到这里又有一个问题,公钥怎么来的?此时可以打开工具下载页面:
https://docs.open.alipay.com/291/106097
下载工具后,如果是php后端语言,同时签名方法为RSA2,则如下选择:
然后点击“生成密钥”,如果是RSA则在密钥长度中选择“1024”,如果是java则在密钥格式中选择“PKCS8(java适用)”。
此时就生成了一个“私商户应用钥”和“商户应用公钥”,并把这两个的值自己记录下来,一定一字不差复制,不能多余空格等等。而这个时候“商户应用私钥”,就是我们需要用的“商户私钥”。
我们把“商户应用公钥”到支付宝开放平台,把工具生成的“商户应用公钥”填写进入,保存即可。然后我们可以看到系统会生成对应的“支付宝公钥”,点击“查看支付宝公钥”:
而上图看到的就是我们需要的“支付宝公钥”。至此,支付宝帐号、appid、支付宝公钥、商户私钥就都获得了。