Square Payment API-较小面额的问题

时间:2018-11-13 09:57:56

标签: node.js square

我正在使用Square Payment API,我在文档中找不到相同的内容,

假设我要收取52.50加元。

众所周知,它不允许十进制数(我正在使用Node.js SDK v2)。

当我浏览文档时,它说金额必须是较小的面额。

我想知道,我有自己的自定义表格,当从付款表格(生成卡现时数)或仅在API端,或两者同时通过时,我需要以较小面额的金额传递金额。

我要向用户索要没有较小面额的金额,即(52.50 CAD),如何在SDK和前端中传递金额。

1 个答案:

答案 0 :(得分:1)

像美元(USD)一样,加拿大元(CAD)的最小面额是美分。

您的自定义/前端表单可以选择以美元显示金额,但API调用必须使用最小面额。

正如您在下面的示例代码中看到的那样,现时取自付款表单,并且对收费金额进行了硬编码。如果要从表格中收取费用,则需要进行清理,将其转换为美分(如果以美元为单位),并确保货币ID正确。

示例代码

来源:Payment processing example: Node 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)"
    });
  });

});

相关文档: