收藏
回答

微信支付消息回调

用php版本得SDK。支付后回调遇到个奇怪的问题,微信支付后消息回调:

// 检查通知时间偏移量,允许5分钟之内的偏移

$timeOffsetStatus = 300 >= abs(Formatter::timestamp() - (int)$inWechatpayTimestamp);

$verifiedStatus = Rsa::verify(

    // 构造验签名串

    Formatter::joinedByLineFeed($inWechatpayTimestamp, $inWechatpayNonce, $inBody),

    $inWechatpaySignature,

    $platformPublicKeyInstance

);

if ($timeOffsetStatus && $verifiedStatus) {

  就是这里了,很奇怪,$timeOffsetStatus变量是true,时间判读偏移没问题,

但是$verifiedStatus,SDK签名验证方法验证不过去,也没有返回值,被当fals处理了,很奇怪。

删除 $verifiedStatus条件判断,返回消息是可以解密得到数据得。

这里可都是SDK实例代码,按说不应该错啊。

}

请各位指教!

回答关注问题邀请回答
收藏

1 个回答

  • Memory (年假中,回复慢)
    Memory (年假中,回复慢)
    1天前

    1天前
    有用
    回复 6
    • ala~有妖怪
      ala~有妖怪
      20小时前
      您好,感谢您的帮助。您指出的三个变量取值,在程序中没有问题。php代码如下:
       $postHead = Request::header();
              $inWechatpaySignature = $postHead['wechatpay-signature-type']; // 请根据实际情况获取
              $inWechatpayTimestamp = $postHead['wechatpay-timestamp']; // 请根据实际情况获取
              $inWechatpaySerial = $postHead['wechatpay-serial']; // 请根据实际情况获取
              $inWechatpayNonce = $postHead['wechatpay-nonce']; // 请根据实际情况获取
              $inBody = Request::getContent(); // 请根据实际情况获取,例如: file_get_contents('php://input');
      20小时前
      回复
    • Memory (年假中,回复慢)
      Memory (年假中,回复慢)
      20小时前回复ala~有妖怪
      那你给的平台证书/平台公钥呢?是只有一个报错还是所有回调都报错?
      20小时前
      回复
    • Memory (年假中,回复慢)
      Memory (年假中,回复慢)
      20小时前回复ala~有妖怪
      getContent() 直觉就不靠谱
      20小时前
      回复
    • ala~有妖怪
      ala~有妖怪
      19小时前回复Memory (年假中,回复慢)
      公匙正确,不然也解密不了,是不!
      19小时前
      回复
    • ala~有妖怪
      ala~有妖怪
      19小时前回复Memory (年假中,回复慢)
      我把getContent() 改为了 file_get_contents('php://input')
      19小时前
      回复
    查看更多(1)
登录 后发表内容