使用Bambora进行支付交易捕获时出现“未找到交易”错误。

5
我正在实现Bambora的内联结账功能,授权步骤没有任何问题。但是在进行支付捕获时,我总是遇到错误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);

据我所理解,根据文档,我已经按照要求操作,但是无法正常运行。
在查看了用PHP实现的Bambora官方实现后,我认为我的代码没有问题。
在查看特定订单的报告仪表板时,URL与我在数据库中保存的ID不匹配。 在授权事件的“Inline Checkout”上返回的“txnid”的值似乎不准确。

如果您将授权标头键用引号括起来会怎样? - Evelijn
@Evelijn,其他请求的授权是有效的。看起来这是 Bambora 的一个 bug,而不是我的代码有错。 - pstenstrm
你能把你的事件处理程序粘贴到帖子里吗? - Evelijn
1个回答

0

我们的代码存在问题,我离正确答案相差甚远。在Bambora支持和@Evelijn的帮助下,问题得以解决。

当客户端向服务器发送txnid时,验证确保该值仅包含数字。我忽略了它还将其更改为数字类型。

txnid是一个18位数字的字符串,JavaScript可以处理最多17位数字的数字。当txnid被更改为数字时,最后一位数字将四舍五入为0。

因此,123456789012345678将变成123456789012345680

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接