【发布时间】:2017-05-12 07:58:17
【问题描述】:
我正在尝试使用他们的 checkout.js 和此处提供的说明集成 PayPal Express Checkout:https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/advanced-integration/
每当我单击“PayPal”按钮时,我都会收到来自 checkout.js 脚本的未定义的 indexOf 错误。我确实很快得到了模态弹出窗口,然后消失了。
TypeError: Cannot read property 'indexOf' of undefined
at Object.onSuccess (https://www.paypalobjects.com/api/checkout.js:11449:30)
at _loop2 (https://www.paypalobjects.com/api/checkout.js:1670:62)
at SyncPromise.dispatch (https://www.paypalobjects.com/api/checkout.js:1700:29)
at SyncPromise.then (https://www.paypalobjects.com/api/checkout.js:1718:18)
at Component.buildUrl (https://www.paypalobjects.com/api/checkout.js:11448:40)
at Object.onSuccess (https://www.paypalobjects.com/api/checkout.js:8770:57)
at _loop2 (https://www.paypalobjects.com/api/checkout.js:1670:62)
at SyncPromise.dispatch (https://www.paypalobjects.com/api/checkout.js:1700:29)
at SyncPromise.then (https://www.paypalobjects.com/api/checkout.js:1718:18)
at Function.syncPromiseTry [as try] (https://www.paypalobjects.com/api/checkout.js:1763:42)"
它引用的行在 checkout.js 中:
return props.payment().then(function(token) {
if (token.indexOf("BA-") === 0) {
我使用的代码直接来自 PayPal 的文档:
paypal.Button.render({
env: 'sandbox', // Specify 'sandbox' for the test environment
payment: function() {
var CREATE_PAYMENT_URL = '/api/checkout/create-express-payment';
paypal.request.post(CREATE_PAYMENT_URL)
.then(function(data) {
console.log('Payment ID: ', data.paymentId);
resolve(data.paymentId);
})
.catch(function(err) {
reject(err);
});
},
onAuthorize: function(data, actions) {
// Execute the payment here, when the buyer approves the transaction
}
}, '#paypal-button');
我可以确认 data.paymentId 实际上返回了正确的付款 ID,我什至尝试将其硬编码到 resolve 调用中。这个错误似乎发生在我的内部 API 甚至被调用以获取付款 ID 之前(然后在它被调用之后再次发生)。
一周以来,我一直在尝试联系 PayPal 技术支持,但在多次请求后,我什至没有收到确认。此外,我无法在 Heroku 上测试 REST API,因为它们的沙箱需要 30 多秒才能响应并且 Heroku 会超时。这将是我最后一次在项目中使用 PayPal……按照这个速度,我似乎需要尽快改变这个项目。
【问题讨论】:
标签: javascript paypal-sandbox paypal