18910140161

使用Stripe的优惠券代码

顺晟科技

2021-06-16 10:30:03

287

我有一个网站,使用Stripe来处理订阅支付。订阅只有一种类型。

我在nettutorials上根据本教程进行了初始设置。

有一个表单可以正常处理订阅和所有事情。客户需要优惠券代码。Stripe来支持这一点,所以我开始尝试将优惠券代码添加到现有表单中。

我在Stripe中设置优惠券代码,设置我的测试密钥,并在Stripe中切换到测试模式。

我在代码中执行了几项检查:

检查是否输入了优惠券,如果没有优惠券选项,则创建新的客户对象。

检查优惠券是否有效,如果没有错误返回。

如果已输入优惠券并且优惠券有效,则在创建新客户时,匹配的条形优惠券对象将作为选项传递。

if(isset($ couponCode)strlen($ couponCode)0){

$ using _ discount=true

尝试{

$优惠券=Stripe _ coup : retrieve($ couponCode);

if($优惠券!==NULL) {

$ cCode=$优惠券;

}

//如果我们到了这里,优惠券是有效的

}捕获(异常$e) {

//捕获到异常,因此代码无效

$ message=$ e-GetMessage();

returnErrorwithmail($ message);

}

}

尝试

{

if($using_discount==true) {

$ customer=Stripe _ customer : create(阵列(

卡片'=$token,

计划'='基本_计划',

email'=$email,

息票'=$cCode

));

}

else {

$ customer=Stripe _ customer : create(阵列(

卡片'=$token,

计划'='基本_计划',

电子邮件'=$电子邮件

));

}

$couponCode正确填充表单字段,就像填充所有其他字段一样。我已经检查了三次是否正确拔出。

当我试图提交没有优惠券代码的表格时,它将收取全额费用并正确通过条纹。

但是,如果我输入有效或无效的优惠券代码,在创建新的客户对象时,它不会将优惠券对象与客户对象一起传递,并且在传递条带时将收取全部金额。

看了几个小时的代码,似乎想不通为什么不能一直识别折扣代码,把匹配的优惠券对象传递给Stripe。

这可能有点过时了,你找到了代码的解决方案。但是看起来你需要做的是把原来的$couponCode作为优惠券的数组值传递。正如codasaurus所说,您只需从优惠券的条纹中获得一个数组,除非您执行$cCode- id并将该id返回给您的数组以创建一个客户,否则您不需要它。

当您将$using_discount设置为true时,我做了更改,因为如果优惠券有效,它将触发发送优惠券代码。

一旦优惠券实际有效,我们将发送优惠券。您只需要提交状态的值,所以$优惠券是系统中折扣的参考。或者,如果您想以这种方式创建优惠券,可以使用$优惠券id。

以下是基于您的代码的解决方案。可能更好,但希望能帮助别人找到像我这样的解决办法。

if($优惠券!=' strlen($优惠券)0) {

尝试{

$优惠券=Stripe _ coup : retrieve($优惠券);//支票息票存在

if($优惠券!==NULL) {

$ using _ discount=true//如果我们的优惠券存在,请设置为true,如果您愿意,也可以使用优惠券id。

}

//如果我们到了这里,优惠券是有效的

}捕获(异常$e) {

//捕获到异常,因此代码无效

$ message=$ e-GetMessage();

returnErrorwithmail($ message);

}

}

if($using_discount==true)

{

$ customer=Stripe _ customer : create(阵列(

卡片'=$token,

计划'=$计划,

电子邮件'=$id,

息票'=$息票)//原始值输入示例: '75OFFMEMBER' stripe应该完成剩下的工作。

);

}

其他

{

$ customer=Stripe _ customer : create(阵列(

卡片'=$token,

计划'=$计划,

电子邮件'=$id)

);

}

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航