(Stripe API) Возможность получить токен bank_account, но не токен карты - PullRequest
0 голосов
/ 27 января 2019

Я могу создать токен на стороне клиента для bank_account, но не могу сделать то же самое для card (Stripe Connected Account);документация предполагает, что эти процессы почти идентичны.

Работа с bank_account:

С помощью следующей клиентской (JS) я могу создать токен;токен возвращается.

result = stripe.createToken('bank_account', {
        account_holder_name: 'Test Account Holder',     
        account_holder_type: 'individual',
        account_number:'000123456789', // Stripe test account number
        routing_number: '110000000', // Stripe test routing number
        currency: 'usd',
        country:'US'
}).then(function(result) {
    console.log("OK");
    console.log(result);
}).catch(function(error) {
    console.log("ERROR:");
    console.log(error);
});

Не работает с card:

Однако, когда я заменяю параметр bank_account параметром card иСледующие обязательные параметры, я получаю следующую ошибку:

result = stripe.createToken('card', {
        number: '5200828282828210', // Stripe testing card
        exp_month: '12',
        exp_year:'2020',
        cvc: '1234',
        currency: 'usd',
        name:'Test Account Holder Name',
        default_for_currency: true      
}).then(function(result) {
    console.log("OK");
    console.log(result);
}).catch(function(error) {
    console.log("ERROR:");
    console.log(error);
});

Error: Invalid value for token type: value should be one of the following strings: account, bank_account, pii, apple_pay. You specified: card.

Моя путаница:

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

Я знаю, что pii в основном для SSN (США), я только что успешно использовал bank_account и cardВерсия (согласно их документам), похоже, идентична.Я пробовал account только для взлома (безрезультатно), и apple_pay явно не применимо.

Почему я получаю эту ошибку?Как я могу решить эту проблему и получить card токен.

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Проблема в том, что вы не можете передать необработанные данные карты методу на стороне клиента.Это заблокировано по умолчанию, поскольку это влияет на ваш статус соответствия PCI.Это задокументировано здесь: https://stripe.com/docs/security#validating-pci-compliance

Вместо этого вам нужно использовать Elements .Эта библиотека предлагает компоненты пользовательского интерфейса, которые можно использовать для безопасного сбора информации о карте на стороне клиента.Вы можете увидеть некоторые примеры в действии здесь: https://stripe.github.io/elements-examples/

0 голосов
/ 27 января 2019

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

result = stripe.createToken('card': {
    number: '5200828282828210', // Stripe testing card
    exp_month: '12',
    exp_year:'2020',
    cvc: '1234',
    currency: 'usd',
    name:'Test Account Holder Name',
    default_for_currency: true      
}).then(function(result) {
  console.log("OK");
  console.log(result);
}).catch(function(error) {
  console.log("ERROR:");
  console.log(error);
});
...