Razorpay 签名验证没有发生,因为 SHA256 摘要是错误的 NodeJS

sid*_*idd 6 node.js razorpay

我正在制作一个应用程序,在成功付款后,我创建一个摘要,我使用 Razorpay 签名验证的建议方式进行验证。

我的后端在 NodeJS 中,这是我创建摘要的方式。

const crypto = require("crypto");

 var generatedSignature = crypto
      .createHmac(
        "SHA256",
        razorpay_order_id + "|" + razorpay_payment_id
      )
      .update(key_secret)
      .digest("hex");  

var isSignatureValid = generatedSignature == payload.razorpay_signature // false
Run Code Online (Sandbox Code Playgroud)

我创建签名的方式是错误的吗?

Mat*_*ohn 12

您可以使用以下代码。希望这可以使代码更易于理解。

const crypto = require("crypto");
const hmac = crypto.createHmac('sha256', RAZORPAY_KEY_SECRET);

hmac.update(razorpayOrderId + "|" + razorpayPaymentId);
let generatedSignature = hmac.digest('hex');

let isSignatureValid = generatedSignature == payload.razorpay_signature;
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此链接https://nodejs.org/api/crypto.html#crypto_class_hmac


Ani*_*ony 1

您只需更改 createHmac 并更新,如下所示交换其中的参数。

const crypto = require("crypto");

var generatedSignature = crypto
  .createHmac(
    "SHA256",
    key_secret
  )
  .update(razorpay_order_id + "|" + razorpay_payment_id)
  .digest("hex");  

 var isSignatureValid = generatedSignature == payload.razorpay_signature;
Run Code Online (Sandbox Code Playgroud)