1

我想知道如何正确启动第一次付款和后续付款到条带订阅。就像下面的例子一样。

( $50.00 USD for the first month then, $70.00 USD for each moneht.)

现在基本上我有这个代码。当有人选择它时,它将成功地创建一个计划。(有一个代码可以检查计划是否已经存在,但我想我不会再包含它了)

$price = 70;
$first_payment = 50;
$createPlan = array(
  "amount" => $price*100,
  "interval_count" => array("period" => "1", "time"=> "month"),
  "name" => 'Product name test',
  "currency" => 'USD',
  "id" => 'product_id_1234'
);
Stripe_Plan::create($createPlan);

下一组代码是创建客户然后进行交易。 $carddetails变量包含客户的卡信息。

$customer = Stripe_Customer::create($carddetails);
Stripe_Charge::create(array(
  "customer" => $customer->id,
  "amount" => $first_payment * 100,
  "currency" => 'USD',
  "description" => 'First payment charge'
));

问题是,每当创建客户时,都会向客户收取两次费用,即实际价格和首次付款费用。第一次收费应该是 50 美元,而不是 50 美元和 70 美元。

你能解释一下为什么会这样吗?谢谢

4

1 回答 1

3

Stripe 中的订阅是预付费的。也就是说,一旦用户开始订阅,钱就会被收取。

所以,你是:

  • 创建 50 美元的费用,立即向他收取 50 美元的费用
  • 为用户订阅一个计划,立即向他收取 70 美元的费用

有几种方法可以做你想做的事,所有这些都相当容易。我将在这里详细介绍两个。

1.通过否定account_balance

当您创建客户时,您可以传递account_balance包含其其余信息的属性。如果您通过 -2000,他将获得 20.00 美元的信用额度,他的第一个月为 50.00 美元。

如果您使用此选项,将应用折扣,但不会向用户说明他为何获得 20 美元的折扣。

$customer = Stripe_Customer::create(array(
  "description" => "Kenneth Palaganas",
  "account_balance" => -2000,
  "card" => "tok_1a2b3c4de",
  "plan" => "basic"
));

2. 创建发票项目

此选项可能需要对您的代码进行更多修改,但它允许您将调整包含在客户的发票中,提醒他为什么他只支付了 50 美元。

如果您在创建用户之后创建订阅之前创建发票项目,则该发票项目将出现在他的第一张发票上。除了神秘的 20 美元赠金外,您还可以拥有一个描述为“首月折扣”的订单项:

$customer = Stripe_Customer::create($carddetails);
Stripe_InvoiceItem::create(array(
    "customer" => $customer->id,
    "amount" => -2000,
    "currency" => "usd",
    "description" => "First Month Discount - Welcome!")
);
$customer->updateSubscription(array("plan" => "basic", "prorate" => false));
于 2013-10-29T17:14:40.093 回答