2016-04-24 61 views
0

我正在嘗試學習貝寶付款。我做了一個使用Paypal-Express-Checkout的簡單的AngularJS應用程序。正如它在文檔中所說的,首先我必須執行SetExpressCheckout調用。貝寶訪問控制允許來源

$http.post("https://api-3t.sandbox.paypal.com/nvp", request) 
.success(function(data){ 
    console.log(data); 
}).error(function(error){ 
    console.log(error); 
}); 

在對象request中有所有付款細節。 但是當我運行腳本時,http調用的結果是:XMLHttpRequest cannot load https://api-3t.sandbox.paypal.com/nvp. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. 我試圖搜索這個錯誤,但是我什麼也沒找到。我該如何解決?

UPDATE:如果請求來自一個形式不給我任何錯誤,但如果它來自http.post發揮它給我一個錯誤

回答

1

你必須在後端執行您的PayPal交易,並您看到的消息是Paypal強制執行該概念。有關更多信息,請參閱this article on CORS

您的角度http調用應該將基本事務信息發送到您的服務器,然後它將構建一個針對PayPal的API請求,處理來自Paypal的響應,然後傳遞該信息供客戶端使用。

[編輯以添加關於CORS的詳細信息]

+0

在該[照片](https://www.paypalobjects.com/webstatic/en_US/developer/docs/ec/overview-ec-ecapiflow.gif)總結了快速結賬模式。在第一階段,我必須調用SetExpressCheckout API。我認爲無論是來自客戶端還是服務器的電話 – Lorenzo

+0

@Lorenzo I都支持我所說的話並不重要。以下是此API功能的文檔:https://developer.paypal.com/webapps/developer/docs/classic/express-checkout/integration-guide/ECGettingStarted/#id084RN060BPF – DeeDee

+0

那麼,爲什麼如果我用表單I調用地址不要給出任何錯誤?我不明白。 @DeeDee – Lorenzo