条带创建具有卡ID

时间:2018-05-15 17:20:47

标签: node.js stripe-payments

我目前正在尝试使用服务器端条带api创建费用。

但我面临一个问题;我正在使用两种方式来处理这个问题:

  • 用户可以使用stripe element =>付款我因此使用生成的令牌('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
});

这给了我这条错误消息enter image description here

3 个答案:

答案 0 :(得分:1)

您无法为现有卡创建新令牌,因为这没有意义。该卡已保存在客户手中,您可以对其进行充电。

这里最简单的解决方案可能是反过来,并在获得令牌tok_XXXX时将卡保存在客户身上。这样,您始终通过将customer参数作为客户ID cus_XXXX并将source参数作为卡ID card_XXXX传递来为卡充电。

否则,您需要动态处理此问题,以便了解您是获取令牌(tok_XXXX)还是卡ID(card_XXXX)并根据该决定传递不同的参数。您的前端代码应该知道您最终处于哪种情况。

答案 1 :(得分:1)

如果您使用存储卡付款,则无需获取令牌,

1-在条带上创建客户

$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和卡令牌在条带上添加卡

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

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

现在您拥有这样的卡号

"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'参数,因为在通过卡令牌进行付款时会使用它。

答案 2 :(得分:0)

https://api.stripe.com/v1/charges 只需传递体内的值

[{“ key”:“ amount”,“ value”:“ 1000”,“ description”:“”},{“ key”:“ currency”,“ value”:“ usd”,“ description”: “”},{“ key”:“客户”,“值”:“ cus_ID”,“描述”:“”},{“键”:“描述”,“值”:“ \” jenny.rosen的费用@ example.com \“”,“说明”:“”},{“ key”:“卡”,“值”:“ card_ID”,“说明”:“”}]]

这对我有用