【问题标题】:How to verify payment signature in razorpay using PHP?如何使用 PHP 在 razorpay 中验证付款签名?
【发布时间】:2020-03-14 21:56:39
【问题描述】:

我无法验证付款签名。

这是 razorpay 提供的代码。

 $attributes  = array('razorpay_signature'  => $razorpay_signature,  'razorpay_payment_id'  => $razorpay_payment_id , 'razorpay_order_id' => $razorpay_order_id);
 $signatureVerified  = $api->utility->verifyPaymentSignature($attributes);

当我检查它时。

if($signatureVerified) {
    echo 'signature verified';
} else {
   echo "signature didn't verify";
}

我得到的只是签名没有验证。

P.s:我从 razorpay 获得了付款签名、orderId 和 paymentID。

【问题讨论】:

    标签: php razorpay


    【解决方案1】:

    该函数不返回任何内容,它只是在签名不匹配时抛出异常。这似乎让很多人感到困惑,所以有一个 PR 可以添加返回值:Link。将包含在下一个版本中。

    【讨论】:

    • 感谢您的回复。但我仍然得到签名没有验证。
    • @DeveloperStack 是的,这个答案解释了原因。你正在做if($signatureVerified),它永远不会工作,因为verifyPaymentSignature 不会返回值并且总是会失败if
    • 调用函数即可。不要对返回值做任何事情。如果函数运行,则您的签名匹配。如果函数抛出异常,则您的签名不匹配。
    【解决方案2】:

    实际上,您不需要分配变量来验证付款。
    您需要将其放入 try catch 块中以执行验证
    像这样。

             try{
                $attributes = array(
                    'razorpay_order_id' => $request->razorpay_order_id,
                    'razorpay_payment_id' => $request->razorpay_payment_id,
                    'razorpay_signature' => $request->razorpay_signature
                );
                $api->utility->verifyPaymentSignature($attributes);
            }
            catch(SignatureVerificationError $e){
                $response = 'failure' ;       
                $error = 'Razorpay Error : ' . $e->getMessage();
            }
       return response('success');
    

    所以,如果失败,它会进入 catch 块,否则它会返回成功

    【讨论】:

    • 你能告诉我什么反应吗??
    • 在这种情况下,有两种响应;首先来自 razorpay,如果您的付款失败,那么您将在 catch 块中收到错误响应,如果它没有失败,那么您将不会收到任何响应,您必须将自己的响应传递为“成功”或任何您在回调函数中确定的其他关键字
    猜你喜欢
    • 2021-05-15
    • 2021-11-13
    • 2019-04-09
    • 2017-08-02
    • 2023-03-10
    • 2021-09-07
    • 2020-06-25
    • 2019-05-11
    • 2019-09-22
    相关资源
    最近更新 更多