Braintree 沙盒上的突然失败请求 API:'Billing state format is invalid'
Sudden Failure Requests on Braintree Sandbox API: 'Billing state format is invalid'
我们是 运行 一家连接到 Braintree 的英国 Magento 商店。几个月来一切都运行顺利,然后突然之间,我们无法再在连接到 Braintree Sandbox 的任何暂存或本地测试环境中完成订单。
结帐时,向 3d 安全端点发出请求,如果我们输入的是英国县,我们会收到以下响应:
请求结算部分:
"additionalInfo": {
"billingCity": "Leeds",
"billingCountryCode": "GB",
"billingGivenName": "John",
"billingLine1": "50 Upton Road",
"billingPhoneNumber": "07733222111",
"billingPostalCode": "LE6 7TH",
"billingState": "Yorkshire",
"billingSurname": "Smith"
},
响应:
{
"error": {
"message": "Billing state format is invalid."
},
"threeDSecureInfo": {
"liabilityShiftPossible": false,
"liabilityShifted": false
}
}
如果我们从结帐中删除县字段(并最终从请求中删除'billingSate),则响应有效并且我们能够正常结帐。
- 最近才开始发生这种情况
- 相同的代码库在生产 Braintree 上运行良好
- 我在生产环境中用完全相同的参数模拟了一个请求,它工作正常
- 向 Braintree 提交了票但没有回应
- 如果我在县字段中使用两位数的美国州代码,我就可以结帐
有人有什么想法吗?
今天我在 Braintree 中遇到了 3DSecure 的同样问题。
首先,我确保我使用的是最新版本的插件、客户端和数据收集器脚本(在撰写此回复时)是:
<script src="https://js.braintreegateway.com/web/3.71.0/js/client.min.js"></script>
<script src="https://js.braintreegateway.com/web/3.71.0/js/data-collector.min.js"></script>
<script src="https://js.braintreegateway.com/web/dropin/1.25.0/js/dropin.min.js"></script>
然后我 modified/renamed 两个“threeDSecure”属性“locality”->“city”和“region”->“state”
dropin.requestPaymentMethod({
threeDSecure: {
amount: '10.01',
email: 'me@mydomain.com',
billingAddress: {
givenName: 'John',
surname: 'Smith',
streetAddress: '51 East Street,
extendedAddress: 'na',
city: 'Colchester',
state: 'Essex',
postalCode: 'CO1 2QY',
countryCodeAlpha2: 'GB'
}
}
}, function (err, payload) {
if (err) {
console.log('tokenization error:');
dropin.clearSelectedPaymentMethod();
return;
}
if (!payload.liabilityShifted) {
console.log('Liability did not shift');
return;
}
console.log('verification success');
console.log(payload.nonce);
});
我希望这对你有所帮助,因为它在沙盒环境中对我来说工作得很好。
关于这个问题,我终于从 Braintree 那里得到了答复。显然 3ds2 现在在 Sandbox 上强制执行,这需要将州或县作为两位数代码发送。
在生产中,如果发送全名,它将(当前)优雅地降级为 3ds1 并完成。
为了促使人们使用 3ds2,Sandbox 没有切换到 3ds1 并且 returns 错误。
我们是 运行 一家连接到 Braintree 的英国 Magento 商店。几个月来一切都运行顺利,然后突然之间,我们无法再在连接到 Braintree Sandbox 的任何暂存或本地测试环境中完成订单。
结帐时,向 3d 安全端点发出请求,如果我们输入的是英国县,我们会收到以下响应:
请求结算部分:
"additionalInfo": {
"billingCity": "Leeds",
"billingCountryCode": "GB",
"billingGivenName": "John",
"billingLine1": "50 Upton Road",
"billingPhoneNumber": "07733222111",
"billingPostalCode": "LE6 7TH",
"billingState": "Yorkshire",
"billingSurname": "Smith"
},
响应:
{
"error": {
"message": "Billing state format is invalid."
},
"threeDSecureInfo": {
"liabilityShiftPossible": false,
"liabilityShifted": false
}
}
如果我们从结帐中删除县字段(并最终从请求中删除'billingSate),则响应有效并且我们能够正常结帐。
- 最近才开始发生这种情况
- 相同的代码库在生产 Braintree 上运行良好
- 我在生产环境中用完全相同的参数模拟了一个请求,它工作正常
- 向 Braintree 提交了票但没有回应
- 如果我在县字段中使用两位数的美国州代码,我就可以结帐
有人有什么想法吗?
今天我在 Braintree 中遇到了 3DSecure 的同样问题。 首先,我确保我使用的是最新版本的插件、客户端和数据收集器脚本(在撰写此回复时)是:
<script src="https://js.braintreegateway.com/web/3.71.0/js/client.min.js"></script>
<script src="https://js.braintreegateway.com/web/3.71.0/js/data-collector.min.js"></script>
<script src="https://js.braintreegateway.com/web/dropin/1.25.0/js/dropin.min.js"></script>
然后我 modified/renamed 两个“threeDSecure”属性“locality”->“city”和“region”->“state”
dropin.requestPaymentMethod({
threeDSecure: {
amount: '10.01',
email: 'me@mydomain.com',
billingAddress: {
givenName: 'John',
surname: 'Smith',
streetAddress: '51 East Street,
extendedAddress: 'na',
city: 'Colchester',
state: 'Essex',
postalCode: 'CO1 2QY',
countryCodeAlpha2: 'GB'
}
}
}, function (err, payload) {
if (err) {
console.log('tokenization error:');
dropin.clearSelectedPaymentMethod();
return;
}
if (!payload.liabilityShifted) {
console.log('Liability did not shift');
return;
}
console.log('verification success');
console.log(payload.nonce);
});
我希望这对你有所帮助,因为它在沙盒环境中对我来说工作得很好。
关于这个问题,我终于从 Braintree 那里得到了答复。显然 3ds2 现在在 Sandbox 上强制执行,这需要将州或县作为两位数代码发送。
在生产中,如果发送全名,它将(当前)优雅地降级为 3ds1 并完成。
为了促使人们使用 3ds2,Sandbox 没有切换到 3ds1 并且 returns 错误。