我希望这里的某人可以将注意力转移到我的流程上,看看我做的是否正确,如果不能正确地建议我应该改进的地方。
我的情况很简单:
第1步
我相信,这时我已经有了一个响应ID和一个包含抽象卡详细信息以及卡ID的源对象。
第2步
我连接到Stripe API:
Stripe::setApiKey($stripe_secret_key); // note this is a Connect account
Stripe::setApiVersion('2018-05-21');
我检查是否已经为此电子邮件地址存储了Stripe客户ID。如果是这样,我会使用它。否则,我将创建Stripe客户:
$customer = Stripe_Customer::create(
[
'description' => $u->user_email,
'email'=>$u->user_email
], $stripe_access_token
);
$customer_id = $customer->id;
然后我获取该客户的Stripe对象:
$customer = Stripe_Customer::retrieve($customer_id);
然后我使用响应ID获取源对象
$source = Stripe_Token::retrieve($form_response_id);
第3步
我想确保这笔费用是从客户现在使用的卡中收取的,而不管他们之前是否曾使用过该卡,或之前是否使用过同一张卡。因此,我将此来源保存给客户:
$customer->sources->create(['source' => $source->id]);
$customer->save();
...,尽管应该将最新的来源作为默认来源(即使用的来源),但我要确保:
$customer->default_source = $source->card->id;
$customer->save();
第4步
我做了一些本地工作来获取费用说明,计算申请费用等。我将这一切都作为费用数组,使用从Stripe.js收到的初始卡ID作为“源”参数
$charge = [
'customer' => $customer->id,
'source' => $transaction_card_id,
'amount' => $total_gross_received_cents,
'currency' => 'EUR',
'description' => $transaction_desc,
'application_fee' => $application_fee
];
$charge_obj = Stripe_Charge::create($charge, $stripe_access_token);
$charge_id = $charge_obj->id;
然后我将$charge_id
保存在我的交易记录中。
问题
我最大的担忧是围绕步骤3-确保正确的卡已被接受并使用。请注意:
我是否可以每次将卡保存为新的客户来源,即使该卡已经存在并分配给他们了?看来可行,并且覆盖了重复的源记录,但是我想确定。
很明显,我对于推出一些我感觉还没有完全成熟的东西感到不安,因此,如果有人可以给我一个大拇指或大拇指一个大拇指,我将非常感激。
答案 0 :(得分:0)
这是我的笔记:
卡信息需要安全地存储在受信任的支付网关(例如Stripe,PayPal)的一侧。不存储敏感的信用卡信息是PCI compliance的要求之一。
在您的情况下,我认为您可以使用令牌。或创建一个客户并保存您的客户ID供以后使用。
https://stripe.com/docs/saving-cards
https://stripe.com/docs/recipes/updating-customer-cards
https://stackoverflow.com/a/18377973/5179786