Подтвердить что ты не робот

Stripe Payment: получение ошибки как клиент cus _ ***** не имеет связанной карты с ID tok _ *****

В режиме тестирования, когда я создаю нового клиента и пытаюсь оплатить, я получил эту ошибку.

Клиент cus_7Zz2BCnybIZLGw не имеет связанной карты с идентификатором tok_17Kp8GAwLkQPB7OqrrM73VVI

Im используя номер карты: 4242424242424242 exp_month: 12 exp_year 2016

Возвратный ответ:

Array
(
    [charge_status] => 
    [error_info] => Array
        (
            [type] => invalid_request_error
            [message] => Customer cus_7Zz2BCnybIZLGw does not have a linked card with ID tok_17Kp8GAwLkQPB7OqrrM73VVI.
            [param] => card
            [code] => missing
        )

    [message] => Customer cus_7Zz2BCnybIZLGw does not have a linked card with ID tok_17Kp8GAwLkQPB7OqrrM73VVI.
)

Данные о входных данных,

 $customer = Stripe_Customer::create(array(
      'account_balance' => 100,
      'source' => $token,
      'email' => strip_tags(trim($email))
    )
  );

$customer_id = $customer->id;

$charge   = array(
                'card'          => 4242424242424242, 
                'amount'        => 100, 
                'currency'      => 'cad', 
                'receipt_email' => [email protected],
                'description'   => 'my payment',
                'customer'      => $customer_id
              );
4b9b3361

Ответ 1

Существует три разных способа создать плату:

  • только с параметром source. В этом случае source должен быть token ID (созданный Checkout или Stripe.js), то есть строку, начинающуюся с tok_.

  • только с параметром customer. В этом случае customer должен быть customer ID, то есть строка, начинающаяся с cus_. Плата за клик по умолчанию будет снята.

  • с параметрами customer и source. В этом случае customer должен быть идентификатором клиента, как в предыдущем случае, но source должен быть идентификатором карты, то есть строкой, начинающейся с card_. Объект карты должен принадлежать клиенту.

В вашем случае вы передаете идентификатор токена в параметре source вместе с идентификатором клиента в параметре customer.

Если это новая карта, вы должны сначала использовать токен создать карту на клиенте, а затем создать плату с идентификатором карты. Если карта уже была сохранена для этого клиента, вам не нужно снова собирать информацию о карте (и, следовательно, вообще не нужно создавать токен).