2013-08-22 1 views
25

Можно ли в полосовой оплате,нашивка Оплаты: Сохранить токен и клиент и произвести оплату позже из лексем

Сначала будет проверять кредитную карту, используя полосу, а затем мы формируем маркер и создать клиент. мы сохраним токен вместо информации о кредитной карте в базе данных, а позже мы будем производить платежи от клиентов на основе токена или клиента вместо информации о кредитной карте.

В файле javscript как мы обрабатываем stripeResponseHandler и function stripeResponseHandler(status, response)?

, потому что мы уже генерировать маркер с помощью

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

на этапе оплаты, как мы называем stripeResponseHandler?


Пожалуйста, обратите внимание требования

1- Сохранить Токен путем проверки информации о кредитной карте, в этом случае никакой компенсации не связана. сумма/цена будет равна нулю (0).

2- Сохранить Токен в базе данных, но этот маркер использовать один раз не много time.If использовать этот Токен позже он не будет работать.

3- Создать Клиент создаст на сайте stripe.com клиент и сохранит его в нашей базе данных, но причина в том, что мы не будем перезаряжать с нашего сайта, нам нужно зайти на сайт stripe.com и перезагрузить это сайт. когда мы перезаряжаем с этого сайта, мы не можем сохранить записи этого в нашей базе данных. Также во время создания клиента мы должны создать перезарядку для последнего. нам также нужна кредитная карта, если мы используем этот клиент. так что это главная проблема.

4 мы можем сделать собственную функцию stripeResponseHandler, потому что через stripeResponseHandler проверка карт может быть сделана на stripe.js на сервере полоски.

+1

Каждый раз, нам нужен новый маркер для оплаты через информацию о кредитной карте, этот пример https://stripe.com/docs/tutorials/charges # save-credit-card-details-for-later, просто создаст клиента на stripe.com, и мы используем этот идентификатор пользователя ... Эта сумма потребности, но в нашем случае сначала мы проверяем кредитную карту и сохраняем токен, а позже после 1 день, 1 месяц или любое время произвести платеж с этой учетной записи пользователя. – Shahzad

ответ

31

Вместо сохранения самого токена я рекомендую создать клиента и сохранить ваш идентификатор клиента. Затем вы можете поручить своего клиента в любое время в будущем. См. Нашу документацию по адресу saving card details for later.

В файле javscript мы обрабатываем stripeResponseHandler и функцию stripeResponseHandler (статус, ответ).

При вызове createToken вам необходимо будет создать функцию и передать ее в качестве stripeResponseHandler. Все это нужно сделать, это вставить свой токен в свою форму и отправить его. Вот простой пример этого: https://gist.github.com/boucher/1750375

+0

можете ответить ниже ответов? – Shahzad

+0

Чтобы сохранить идентификатор клиента, мне нужно расширить модель пользователя Django или то, что было бы рекомендованным подходом –

6

Вместо сохранения жетонов создайте объект клиента и сохраните только локальные идентификаторы карты. Когда вы делаете платеж, вы можете опционально определить плату, которую вы должны заплатить. (Если вы передаете идентификатор клиента на stripe.charges.create). В этом случае вам не нужно передавать токен. При таком подходе вам также не нужно иметь дело с карточкой по умолчанию.

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

Примечание: ответ возвращает client_id, поэтому кажется, что он должен работать от источника (токена) без client_id а затем вы можете поместить его в свой db после того, как платеж будет успешным ... –

16

В полоске, для того, чтобы сохранить карту (или банковский счет), чтобы зарядить позже, вы должны создать клиент, затем добавить источники оплаты (карты или BANK_ACCOUNT) для этого клиента.

Как только вы создаете клиента с источником оплаты (или источниками), у вас есть 3 варианта создания заряда.

  1. Charge клиента с использованием источника по умолчанию:

    Stripe::Charge.create(
        amount: 1000, 
        currency: 'usd', 
        customer: 'cus_xxxx' 
    ) 
    
  2. Charge клиент с помощью кредитной карты:

    Stripe::Charge.create(
        amount: 5000, 
        currency: 'usd', 
        customer: 'cus_xxxx', 
        card: 'card_xxxx' 
    ) 
    
  3. Charge клиент с помощью банковского счета:

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

Используйте этот код отрезала, а затем вы можете захватить платеж на идентификатор транзакции путем передачи захвата: истинный

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

для получения более подробной информации см link , как указано:

захвата: - опционально, по умолчанию true Независимо от того, следует ли немедленно снять заряд. Когда значение false, плата выдает авторизацию (или предварительную авторизацию), и ее необходимо будет записать позже. Непроверенные заряды истекают через 7 дней. Для получения дополнительной информации, see authorizing charges and settling later.

Я думаю, что это решает проблему вы столкнулись

+0

Было бы неплохо добавить более подробную информацию к вашему ответу. – Axalix

+0

Да, я добавил больше деталей, чтобы ответить. –