条纹:使用卡片ID创建令牌

4
我目前正在尝试使用服务端Stripe API创建收费。
但是我遇到了一个问题; 我有两种方法进行支付:
- 用户可以使用Stripe元素进行付款,因此我使用生成的令牌('tok_somethingId')来实施付款。 - 或者,如果用户已经在其帐户中添加了一些卡片,则可以从列表中选择其中之一。然后服务器使用卡片ID('card_somethingId')和客户ID('cus_smoethingId')。
我想知道是否有一种方法可以生成具有卡片ID和客户ID的令牌,以便使用此令牌创建收费,而不是使用卡片ID和客户ID向用户收费。
我已经尝试过https://stripe.com/docs/api/node#create_card_token,但似乎不起作用。
stripe.tokens.create({
  card: cardId,
  customer: customerId
}, function(err, token) {
  // do smthg here with the token
});

这给我带来了这个错误信息 在此输入图片描述


根据API:要创建令牌的客户(归属于应用程序帐户)。仅适用于Stripe Connect。此外,这只能与OAuth访问令牌或Stripe-Account标头一起使用。有关更多详细信息,请参见共享客户。 - Adam
3个回答

4
如果您正在使用存储的信用卡进行付款,则无需获取令牌。
1- 在 Stripe 上创建客户。
$customer = \Stripe\Customer::create([
    'email' => $customer_email,
]);

$response = ['status' => 'success', 'response' => $customer];

当您创建客户时,您会获得客户编号(customer_id)。

if(isset($response ['response']['id']))
    $response ['customer_id']  = $response ['response']['id'];

2 - 您可以通过客户ID和卡片令牌在Stripe上添加卡片。

$customer = \Stripe\Customer::retrieve($customer_id);
$creditCard = $customer->sources->create(array("source" => $cardToken));

$response = ['status' => 'success', 'response' => $creditCard];

现在您有类似这样的卡片ID:
"id": "card_1D4plsDExLRkbD8k1UWdqwIr"

3- 您可以在客户端上存储多张卡片,并且可以检索。

$cards = \Stripe\Customer::retrieve($customer_id)->sources->all(array(
    "object" => "card"
));

4 - 您可以通过存储在客户账户上的信用卡进行付款。

$params = [
    'currency' => 'USD',
    'amount' => $total_amount * 100,  
// converting dollars to cents
    'description' => $description, //it may be blank
    'customer' => $customer_id,
    "card" => $card_id'
];

$transaction = \Stripe\Charge::create($params); 

$response = ['status' => 'success', 'response' => $transaction['id']];

这里我们没有使用“source”参数,因为该参数仅在通过卡片令牌进行付款时使用。


1
您不能为现有的卡创建新令牌,因为这没有意义。该卡已保存在客户端上,您可以对其进行收费。
最简单的解决方法可能是相反的,即在获取令牌tok_XXXX时将卡保存在客户端上。这样,您始终通过将customer参数作为客户ID cus_XXXX和source参数作为卡ID card_XXXX来收费。
否则,您需要动态处理此问题,以便您知道是否正在获取令牌(tok_XXXX)或卡ID(card_XXXX),并根据该决定传递不同的参数。您的前端代码应该知道您最终处于哪种情况。

0

只需将值传递到请求体中,

[{"key":"amount","value":"1000","description":""},{"key":"currency","value":"usd","description":""},{"key":"customer","value":"cus_ID","description":""},{"key":"description","value":"\"Charge for jenny.rosen@example.com\"","description":""},{"key":"card","value":"card_ID","description":""}]

这对我有用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接