【发布时间】:2021-03-04 07:12:24
【问题描述】:
我已经运行了我所有的代码来激活订阅,但它没有,仍然处于验证过程中,请帮助我如何激活 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!";
}
【问题讨论】:
-
是的,我已经使用 api 创建了订阅并运行了结帐脚本,然后我在仪表板中看到订阅已经过身份验证,我必须手动对该订阅收费以持续进行订阅。我不想手动执行该过程。
-
你的意思是说。您不想每月/每周/任何时间进行 API 调用以收取订阅费用吗? Razorpay 应该在每个月通过身份验证后从您客户的帐户中收取费用吗?
标签: javascript php curl razorpay