捕获与Bambora的付款交易时,“找不到交易”

时间:2018-07-05 10:53:46

标签: javascript node.js payment-gateway ecmascript-7 bambora

我正在实现Bambora的Inline Checkout。授权步骤可以正常工作。但是当涉及到付款时,我总是会遇到错误Transaction not found

这就是我的工作

const options = {
    headers: { Authorization: `Basic ${ apiKey }` },
};
const { payload } = {
    amount
};
const { data } = await axios.post(`https://transaction-v1.api-eu.bambora.com/transactions/${ txnid }/capture`, payload, options);

我还尝试了包含transactionoperations的请求:

const options = {
    headers: { Authorization: `Basic ${ apiKey }` },
};
const { payload } = {
    amount,
    transactionoperations: [{ id: txnid }],
};
const { data } = await axios.post(`https://transaction-v1.api-eu.bambora.com/transactions/${ txnid }/capture`, payload, options);

尝试获取交易信息时出现相同的错误:

const options = {
    headers: { Authorization: `Basic ${ apiKey }` },
};
const { data } = await axios.get(`https://merchant-v1.api-eu.bambora.com/transactions/${ txnid }`, options);

据我了解,the documentation我所做的一切都正确,但是无法正常工作。

在PHP中查看了Bamboras own implementation之后,我的代码看不到任何问题。

在URL上查看报表仪表板中的特定顺序后,与我保存在数据库中的ID不匹配。内联结帐Authorize event返回的txnid的值似乎不正确。

1 个答案:

答案 0 :(得分:0)

我离问题出在我们代码中的地方很远。在Bambora支持和@Evelijn的正确指导下,问题得以解决。

当从客户端向服务器发送txnid时,验证将确保该值仅包含数字。我错过的是它也将其更改为数字类型。

txnid是由18位数字组成的字符串,javascript可处理的数字最大为17位数字。将txnid更改为数字后,最后一位将四舍五入为0。

因此123456789012345678将变成123456789012345680

当我更改验证时不将txnid强制转换为数字时,一切正常。