首页 > 解决方案 > 如何从认证阶段激活 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!";
    }

标签: javascriptphpcurlrazorpay

解决方案


没有问题,只是当您指定开始日期时,它不会立即收取订阅费用,因此创建没有开始日期的订阅将立即进行有效订阅。

有关原因的更多信息,请按照以下链接上的“授权付款”部分进行操作。它解释了订阅 A 的格式,这是一种即时支付订阅格式。

Razorpay 订阅:进行授权付款

在此处输入图像描述


推荐阅读