0

我做了一個巨大的Django表單用於訂閱付費服務。它包含用戶數據,用戶首選項和用戶付款信息。如何在包含其他數據的表單中使用stripe.js?

正如你可能知道,stripe.js is intended to work this way

  • 如果信用卡的相關信息是錯誤的,顯示在JS錯誤。提交 不會發生,所以頁面不會重新加載。
  • 如果信用卡信息是正確的,那麼表單將提交給Django服務器,然後重新加載頁面。
  • 請注意,在此過程中,信用卡信息不會發送到Django服務器(這是完整的目的)。

它似乎被認爲只用於信用卡表格(沒有額外的數據)。

  • 如果信用卡數據是正確的,但其他的數據是錯誤的,Django的頁面與其他數據字段重裝填,並與信用卡數據空:其結果是,在這裏發生了什麼提交我的表單時發生(這是絕對正常的,因爲信用卡數據永遠不會發送到Django服務器,與其他數據相反)。

問題是我不想強迫我的用戶重新輸入信用卡信息,如果他們在表單中的其他地方犯了一個錯誤。

我明白爲什麼會出現這種情況,但有沒有辦法解決這個問題? 我想Django form-wizard可能是一種方式,它是?有更簡單的嗎?

非常感謝。

+0

stripe.js很好,如果你只是處理一個簡單的付款。您將需要執行以下兩項操作之一:使用Ajax整個表單或使用Stripe Python API驗證併爲卡充電。我會在這個用例中完全跳過stripe.js。 – Brandon 2014-12-28 00:36:56

+0

如何在不將信用卡信息傳輸到服務器的情況下跳過stripe.js? – 2014-12-28 00:44:47

+0

您不需要stripe.js將數據發送到Stripe。他們提供了一個Python庫,您可以在服務器端發送所有的數據:https://github.com/stripe/stripe-python – Brandon 2014-12-28 00:46:48

回答

0

我不是Django的專家,所以我不能在這裏提供明確的代碼,但信用卡數據發送到Stripe(通過Stripe.js)並返回代表令牌。該令牌存儲在一個隱藏的表單輸入中,以便它轉到服務器端代碼。

在您的情況下,我傾向於將令牌重新存儲在隱藏表單輸入中,並指出信用卡已被佔用。如果您相應地動態調整驗證邏輯,那麼當其他信息出現問題時,您就不需要重新刷卡。

乾杯, 拉里

PS我在條紋上的支持工作。

相關問題