我正在使用Square Payment API,我在文档中找不到相同的内容,
假设我要收取52.50加元。
众所周知,它不允许十进制数(我正在使用Node.js SDK v2)。
当我浏览文档时,它说金额必须是较小的面额。
我想知道,我有自己的自定义表格,当从付款表格(生成卡现时数)或仅在API端,或两者同时通过时,我需要以较小面额的金额传递金额。
我要向用户索要没有较小面额的金额,即(52.50 CAD),如何在SDK和前端中传递金额。
答案 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)"
});
});
});