我正在实现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
的值似乎不正确。
答案 0 :(得分:0)
我离问题出在我们代码中的地方很远。在Bambora支持和@Evelijn的正确指导下,问题得以解决。
当从客户端向服务器发送txnid
时,验证将确保该值仅包含数字。我错过的是它也将其更改为数字类型。
txnid
是由18位数字组成的字符串,javascript可处理的数字最大为17位数字。将txnid
更改为数字后,最后一位将四舍五入为0。
因此123456789012345678
将变成123456789012345680
。
当我更改验证时不将txnid
强制转换为数字时,一切正常。