是否可以进行条形支付
首先,我们将使用条带验证信用卡,然后我们生成令牌并创建客户。 我们会在数据库中保存令牌而不是信用卡信息,之后我们将根据令牌或客户而非信用卡信息向客户付款。
在javscript文件中,我们如何处理stripeResponseHandler
和function 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上验证卡片。
答案 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个选项可以创建费用。
使用默认来源向客户收费:
Stripe::Charge.create(
amount: 1000,
currency: 'usd',
customer: 'cus_xxxx'
)
使用信用卡向客户收费:
Stripe::Charge.create(
amount: 5000,
currency: 'usd',
customer: 'cus_xxxx',
card: 'card_xxxx'
)
使用银行帐户向客户收费:
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);