javascript - 如何从认证阶段激活 Razorpay 订阅
问题描述
我已经运行了我所有的代码来激活订阅,但它没有,仍然处于验证过程中,请帮助我如何激活 razorpay 订阅。我使用 api 创建了一个计划并得到了 planid 的响应
$key_id = '';
$key_secret = '';
$startTime = (time()+300);
$amount = '400';
$currency_code = 'INR';
//Create plan for user
$planReqdata = array(
'period' => 'daily',
'interval' => 7,
'item' => array(
'name' => 'Test daily 1 plan',
'description' => 'Description for the daily 1 plan',
'amount' => $amount,
'currency' => $currency_code
)
);
$planurl = 'https://api.razorpay.com/v1/plans';
$palnparams = http_build_query($planReqdata);
//cURL Request
$planch = curl_init();
//set the url, number of POST vars, POST planReqdata
curl_setopt($planch, CURLOPT_URL, $planurl);
curl_setopt($planch, CURLOPT_USERPWD, $key_id . ':' . $key_secret);
curl_setopt($planch, CURLOPT_TIMEOUT, 60);
curl_setopt($planch, CURLOPT_POST, 1);
curl_setopt($planch, CURLOPT_POSTFIELDS, $palnparams);
curl_setopt($planch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($planch, CURLOPT_SSL_VERIFYPEER, true);
$planResult = curl_exec($planch);
$planRes = json_decode($planResult);
//echo $planRes->id;
使用计划 ID 我创建了一个订阅并获得订阅 ID 的响应
//Create subscription for user
$subdata = array(
'plan_id' => $planRes->id,
'customer_notify' => 1,
'total_count' => 6,
'start_at' => $startTime,
'addons' => array(
array(
'item' => array(
'name' => 'Delivery charges',
'amount' => $amount,
'currency' => $currency_code
)
)
)
);
$suburl = 'https://api.razorpay.com/v1/subscriptions';
$subparams = http_build_query($subdata);
//cURL Request
$subch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($subch, CURLOPT_URL, $suburl);
curl_setopt($subch, CURLOPT_USERPWD, $key_id . ':' . $key_secret);
curl_setopt($subch, CURLOPT_TIMEOUT, 60);
curl_setopt($subch, CURLOPT_POST, 1);
curl_setopt($subch, CURLOPT_POSTFIELDS, $subparams);
curl_setopt($subch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($subch, CURLOPT_SSL_VERIFYPEER, true);
$subResult = curl_exec($subch);
$subres = json_decode($subResult);
//echo $subres->id;
使用订阅 ID,我调用了结帐脚本
<button id = "rzp-button1">Pay</button>
<script src = "https://checkout.razorpay.com/v1/checkout.js"></script>
<script>
var options = {
"key": "<?php echo $key_id; ?>",
"subscription_id": "<?php echo $subres->id; ?>",
"name": "Test.",
"description": "Daily Test Plan",
"image": "http://localhost/iac/images/logo.png",
"callback_url": "http://localhost/iac/subres.php",
"prefill": {
"name": "Atanu",
"email": "atanu@example.com",
"contact": "+919876543210"
},
"notes": {
"note_key_1": "Tea. Earl Grey. Hot",
"note_key_2": "Make it so."
},
"theme": {
"color": "#F37254"
}
};
var rzp1 = new Razorpay(options);
document.getElementById('rzp-button1').onclick = function(e) {
rzp1.open();
e.preventDefault();
}
</script>
并将响应传递给以下代码以完成付款
$razorpayPaymentId = $_POST['razorpay_payment_id'];
$subscriptionId= $_POST['razorpay_subscription_id'];
$secret = '########';
$razorpaySignature = $_POST['razorpay_signature'];
$expectedSignature = hash_hmac('SHA256', $razorpayPaymentId . '|' . $subscriptionId, $secret);
//$expectedSignature = hash_hmac(self::SHA256, $razorpayPaymentId . '|' . $subscriptionId, $secret);
if ($expectedSignature === $razorpaySignature)
{
echo "Payment is successful!";
}
解决方案
推荐阅读
- glsl - 计算向量的余弦
- flutter - 如何用 Flutter 实现“触摸返回通话”?
- javascript - 如何从 jquery timepicker 中获取时间值。?
- windows - 设置不同的双屏模式
- python - 存储和散列密码烧瓶 - Python
- css - 如何在反应应用程序的不同组件上加载不同的 .css 文件?
- firebase - React Native 与 Expo:firebase-admin 是否必要?
- vue.js - vue-select,buefy CSS 不能用于生产 NUXT.JS
- ios - 如何在 SwiftUI 中创建 DropDownMenu?
- c# - 如何在EF核心代码中转换保存在json字段中的嵌套对象