2013-08-22 31 views
25

Có thể trong thanh toán sọc,thanh toán sọc: Lưu token và khách hàng và thực hiện thanh toán sau đó từ thẻ

Đầu tiên chúng tôi sẽ xác nhận thẻ tín dụng sử dụng sọc, sau đó chúng tôi tạo ra dấu hiệu và tạo ra khách hàng. chúng tôi sẽ lưu mã thông báo thay vì thông tin thẻ tín dụng trong cơ sở dữ liệu và sau đó chúng tôi sẽ thực hiện thanh toán từ khách hàng trên cơ sở mã thông báo hoặc khách hàng thay vì thông tin thẻ tín dụng.

Trong tệp javscript, cách chúng tôi xử lý stripeResponseHandlerfunction stripeResponseHandler(status, response)?

bởi vì chúng tôi đã tạo ra dấu hiệu sử dụng

Stripe.createToken({ 
      number: cardNumber, 
      cvc: cardCVC, 
      exp_month: $('#expiration-month').val(), 
      exp_year: $('#expiration-year').val() 
     }, stripeResponseHandler); 

trong bước thanh toán như thế nào chúng ta gọi là stripeResponseHandler?


Hãy hiểu rằng yêu cầu

1- Lưu bằng cách kiểm tra thông tin thẻ tín dụng, trong trường hợp này không thanh toán liên quan đến. số tiền/giá sẽ bằng không (0).

2- Lưu này trong cơ sở dữ liệu của bạn, nhưng dấu hiệu này là sử dụng một lần không nhiều time.If sử dụng này sau nó sẽ không làm việc.

3- Tạo khách hàng sẽ tạo khách hàng tại stripe.com và chúng tôi cũng có thể lưu vào cơ sở dữ liệu của mình. trang web đó. khi chúng tôi nạp tiền từ trang web đó, chúng tôi không thể lưu hồ sơ về điều đó trong cơ sở dữ liệu của chúng tôi. Ngoài ra, tại thời điểm tạo khách hàng, chúng tôi phải tạo một khoản tiền nạp tiền sau này. chúng tôi cũng cần thẻ tín dụng một lần nữa nếu chúng tôi sử dụng ứng dụng khách này. vì vậy đây là vấn đề chính.

4 chúng ta có thể thực hiện chức năng riêng stripeResponseHandler, bởi vì thông qua stripeResponseHandler xác minh thẻ có thể được thực hiện tại stripe.js tại máy chủ sọc.

+1

Mỗi lần chúng ta cần một dấu hiệu mới cho thanh toán qua thông tin thẻ tín dụng, ví dụ này https://stripe.com/docs/tutorials/charges # saving-credit-card-details-for-later, sẽ chỉ tạo khách hàng trong stripe.com và chúng tôi sử dụng id người dùng này ... Số tiền cần thiết này nhưng trong trường hợp của chúng tôi trước tiên chúng tôi xác minh thẻ tín dụng và lưu mã thông báo và sau 1 ngày, 1 tháng hoặc bất kỳ lúc nào thực hiện thanh toán từ tài khoản người dùng đó. – Shahzad

Trả lời

31

Thay vì lưu mã thông báo, tôi khuyên bạn nên tạo một khách hàng và lưu ID khách hàng của bạn. Sau đó, bạn có thể tính phí cho khách hàng của mình bất cứ lúc nào trong tương lai. Xem tài liệu của chúng tôi theo số saving card details for later.

Trong tệp javscript cách chúng tôi xử lý stripeResponseHandler và chức năng stripeResponseHandler (trạng thái, phản hồi).

Bạn cần tạo hàm và chuyển nó làm stripeResponseHandler khi gọi createToken. Tất cả chức năng này cần làm là chèn mã thông báo của bạn vào biểu mẫu của bạn và gửi nó. Có một ví dụ đơn giản về điều đó tại đây: https://gist.github.com/boucher/1750375

+0

bạn có thể trả lời các câu trả lời dưới đây không? – Shahzad

+0

Để lưu Id khách hàng, tôi có cần mở rộng mô hình Người dùng Django hay cách tiếp cận được đề nghị –

6

Thay vì lưu mã thông báo, hãy tạo đối tượng khách hàng và chỉ lưu id thẻ tại địa phương. Khi bạn thực hiện thanh toán, bạn có thể tùy ý xác định thẻ được tính phí (Nếu bạn chuyển id khách hàng thành stripe.charges.create) .Trong trường hợp đó bạn không phải chuyển mã thông báo. Với cách tiếp cận này, bạn không cần phải xử lý thẻ mặc định.

stripe.charges.create({ 
amount: 400, 
currency: "usd", 
card: "card_xxxxx", 
customer: "cus_xxxxxx", 
+0

Lưu ý: phản hồi trả về customer_id, vì vậy có vẻ như nó sẽ hoạt động từ nguồn (token) w/o customer_id và sau đó bạn có thể đặt nó trong db của bạn sau khi thanh toán thành công ... –

16

Trong sọc, để tiết kiệm một thẻ (hoặc tài khoản ngân hàng) để sạc sau đó, bạn phải tạo một khách hàng, sau đó thêm các nguồn thanh toán (thẻ hoặc BANK_ACCOUNT) để khách hàng đó.

Khi bạn tạo khách hàng với nguồn thanh toán (hoặc nguồn), bạn có 3 tùy chọn để tạo khoản phí.

  1. phí cho khách hàng sử dụng nguồn mặc định:

    Stripe::Charge.create(
        amount: 1000, 
        currency: 'usd', 
        customer: 'cus_xxxx' 
    ) 
    
  2. phí cho khách hàng sử dụng thẻ tín dụng:

    Stripe::Charge.create(
        amount: 5000, 
        currency: 'usd', 
        customer: 'cus_xxxx', 
        card: 'card_xxxx' 
    ) 
    
  3. phí cho khách hàng sử dụng một tài khoản ngân hàng:

    Stripe::Charge.create(
        amount: 8000, 
        currency: 'usd', 
        customer: 'cus_xxxx', 
        bank_account: 'ba_xxxx' 
    ) 
    
1

Sử dụng mã này snipped và sau đó bạn có thể chụp thanh toán trên id giao dịch bằng cách chụp: true

token = params[:stripeToken] 
    # Charge the user's card: 
    charge = Stripe::Charge.create(
     :amount => 1000, 
     :currency => "usd", 
     :description => "Example charge", 
     :capture => false, 
     :source => token, 
    ) 

để biết thông tin chi tiết hơn tham khảo link như đã nêu:

chụp: - tùy chọn, mặc định là true Có hay không ngay lập tức thu phí. Khi sai, khoản phí phát hành ủy quyền (hoặc ủy quyền trước) và sẽ cần phải được ghi lại sau. Các khoản phí không bị hủy sẽ hết hạn sau 7 ngày. Để biết thêm thông tin, see authorizing charges and settling later.

Tôi nghĩ rằng nó giải quyết vấn đề bạn đang phải đối mặt

+0

Sẽ tốt hơn nếu bạn thêm các chi tiết khác vào câu trả lời của mình. – Axalix

+0

vâng tôi đã thêm nhiều chi tiết hơn để trả lời. –

Các vấn đề liên quan