当前位置: 首页 > 知识库问答 >
问题:

使用带条纹的优惠券代码

黄毅
2023-03-14

我有一个网站正在使用Stripe来处理订阅付款。只有一种类型的订阅。我按照NetTuts上的教程进行了初始设置。有一个表单可以精细处理订阅,一切都正常。客户要求优惠券代码。Stripe支持这个,所以我开始尝试在现有表单中添加优惠券代码。

我在Stripe中设置优惠券代码,设置测试密钥,并在Stripe中切换到测试模式。我正在代码中执行几个检查:

  1. 检查是否输入了优惠券,如果没有,则创建一个没有优惠券选项的新客户对象
  2. 检查优惠券是否有效,如果无效,则返回错误

如果已输入优惠券且有效,则在创建新客户时将匹配的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。

共有2个答案

公孙盛
2023-03-14

查看文档https://stripe.com/docs/api#create_customer,Stripe_Customer::create()调用只查找优惠券代码。看起来你在传递整个优惠券对象。

除非您的第一次尝试捕捉失败,否则$优惠券代码已经有了您的优惠券代码。此外,您还需要执行其他几项检查来确定优惠券是否有效。例如,如果优惠券-

如果这些检查中有任何一项失败,只需使用_折扣=false设置美元;

秦博达
2023-03-14

这可能有点过时,您已经找到了代码的解决方案。但似乎您所需要做的就是将原始的美元优惠券代码作为优惠券的数组值。正如codasaur所说,您只是从优惠券的条纹中获得一个数组,除非您执行了$cCode-

当您将$using_折扣设置为true时,我做了更改,因为如果优惠券有效或无效,这将触发发送优惠券代码。

一旦优惠券实际有效,我们就会发送优惠券。您只需要提交状态的值,因此$优惠券是该系统中折扣的参考。或者你可以用美元优惠券-

这是我对基于代码的解决方案的看法,它可能会更好,但我希望它能帮助像我这样寻找解决方案的人。

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)
                );
        }
 类似资料:
  • 提示 页面模板源码免费开源,在uni-app的插件市场uView的 示例项目 中,在右上角选择"使用 HBuilderX 导入示例项目" 或者 "下载示例项目ZIP", 在HX运行项目即可看到和使用模板。 提示 由于右侧的演示是通过iframe标签引入的,缺少了手机端运行的相关API,或者因为演示区域太小,或者电脑分别率不够高 ,导致演示可能会有问题,手机端有不会这些问题,请在右上角的"演示"中用

  • 我使用以下函数来接收订单的购物车总数、订单id和优惠券代码。该函数显示购物车的总金额和订单id,但不显示应用的优惠券代码。 根据Woocommerce codex的示例,它应该可以工作:http://docs.woothemes.com/document/send-coupons-used-in-an-order-by-email/

  • 优惠券 功能介绍:店铺可定期发布优惠券,增加更多用户粘性。 步骤 从【营销中心】→【优惠券】→【添加优惠券】。 设置优惠券名称、面额、发行量、有效时间、以及使用条件。

  • 说明 作废一张优惠券,客人不会收到优惠券作废推送 请求地址 http://api.dc78.cn/Api/co_cancel 请求方式 GET 请求参数 参数 参数名称 必填 描述 范例 no 券号 id 券id取自协议4.1中返回的coid op 操作员 返回 { "status": "1", "info": "券作废成功:200426878349", "server_timestamp": 1

  • 说明 使用一张优惠券 请求地址 http://api.dc78.cn/Api/co_cut 请求方式 GET 请求参数 参数 参数名称 必填 描述 范例 no 券号 bn 业务单号 op 操作员 lsco 批量核券id 多个券id逗号分隔。券id取自协议4.1中返回的coid 6499946,5416152 请求参数 POST请求方式 支持单品券核销 pylsco=[ { "coid":"2630

  • 说明 用于输入优惠券号查询券的有状态 请求地址 http://api.dc78.cn/Api/co_check 请求方式 GET 请求参数 参数 参数名称 必填 描述 范例 no 券号 getlist getlist=1,返回用户所有券 返回 { "status":"1", "store":"果盘测试", "name":"西瓜--单品券1", "coid":"26689861", "cono":"