工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
zjsxwc

银联支付回调数据无法通过其官方 sdk 验签

  •  
  •   zjsxwc · Mar 8, 2018 · 2996 views
    This topic created in 3013 days ago, the information mentioned may be changed or developed.

    我的 sdk 是从官方这里下载的( https://open.unionpay.com/ajweb/help/file/toDetailPage?id=606&flag=2 )

    然后跑 demo 时,使用其前端回调FrontReceive.php以及退款接口Refund.php等都可以对银联发送过来的数据正常验签,唯独最重要的后台接收BackReceive.php后台回调返回过来的数据一直验签失败,不管是我线上环境还是它自己提供的 demo 都能重现这个问题。

    你们有碰到吗?

    3 replies    2018-03-08 16:15:09 +08:00
    adminxc
        1
    adminxc  
       Mar 8, 2018
    没有
    cq65617875
        2
    cq65617875  
       Mar 8, 2018
    编码问题查一查?
    zjsxwc
        3
    zjsxwc  
    OP
       Mar 8, 2018
    解决了, 银联回调唯独在后台回调时,把`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
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2843 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:06 · PVG 16:06 · LAX 01:06 · JFK 04:06
    ♥ Do have faith in what you're doing.