Square Payment API - проблема с меньшим номиналом суммы - PullRequest
0 голосов
/ 13 ноября 2018

Я использую Square Payment API, я не могу найти в документах ничего такого же,

Допустим, я хочу взимать 52,50 канадских долларов.

Как мы все знаем, это не такразрешить десятичную сумму (я использую Node.js SDK v2).

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

У меня есть собственная настраиваемая форма, яХотите узнать, нужно ли передавать сумму меньшим номиналом при передаче значения из формы платежа (одноразовая карта генерирования), или только на стороне API, или и то, и другое.

Я запрашиваю сумму у пользователя безменьшего номинала, т. е. (52,50 CAD), как передать сумму в SDK, а также во внешнем интерфейсе.

1 Ответ

0 голосов
/ 13 ноября 2018

Наименьшая стоимость канадского доллара (CAD), как и доллара США (USD), составляет цент.

Ваша пользовательская / внешняя форма может выбрать показ суммы в долларах, но вызов API должен быть наименьшего номинала.

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

Пример кода

Источник: Пример обработки платежа: Узел JS

router.post('/process-payment', function(req,res,next){
  var request_params = req.body;

  var idempotency_key = require('crypto').randomBytes(64).toString('hex');

  // Charge the customer's card
  var transactions_api = new squareConnect.TransactionsApi();
  var request_body = {
    card_nonce: request_params.nonce,
    amount_money: {
      amount: 100, // $1.00 charge
      currency: 'USD'
    },
    idempotency_key: idempotency_key
  };
  transactions_api.charge(config.squareLocationId, request_body).then(function(data) {
    console.log(util.inspect(data, false, null));
    res.render('process-payment', {
      'title': 'Payment Successful',
      'result': "Payment Successful (see console for transaction output)"
    });
  }, function(error) {
    console.log(util.inspect(error.status, false, null));
    res.render('process-payment', {
      'title': 'Payment Failure',
      'result': "Payment Failed (see console for error output)"
    });
  });

});

Соответствующая документация:

...