(注:这是我们公司,产品注册新公司和域名,搬迁新服务器;原来的支付宝是调通的~~这里特别记录这事,别下次忘记了,又绕弯路。)
服务端公钥对接 ————————支付宝密钥(私钥) (异步支付状态,回调)
服务端密钥(私钥)对接 ———————— APP的公钥、支付宝上配置商家公钥 (同步支付状态)
1、应用公钥RSA在支付宝平台一定要设置
https://openhome.alipay.com/platform/appDetail.htm?appId=2015122301029328 https://openhome.alipay.com/platform/keyManage.htm?keyType=partner |
应用公钥RSA设置 (想象,你有私钥,当然要给别人公钥对应解密) |
2、支付宝php openssl_pkey_get_public返回false——坑好久,根本没意思到那个文件会不行;
问题来源:
当本地签名+支付资料,发给支付宝,支付宝rsa公钥验签成功,执行业务事务后;会用支付宝的私钥签名,post异步回调、get同步回调数据给商家;
好了~
我的问题在于:支付宝回调时候,验签通不过;
好,看看验签需要什么:
1、支付宝的签名+notify_id+post数据
2、alipay_public_key.pem (这个文件我以为支付宝给每个商家的公钥会不一样,然后新商家帐号这些pem签名配置,我都重新弄了~)
登录支付宝开放平台:
复制了:
新建了一个文本:alipay_public_key.pem
调试:
然后:一直认为支付宝开放平台粘帖的公钥就是对,它就是长那样的;很多文档说明也说很多地方要去掉:空格、换行、-----BEGIN PUBLICKEY-----等,所以也不以为然;
试了很多、网上查了很多:
……
试了为什么签名正常通过,打印出来,
看看上面的格式,才被认为是openssl key。
所以,去查看了下支付宝服务端demo,打开同文件:
这居然MI……QAB是跟支付宝平台复制的一样,即多了openssl key格式,哪个挨千刀的说一定要去空格和换行。
直接使用demo的这个文件,支付流程尽正常了。