Создание заряда ACH с полосой + плед - такого жетона нет; аналогичный объект существует в режиме реального времени

У меня была эта проблема раньше, когда я пытался списать деньги с действующей карты / клиента в режиме разработки. Я никогда раньше не заряжал ACH с полосой и точно нахожусь в режиме разработки. https://stripe.com/docs/ach#integrating-plaid

js

var linkHandler = Plaid.create({
env: 'tartan',
clientName: 'Stripe / Plaid Test',
key: '[Plaid key]',
product: 'auth',
selectAccount: true,
onSuccess: function(public_token, metadata) {
 // Token & Account ID - I use this for subsequent cURL requuest
 console.log('public_token: ' + public_token);
 console.log('account ID: ' + metadata.account_id);
 },
});

// Trigger the Link UI
 document.getElementById('linkButton').onclick = function() {
 linkHandler.open();
};

Ответ действительный. Я использую public_token и идентификатор учетной записи, указанные выше:

    $data = array(
            'client_id' => 'MY_CLIENT_ID',
            'secret' => 'MY_SECRET',
            'public_token' => 'MY_PUBLIC_TOKEN_FROM_ABOVE',
            'account_id' => 'MY_ACCOUNT_ID_FROM_ABOVE'
     );


    $string = http_build_query($data);

    //initialize session
    $ch=curl_init("https://tartan.plaid.com/exchange_token");

    //set options
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    //execute session
    $keys = curl_exec($ch);
    $keys = json_decode($keys);
    //close session
    curl_close($ch);

Это также приводит к действительному объекту ответа:

{
 access_token: 'MY_ACCESS_TOKEN',
 account_id: 'MY_ACCOUNT_ID',
 stripe_bank_account_token: 'MY_STRIPE_BANK_ACCOUNT'
}

Полагаю, здесь я запутался. Документы говорят: Ответ будет содержать подтвержденный идентификатор токена банковского счета Stripe. Вы можете прикрепить этот токен к объекту Stripe Customer или создать начисление непосредственно на нем.

Однако, когда я создаю платеж на токен банковского счета следующим образом:

    \Stripe\Stripe::setApiKey("sk_test_MY_TEST_KEY");

    $charge = \Stripe\Charge::create(array(
      "amount" => 2100,
      "currency" => "usd",
      "source" => $keys->stripe_bank_account_token, //(btok_MY_TOKEN_FROM_ABOVE)
      "description" => "my description"
    ));

    var_dump( $charge );

Я получаю следующую ошибку: Неустранимая ошибка: неперехваченное исключение «Stripe \ Error \ InvalidRequest» с сообщением «Нет такого токена: btoken_MY_BANK_TOKEN; аналогичный объект существует в режиме реального времени, но для этого запроса использовался ключ тестового режима. '


person Justin W Hall    schedule 08.11.2016    source источник
comment
Похоже, конец вашего вопроса отсутствует. Что происходит, когда вы пытаетесь использовать токен банковского счета, возвращенный Plaid? Возвращает ли API сообщение об ошибке?   -  person Ywain    schedule 08.11.2016
comment
Я прошу прощения. Обновлено.   -  person Justin W Hall    schedule 08.11.2016


Ответы (1)


Это означает, что вы создали токен реального банковского счета.

Если вы хотите протестировать свою интеграцию, вам необходимо сгенерировать токен Plaid со следующими учетными данными:

  • Имя пользователя: test_plaid
  • Пароль: test_good
  • Код: 1234

Это вернет токен тестового банковского счета, который вы можете использовать в запросе API, отправленном с вашим тестовым секретным ключом API Stripe (sk_test_...).

Если вы хотите обработать текущий платеж, вам необходимо использовать реальные учетные данные в ссылке Plaid, чтобы получить обратно токен реального банковского счета, а затем использовать токен банковского счета в запросе API, отправленном с вашим секретным ключом API Stripe live secret (sk_live_...).

person Ywain    schedule 08.11.2016
comment
Спасибо. Для ясности, это будет примерно так: jsfiddle.net/u2L1cgw6/1 - person Justin W Hall; 08.11.2016
comment
@Ywain, пожалуйста, ответьте на мой вопрос stackoverflow.com/questions/58096180/ - person Sudhir; 27.09.2019