我的 sdk 是从官方这里下载的( https://open.unionpay.com/ajweb/help/file/toDetailPage?id=606&flag=2 )
然后跑 demo 时,使用其前端回调FrontReceive.php
以及退款接口Refund.php
等都可以对银联发送过来的数据正常验签,唯独最重要的后台接收BackReceive.php
后台回调返回过来的数据一直验签失败,不管是我线上环境还是它自己提供的 demo 都能重现这个问题。
你们有碰到吗?
1
adminxc 2018-03-08 15:44:33 +08:00
没有
|
2
cq65617875 2018-03-08 15:51:12 +08:00
编码问题查一查?
|
3
zjsxwc OP 解决了, 银联回调唯独在后台回调时,把`signPubKeyCert`公钥证书里的换行符\r\n 返回了\n。
暂时解决办法是这么补救下: ``` private function fixSignPubKeyCert(&$post) { if (empty($post["signPubKeyCert"])) { return; } $signPubKeyCert = $post["signPubKeyCert"]; $validNewLinePosition = strpos($signPubKeyCert, "\r\n"); if ($validNewLinePosition === false) { $post["signPubKeyCert"] = str_replace("\n", "\r\n", $signPubKeyCert); } } $this->fixSignPubKeyCert($_POST); ``` @zjsxwc @adminxc @cq65617875 |