[英]Stripe python attach existing card/source to new customer
我有以下情況:
用戶可以預訂房間。
訪客可能沒有預訂就預訂房間。 在這種情況下,我會在沒有客戶的情況下創建條紋收費
用戶在預訂過程中可能決定創建一個帳戶。 在這種情況下,我還創建了一個條紋客戶。
我需要的
如果用戶決定創建一個帳戶:
我要使用用戶輸入的信用卡,該信用卡用於創建費用並將信用卡附加到客戶,因此用戶可以在其個人資料中查看其信用卡,然后選擇/使用該信用卡進行未來的預訂。
問題:
在創建客戶之前創建條帶狀費用。 因此,我需要拿貨源並將其附加到客戶身上。 (我已經可以成功更新費用並添加customer.id,但是相同的過程對更新客戶無效。)
更新客戶來源給我:
Cannot use stripe token more than once
到目前為止我嘗試過的是:
從收費中獲取card_id
ch_ch = stripe.Charge.retrieve(new_booking.stripe_charge_id)
customer.sources.create(card=ch_ch.source.id)
customer.save()
使用源ID
customer.sources.create(source=form.stripe_source_id.data)
不同的語法
customer.source = form.stripe_source_id.data
customer.save()
注意: form.stripe_source_id.data
包含一個tok_1DEvMCGd8vfeewZVgrSRu4
,它在創建信用卡元素時由stripe.js返回。 這用於創建費用,可以完美地發揮作用:
stripe_charge = stripe.Charge.create(
amount=int(float(data_received['total_price']) * 100),
currency="eur",
source=form.stripe_source_id.data,
description=None,
#customer=user_id, # customer is anonymous
capture=False, # if False the charge needs to be captured, otherwise it will expire in 7 days and is refunded
#receipt_email='email für den typer, der die rechnung kriegt, funktioniert nur im livemode',
metadata={
'infos': 'process stripe payment anonymous charge'
}
)
我在文檔中指出,如果附加/更新了客戶資源,則將創建一個新資源,但這意味着不可能將現有資源附加到客戶身上嗎? 那不可能是真的。
由Elements返回的令牌或源的ID。 傳遞源將創建一個新的源對象,使其成為新的客戶默認源,如果存在則刪除舊的客戶默認值。
一旦卡令牌已用於收費,就無法將卡添加到客戶。 您可以將貨源添加到客戶並使用它來收取費用,也可以要求客戶在開設帳戶時重新輸入其付款信息。
這種情況的原因之一是保護客戶卡數據。 受限制的流量使中間的基於Stripe的平台(例如Shopify)更容易防止商家濫用,從而違反了客戶的意願保存卡的詳細信息。
如果您堅持要遵循所描述的流程,則可以采用以下解決方法:當有人輸入卡信息時,請假顧客並向其收費。 然后,如果他們注冊了帳戶,則將其信息與客戶相關聯。 但是,管理和刪除這些無關的虛擬客戶將是額外的工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.