-----BEGIN PUBLIC KEY-----xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbzzzzzzzzzzzzzzzzzzzzzzzz-----END PUBLIC KEY-----
后来64个字符一行,如上文,就好了。。isSign=True
-----BEGIN PUBLIC KEY----- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb zzzzzzzzzzzzzzzzzzzzzzzz -----END PUBLIC KEY-----
最近在做一个 iOS 应用的后端,做到了支付部分。 按支付宝官方文档的业务流程, iOS 调用支付宝的时候需要传入一个 notify_url 当交易状态发生变化时,支付宝服务器会主动通知 notify_url,POST传递数据,JSON格式。
可能的坑1:主机提供商挡住了支付宝发来的请求
这里踩到了一个坑就是支付宝支付成功之后,notify_url 一直没收到支付宝的主动通知
后来发现是主机提供商(主机壳)的管理界面,有个过滤 User-Agent 的设置。 如果 user-agent 是空就拦截什么的。不记得了。 把钩去掉就好了, 调了半天结果是因为服务商拦下了支付宝的请求,所以到不了我们的程序。
可能的坑2:notify_url 不要带参数
我们之前是
https://xxx/?m=api&c=alipay&a=notify_toho
后来改成https://xxx/alipay.php
就好了可能的坑3:证书路径问题
签名死活不对,老是
注意 isSign = false
于是我决定调试下验证签名的地方,
我在这里加了个
logResult(curl_error($curl));
发现输出 Problem with the SSL CA cert (path? access rights?) 网上给的解决方法都不管用 (什么重启服务器啊, 更新ca-certificates 包啊,都不行)后来发现原来是:
$alipay_config['cacert'] = getcwd().'\\cacert.pem';
如果你在 windows 上测试, echo file_get_contents($alipay_config['cacert']); 是可以的,但是 linux 就不一样了。 echo file_get_contents($alipay_config['cacert']); 啥也没输出,说明路径不对。 改成如下就可以了
$alipay_config['cacert'] = getcwd().'/cacert.pem';
再次输出就没有 Problem with the SSL CA cert (path? access rights?) 这个问题了
可能的坑4:支付宝公钥换行
http://blog.csdn.net/huyiyang2010/article/details/38066273
之前一直都是一行,
-----BEGIN PUBLIC KEY-----xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbzzzzzzzzzzzzzzzzzzzzzzzz-----END PUBLIC KEY-----
后来64个字符一行,如上文,就好了。。isSign=True
-----BEGIN PUBLIC KEY----- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb zzzzzzzzzzzzzzzzzzzzzzzz -----END PUBLIC KEY-----
真是无力吐槽