顺晟科技
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)
);
}
08
1972-02
02
2022-09
16
2021-06
16
2021-06
16
2021-06
16
2021-06