条纹付款:保存令牌和客户,稍后从令牌付款

时间:2013-08-22 07:33:09

标签: payment stripe-payments

是否可以进行条形支付

首先,我们将使用条带验证信用卡,然后我们生成令牌并创建客户。 我们会在数据库中保存令牌而不是信用卡信息,之后我们将根据令牌或客户而非信用卡信息向客户付款。

在javscript文件中,我们如何处理stripeResponseHandlerfunction stripeResponseHandler(status, response)

因为我们已经使用

生成令牌
Stripe.createToken({
            number: cardNumber,
            cvc: cardCVC,
            exp_month: $('#expiration-month').val(),
            exp_year: $('#expiration-year').val()
        }, stripeResponseHandler);

在付款步骤中我们如何调用stripeResponseHandler?


请理解要求

1-通过验证信用卡信息保存令牌,在这种情况下不涉及任何付款。金额/价格将为零(0)。

2-在数据库中保存此令牌,但此令牌使用次数不多。如果稍后使用此令牌,则无效。

3-创建客户将在stripe.com创建客户,我们也可以保存在我们的数据库中,但原因是我们不会从我们的网站充值,我们必须以条带登录。 com并从该网站充值。当我们从该网站充值时,我们无法在我们的数据库中保存该记录。在创建客户时,我们必须为后者创建充值。如果我们使用这个客户,我们还需要再次使用信用卡。所以这是主要问题。

4-我们可以自己创建函数 stripeResponseHandler ,因为通过 stripeResponseHandler 可以在条带服务器的stripe.js上验证卡片。

5 个答案:

答案 0 :(得分:36)

我建议创建客户并保存您的客户ID,而不是保存令牌本身。然后,您可以在将来的任何时间向您的客户收费。请参阅saving card details for later上的文档。

  

在javscript文件中我们如何处理stripeResponseHandler和函数stripeResponseHandler(状态,响应)。

您需要创建一个函数,并在调用stripeResponseHandler时将其作为createToken传递。所有这些功能都需要将您的令牌插入表单并提交。这里有一个简单的例子:https://gist.github.com/boucher/1750375

答案 1 :(得分:23)

在Stripe中,为了保存卡(或银行帐户)以便以后收费,您必须创建一个客户,然后向该客户添加付款来源(card或bank_account)。

使用付款来源(或多个来源)创建客户后,您有3个选项可以创建费用。

  1. 使用默认来源向客户收费:

    Stripe::Charge.create(
        amount: 1000,
        currency: 'usd',
        customer: 'cus_xxxx'
    )
    
  2. 使用信用卡向客户收费:

    Stripe::Charge.create(
        amount: 5000,
        currency: 'usd',
        customer: 'cus_xxxx',
        card: 'card_xxxx'
    )
    
  3. 使用银行帐户向客户收费:

    Stripe::Charge.create(
        amount: 8000,
        currency: 'usd',
        customer: 'cus_xxxx',
        bank_account: 'ba_xxxx'
    )
    

答案 2 :(得分:7)

不是保存令牌而是创建客户对象,并在本地仅保存卡ID。 当您付款时,您可以选择定义要收费的卡。(如果您将客户ID传递给stripe.charges.create)。在这种情况下,您不必传递令牌。使用这种方法,您也不需要处理默认卡。

stripe.charges.create({
amount: 400,
currency: "usd",
card: "card_xxxxx", 
customer: "cus_xxxxxx", 

答案 3 :(得分:2)

使用此代码剪切,稍后您可以通过传递capture:true

来捕获事务ID的付款
token = params[:stripeToken]
    # Charge the user's card:
    charge = Stripe::Charge.create(
      :amount => 1000,
      :currency => "usd",
      :description => "Example charge",
      :capture => false,
      :source => token,
    )

有关详细信息,请参阅link 如上所述:

捕获: - 可选,默认为true 是否立即捕获费用。如果为false,则收费会发出授权(或预授权),并且需要稍后捕获。未被捕获的费用将在7天后到期。有关详细信息,请see authorizing charges and settling later.

我认为它解决了你所面临的问题

答案 4 :(得分:0)

要创建令牌,您首先需要从stripe.com引用stripe.js

   <script src="https://js.stripe.com/v3/"></script>

然后添加以下代码以添加您的卡信息并生成令牌。

    var stripe = Stripe('Your stripe publisheable key');
  var elements = stripe.elements;

stripe.createToken(elements[0], additionalData).then(function (result) {
                example.classList.remove('submitting');

                if (result.token) {
                    // If we received a token, show the token ID.
                    example.querySelector('.token').innerText = result.token.id;
                    example.classList.add('submitted');
                }

在这里,您将获得创建客户所需的令牌。使用以下代码创建您的客户。我用的是C#.NET

StripeConfiguration.SetApiKey("sk_test_JTJYT2SJCb3JjLQQ4I5ShDLD");

var options = new CustomerCreateOptions {
  Description = "Customer for jenny.rosen@example.com",
  SourceToken = "tok_amex"
};

var service = new CustomerService();
Customer customer = service.Create(options);

然后,您可以从从条带中获得的卡令牌中削减该用户的价格,如下所示:

StripeConfiguration.SetApiKey("sk_test_JTJYT2SJCb3JjLQQ4I5ShDLD");

var options = new ChargeCreateOptions {
    Amount = 2000,
    Currency = "aud",
    Description = "Charge for jenny.rosen@example.com",
    SourceId = "tok_amex" // obtained with Stripe.js, }; var service = new ChargeService(); Charge charge = service.Create(options);