首页 文章

条带创建具有卡ID的令牌

提问于
浏览
2

我目前正在尝试使用服务器端条带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
});

这给了我这个错误信息
enter image description here

3 回答

  • 1

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

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

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

  • 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

    "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'参数,因为它是在我们通过卡令牌付款时使用的 .

  • 0

    https://api.stripe.com/v1/charges只传递正文中的值,

    [{ “键”: “量”, “值”: “1000”, “说明”: “”},{ “键”: “货币”, “值”: “USD”, “说明”: “”} ,{“key”:“customer”,“value”:“cus_ID”,“description”:“”},{“key”:“description”,“value”:“\”收取jenny.rosen@example的费用 . COM \ “”, “说明”: “”},{ “键”: “卡”, “值”: “card_id的”, “描述”: “”}]

    这对我有用

相关问题