我有一个使用Stripe处理订阅付款的网站。只有一种订阅类型。我按照NetTuts 上的本教程进行了初始设置。有一个表格可以很好地处理订阅并且一切正常。客户要求提供优惠券代码。Stripe 支持这一点,所以我开始尝试在现有表单中添加优惠券代码。
我在 Stripe 中设置了优惠券代码,设置了我的测试密钥并在 Stripe 中切换到了测试模式。我正在我的代码中执行一些检查:
- 检查是否输入了优惠券,如果没有则创建一个没有优惠券选项的新客户对象
- 检查Coupon是否有效,如果无效则返回错误
如果输入了优惠券并且有效,则在创建新客户时将匹配的 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。
但是,如果我输入有效或无效的优惠券代码,它不会在创建新客户对象时将优惠券对象与客户对象一起传递,并在通过 Stripe 时收取全额费用。
我已经看了好几个小时的代码,似乎无法弄清楚为什么它总是无法识别折扣代码并将匹配的优惠券对象传递给 Stripe。