簡體   English   中英

條紋python將現有卡/源附加到新客戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM