首页 > 上网技巧 > 电脑小技巧 > 使用Stripe的优惠券代码

使用Stripe的优惠券代码

时间:2020-08-31 19:24 作者:QQ地带 我要评论

我有一个使用 Stripe来处理订阅付款的网站.只有一种类型的订阅.
我在NetTuts上按照 this tutorial进行初始设置.
有一个表单正常处理订阅和一切工作.客户要求优惠券代码. Stripe支持这一点,因此我开始尝试将优惠券代码添加到现有表单中.
我在Stripe中设置优惠券代码,设置我的测试键并切换到条带中的测试模式.
我在我的代码中执行了几项检查:
 
>检查是否输入了优惠券,如果没有优惠券选项则创建新的客户对象
>检查优惠券是否有效,如果没有返回错误
 
如果已输入优惠券并且该优惠券有效,则在创建新客户时将匹配的条带优惠券对象作为选项传递.
 
if(isset($couponCode) && strlen($couponCode) > 0) {
  $using_discount = true;
  try {
        $coupon = Stripe_Coupon::retrieve($couponCode);
        if($coupon !== NULL) {
           $cCode = $coupon;
        }
        // if we got here, the coupon is valid
 
     } catch (Exception $e) {
 
        // an exception was caught, so the code is invalid
        $message = $e->getMessage();
        returnErrorWithMessage($message);
 
     }
 
 
}
 
try
  if($using_discount == true) {
    $customer = Stripe_Customer::create(array(
          "card" => $token,
          "plan" => "basic_plan",
          "email" => $email,
          "coupon" => $cCode
       ));
  }
  else {
        $customer = Stripe_Customer::create(array(
          "card" => $token,
          "plan" => "basic_plan",
          "email" => $email
       ));
  }
$couponCode正确填充表单字段,就像填充所有其他字段一样,我已经三次检查它是否被正确拉出.
 
当我尝试在没有优惠券代码的情况下提交表单时,它会收取全部金额并正确地通过Stripe.
 
但是,如果我输入有效的OR无效优惠券代码,则在创建新的客户对象时它不会传递带有客户对象的优惠券对象,并在通过Stripe时收取全部金额.
 
我已经看了几个小时的代码,似乎无法弄清楚为什么总是无法识别折扣代码并将匹配的优惠券对象传递给Stripe.
 
这可能有点过时,您找到了代码的解决方案.但看起来您需要做的就是将原始$couponCode作为优惠券的数组值传递.正如codasaurus所述,您只是从优惠券的条纹中获取一个数组,除非您执行$cCode-> id并将ID传回您的数组以创建客户,否则您不需要该数组.
当你将$using_discount设置为true时我改变了,因为如果优惠券有效,这将触发发送优惠券代码.
 
一旦优惠券实际有效,我们就会发送优惠券.您只需要提交状态的值,因此$coupon是系统中折扣的参考.或者你可以使用$coupon-> id,如果你想以这种方式创建它.
 
以下是基于您的代码的解决方案,它可能会更好,但我希望它可以帮助其他人寻找像我这样的解决方案.
 
if($coupon!='' && strlen($coupon) > 0) {
          try {
                $coupon = Stripe_Coupon::retrieve($coupon); //check coupon exists
                if($coupon !== NULL) {
                 $using_discount = true; //set to true our coupon exists or take the coupon id if you wanted to.
                }
                // if we got here, the coupon is valid
 
             } catch (Exception $e) {
                // an exception was caught, so the code is invalid
                $message = $e->getMessage();
                returnErrorWithMessage($message);
             }
 
        }
        if($using_discount==true)
        {
            $customer = Stripe_Customer::create(array(
                  "card" => $token,
                  "plan" => $plan,
                  "email" => $id,
                  "coupon"=>$coupon) //original value input example: "75OFFMEMBER" stripe should be doing the rest.
                );
        }
        else
        {
            $customer = Stripe_Customer::create(array(
                  "card" => $token,
                  "plan" => $plan,
                  "email" => $id)
                );
        }

标签: Stripe
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告