为什么我应该在条纹收费之前创建一个客户对象?

Why should i create a customer object before charging in stripe?

您好,我已经看到了如下的条纹支付代码。首先创建一个客户对象

$customer = \Stripe\Customer::create(array(
          "card" => $token,
          "description" => "Product Purchase for Book",
          "email" => "someone@example.com"
 ));

然后使用该客户对象收费

  \Stripe\Charge::create(array(
         "amount" => $amount, # amount in cents, again
         "currency" => 'usd',
         "customer" => $customer->id)
   );

但下面的代码可用于直接向用户收费,而无需创建任何客户对象。

\Stripe\Charge::create(array(
       "amount" => 3000,
       "currency" => "eur",
       "card" => $_POST['stripeToken'],
       "description" => $_POST['email'],
       "metadata" => array("order_id" => "6735", "userid" => '1111')
));

所以你能解释一下下面的事情吗

  1. 哪个更好?
  2. 创建客户对象有什么好处?
  3. 是否可以使用商店并使用该客户对象随时向该用户收费(说经常性付款)?

提前致谢

首先创建客户对象有几个好处:

  1. 您可以向同一用户收取多个项目的费用,从而为您和客户提供账单历史记录。这对您作为店主很有价值(例如,为回头客提供优惠),对客户快速调出他们的购买历史也很有价值。

  2. 防欺诈

  3. 趋势和分析

  4. 如您所述,订阅

脚注:我个人维护自己的用户群,并在交易发生时更新 Stripe 客户对象和我的用户数据。这使我能够使用自己的自定义数据和 运行 复杂分析来扩展 Stripe 客户以发现趋势。