我已经添加了razorpay测试版本和支付流程工程,但当我试图验证签名
时,我得到以下错误
通知:未定义的索引:razorpay_order_id在C:\用户\阿明\文档\NetBeansProjects\OLX\付款\verify.php行24您的付款失败
Razorpay错误:传递的签名无效
我在这里遵循了代码结构形式https://github.com/razorpay/razorpay-php-testapp我正在努力实现https://razorpay.com/docs/payment-gateway/web-integration/hosted/#step-2--粘贴托管签出选项。
有人能指出我做错了什么吗。这里是验证。php
require('config.php');
session_start();
require('razorpay-php/Razorpay.php');
use Razorpay\Api\Api;
use Razorpay\Api\Errors\SignatureVerificationError;
$success = true;
$error = "Payment Failed";
if (empty($_POST['razorpay_payment_id']) === false) {
$api = new Api($keyId, $keySecret);
try {
// Please note that the razorpay order ID must
// come from a trusted source (session here, but
// could be database or something else)
$attributes = array(
'razorpay_order_id' => $_SESSION['razorpay_order_id'],
'razorpay_payment_id' => $_POST['razorpay_payment_id'],
'razorpay_signature' => $_POST['razorpay_signature']
);
$api->utility->verifyPaymentSignature($attributes);
} catch (SignatureVerificationError $e) {
$success = false;
$error = 'Razorpay Error : ' . $e->getMessage();
}
}
if ($success === true) {
$html = "<p>Your payment was successful</p>
<p>Payment ID: {$_POST['razorpay_payment_id']}</p>";
} else {
$html = "<p>Your payment failed</p>
<p>{$error}</p>";
}
echo $html;
这里有详细的表格
<form method="POST" action="https://api.razorpay.com/v1/checkout/embedded">
<input type="hidden" name="key_id" value="<?= $data['key']?>">
<input type="hidden" name="order_id" value="<?= $data['order_id']?>">
<input type="hidden" name="name" value="<?= $data['name']?>">
<input type="hidden" name="description" value="<?= $data['description']?>">
<input type="hidden" name="image" value="<?= $data['image']?>">
<input type="hidden" name="prefill[name]" value="<?= $data['prefill']['name']?>">
<input type="hidden" name="prefill[contact]" value="<?= $data['prefill']['contact']?>">
<input type="hidden" name="prefill[email]" value="<?= $data['prefill']['email']?>">
<input type="hidden" name="notes[shipping address]" value="L-16, The Business Centre, 61 Wellfield Road, New Delhi - 110001">
<input type="hidden" name="callback_url" value="http://localhost:8000/payment/verify.php">
<input type="hidden" name="cancel_url" value="https://example.com/payment-cancel">
<button>Submit</button>
</form>
支付php
require('config.php');
require('razorpay-php/Razorpay.php');
session_start();
// Create the Razorpay Order
use Razorpay\Api\Api;
$api = new Api($keyId, $keySecret);
//
// We create an razorpay order using orders api
// Docs: https://docs.razorpay.com/docs/orders
//
$orderData = [
'receipt' => 4563,
'amount' => 2000 * 100, // 2000 rupees in paise
'currency' => 'INR',
'payment_capture' => 1 // auto capture
];
$razorpayOrder = $api->order->create($orderData);
$razorpayOrderId = $razorpayOrder['id'];
$_SESSION['razorpay_order_id'] = $razorpayOrderId;
$displayAmount = $amount = $orderData['amount'];
if ($displayCurrency !== 'INR'){
$url = "https://api.fixer.io/latest?symbols=$displayCurrency&base=INR";
$exchange = json_decode(file_get_contents($url), true);
$displayAmount = $exchange['rates'][$displayCurrency] * $amount / 100;
}
$checkout = 'automatic';
if (isset($_GET['checkout']) and in_array($_GET['checkout'], ['automatic', 'manual'], true))
{
$checkout = $_GET['checkout'];
}
$data = [
"key" => $keyId,
"amount" => $amount,
"name" => "Sanoj Lawrence",
"description" => "safebrowser.tk",
"image" => "https://demo-cdn.sirv.com/chair.jpg",
"prefill" => [
"name" => "",
"email" => "test@gmail.com",
"contact" => "6381211774",
],
"notes" => [
"address" => "Hello World",
"merchant_order_id" => "12312321",
],
"theme" => [
"color" => "#red"
],
"order_id" => $razorpayOrderId,
];
if ($displayCurrency !== 'INR'){
$data['display_currency'] = $displayCurrency;
$data['display_amount'] = $displayAmount;
}
$json = json_encode($data);
require("checkout/{$checkout}.php");
我认为这个流程中不存在会话。或者指出它在会话中存储的位置。
否则,请使用从回调URL获取数据时所使用的方法。
你试过了吗
$attributes = array(
'razorpay_order_id' => $_POST['razorpay_order_id'],
'razorpay_payment_id' => $_POST['razorpay_payment_id'],
'razorpay_signature' => $_POST['razorpay_signature']
);
我无法验证付款签名。 这就是razorpay提供的代码。 当我检查的时候。 我得到的只是,签名没有验证。 附言:我有付款签名,订单
我正在尝试从外部远程服务对文档进行签名。签署过程分两个阶段进行。远程服务在第一阶段期待base64编码的散列,并在身份验证后发出令牌。在第二阶段,我们将使用接收到的令牌再次传递相同的散列并获得base64签名的散列。我在这里附上签名错误的文件。文件 如果有人可以分析它并指导我评估无效签名背后的原因。我正在使用执行与pdf相关的操作。 更新 根据反馈,我做了一些更正。文档现在正在更改。已更改的文档
我有一个C应用程序来对一些数据进行签名和验证,现在我想在PHP中验证数据,以下是我的数据签名C代码: 我尝试过PHPopenssl_verify(),但我不能正确地提供公钥;在C中,我有一个公钥blob的字节数组,但我不知道如何从这个数组中提取公钥,并将其与php openssl一起使用。 但我从openssl\u get\u publickey中获得了“错误:0906D06C:PEM例程:PEM
问题内容: 我正在使用node.js request.js到达api。我收到这个错误 [错误:UNABLE_TO_VERIFY_LEAF_SIGNATURE] 我所有的凭据都是准确有效的,并且服务器还不错。我对邮递员提出了同样的要求。 此代码仅在可执行脚本ex中运行。,那是为什么?是否需要在服务器上运行? 问题答案: 注意 :以下情况很危险,并且将允许在客户端和服务器之间截取和修改API内容。 这
我正在尝试在python中使用ECDSA验证比特币签名,但发现它非常困难,许多尝试已经失败了。 参数: 注意:我已经根据ECDSA的要求将签名从base64转换为hexstring。每当我试图验证它时,它会说: 预期64字节签名(128十六进制字符串),提供了65字节签名(130十六进制字符串) 我查看了许多关于ECDSA的stackoverflow问题,但没有一个答案与我的qs 100%相关。感
我是从IDP接收SAML断言签名的服务提供商。我在Tomcat上使用JOSSO来使用断言。这里的问题是我无法验证断言签名。 IDP证书使用别名“IDP”上传到我的密钥库。 在验证sig时,我得到以下错误: 为什么JOSSO无法检测密钥库中的证书并验证签名?我需要以不同的方式定义别名吗?