【问题标题】:"Transaction not found" when Capturing payment transaction with Bambora使用 Bambora 捕获付款交易时出现“找不到交易”
【发布时间】:2018-12-13 19:55:04
【问题描述】:

我正在实施来自 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 的值似乎不准确。

【问题讨论】:

  • 如果将 Authorization 标头键放在引号中会怎样?
  • @Evelijn 身份验证适用于其他请求。看起来这是 Bambora 的一个错误,我的代码没有问题。
  • 你能把你的事件处理程序粘贴到帖子中吗?

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


【解决方案1】:

我发现问题出在我们的代码中。在 Bambora 支持和@Evelijn 的帮助下,问题得到了解决。

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

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

所以123456789012345678 会变成123456789012345680

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

【讨论】:

    猜你喜欢
    • 2016-10-07
    • 2011-08-24
    • 2014-04-12
    • 2015-09-21
    • 2012-06-18
    • 2016-10-12
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多