"Transaction not found" 在使用 Bambora 捕获支付交易时
"Transaction not found" when Capturing payment transaction with 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
值似乎不准确。
我离我们的代码中的问题还远着呢。在 Bambora 支持和@Evelijn 的帮助下,问题得到了解决。
当从客户端向服务器发送 txnid
时,验证确保该值仅包含数字。我错过的是它也将其更改为数字类型。
txnid
是一个18位的字符串,javascript可以处理最多17位的数字。当 txnid
更改为数字时,最后一位将四舍五入为 0。
所以 123456789012345678
会变成 123456789012345680
。
当我将验证更改为不将 txnid
转换为数字时,一切正常。
我正在实施来自 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
值似乎不准确。
我离我们的代码中的问题还远着呢。在 Bambora 支持和@Evelijn 的帮助下,问题得到了解决。
当从客户端向服务器发送 txnid
时,验证确保该值仅包含数字。我错过的是它也将其更改为数字类型。
txnid
是一个18位的字符串,javascript可以处理最多17位的数字。当 txnid
更改为数字时,最后一位将四舍五入为 0。
所以 123456789012345678
会变成 123456789012345680
。
当我将验证更改为不将 txnid
转换为数字时,一切正常。