如何使用从客户使用Stripe创建的令牌进行多次支付?

2022-06-26 00:00:00 php stripe-connect stripe.net

我在使用从之前使用Stripe创建的客户创建的令牌进行计费时出错。我需要能够向用户收取多次费用,以便费用可以到达多个目的地,这就是我创建令牌的原因。但是,当尝试使用以下代码向任何人收费时,我收到错误:

致命错误:未捕获异常‘StripeErrorInvalidRequest’,消息为‘No That Token:TOK_187sfmBqK1u6WYC3qS20eNu’

$stripe_id和其他变量已在我的代码中赋值,我只是复制/粘贴主要部分:

StripeStripe::setApiKey("sk_mykey-changedforsecurity");   // authorises secret key


$token = $_POST['stripeToken'];


$customer = StripeCustomer::create(array(
  "description" => "test customer",
  "source" => $token // obtained with Stripe.js
));


$chargetoken = StripeToken::create(
  array("customer" => $customer->id),
  array("stripe_account" => $stripe_id) // id of the connected account
);


 $charge = StripeCharge::create(array(
    "amount" => $price, 
    "currency" => "gbp", 
    "source" => $chargetoken, 
    "description" => $title, 
    "application_fee" => 20, 
    "destination" => $stripe_id
    )); 

如有任何帮助,我们将不胜感激

谢谢


解决方案

在条带中,您获得/创建的任何令牌都是一次性的,因此不能使用两次。 Stripe以3种方式支持收费。

  1. 使用卡令牌
  2. 使用令牌(您正在进行)
  3. 使用客户ID
因此,在您的情况下,只需使用客户ID而不是令牌来多次向客户收费。CustomerID不会过期。

因此内部计费对象使用"Customer"字段

您可以在这里看到Charge对象stripe

相关文章