我想在這裏使用提供了checkout.js和指令集成PayPal快速結賬未定義:https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/advanced-integration/PayPal快速Checkout.js - 上的indexOf內Checkout.js
每當我點擊「貝寶」按鈕,我從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之前(並且在它被調用後再次發生)。
我一直在嘗試達到一週的貝寶技術支持,甚至在很多請求後都沒有收到確認。此外,我無法在Heroku上測試REST API,因爲他們的沙箱需要超過30秒才能響應,Heroku超時。這將是我最後一次在項目中使用PayPal ......並且速度看起來像我需要儘快從這個項目改變。
不幸的是這實際上我如何已經得到它的設置。我看到的唯一區別是我返回'paymentId'而不是'paymentID'。但是,不是'resolve()'調用實際上是給付paymentId的嗎?你在本地開發嗎?試圖弄清楚這可能是一個問題,或者可能是一個沒有SSL的問題。最近我一直沒有遇到所有PayPal API的問題。 – Ryan
我的代碼使用http:// localhost,(no ssl)在本地運行,並調用Paypal沙箱環境。傳遞給解析方法的屬性應該與服務器端返回的內容匹配。 –
這實際上是我的問題。你已經解決了,謝謝。但我不得不嘲笑這個文檔寫得太差,真的。我從來沒有誤導過或像我一樣經常抓撓我的腦袋。 – Benji