我嘗試將PayPal PLUS API集成到我的NativeScript移動應用程序中。當創建付款(調用此API:https://developer.paypal.com/docs/api/payments/#create_payment)與側面顯示的縮短呼叫時,我不斷收到500錯誤。可悲的是我沒有找到如何顯示它的消息。PayPal REST API嘗試創建付款對象時返回500錯誤
我通過NativeScript在iOS模擬器(Xcode 7)上運行我的代碼。
我嘗試以下捲曲調用,這工作對我來說:
我試着用捲曲什麼:
curl -v -X POST https://api.sandbox.paypal.com/v1/payments/payment \
-H "Content-Type:application/json" \
-H "Authorization: Bearer <my-token>„ \
-d '{
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"transactions": [
{
"amount": {
"total": "30.11",
"currency": "EUR",
"details": {
"subtotal": "30.00",
"tax": "0.07",
"shipping": "0.03",
"handling_fee": "1.00",
"shipping_discount": "-1.00",
"insurance": "0.01"
}
},
"item_list": {
"items": [
{
"name": "hat",
"description": "Brown hat.",
"quantity": "5",
"price": "3",
"tax": "0.01",
"sku": "1",
"currency": "EUR"
},
{
"name": "handbag",
"description": "Black handbag.",
"quantity": "1",
"price": "15",
"tax": "0.02",
"sku": "product34",
"currency": "EUR"
}
]}
}
],
"redirect_urls": {
"return_url": "http://www.paypal.com/return",
"cancel_url": "http://www.paypal.com/cancel"
}
}'
響應一個201創建的響應。
現在我創建了一個帶有相同元素的TypeScript中的XHR對象。我的代碼到目前爲止:
var oReq = new XMLHttpRequest();
oReq.open("POST", PayPalEndpoints.getPaymentEndpoint, true);
oReq.setRequestHeader('Authorization', "Bearer " + access_token);
oReq.setRequestHeader('Accept', "application/json");
oReq.onreadystatechange = function() {
console.log("state changed - new state: " + oReq.readyState + " and Status: " + oReq.status);
if (oReq.readyState === 4) {
if (oReq.status === 200) {
var response = JSON.parse(oReq.responseText);
console.log("response = " + response);
} else {
console.log("Error: " + oReq.status + " Message: " + oReq.responseText);
}
}
};
oReq.send({
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"transactions": [
{
"amount": {
"total": "30.11",
"currency": "EUR",
"details": {
"subtotal": "30.00",
"tax": "0.07",
"shipping": "0.03",
"handling_fee": "1.00",
"shipping_discount": "-1.00",
"insurance": "0.01"
}
},
"item_list": {
"items": [
{
"name": "hat",
"description": "Brown hat.",
"quantity": "5",
"price": "3",
"tax": "0.01",
"sku": "1",
"currency": "EUR"
},
{
"name": "handbag",
"description": "Black handbag.",
"quantity": "1",
"price": "15",
"tax": "0.02",
"sku": "product34",
"currency": "EUR"
}
]
}
}
],
"redirect_urls": {
"return_url":"http://www.paypal.com/return",
"cancel_url":"http://www.paypal.com/cancel"
}
});
這是(如上所述)不適合我。有人知道,如何顯示來自該XHR對象的錯誤信息?或者,甚至有人甚至可以看到我的代碼可能有什麼問題。如果你需要的工作(通過XHR)API調用:
var oReq = new XMLHttpRequest();
var encodedString = base64.encode(this.authorizationBasic);
oReq.open("POST", "https://api.sandbox.paypal.com/v1/oauth2/token", false);
oReq.setRequestHeader('Authorization', "Basic " + encodedString);
oReq.setRequestHeader('Content-type', "application/x-www-form-urlencoded");
oReq.setRequestHeader('Accept', "application/json");
oReq.setRequestHeader('Accept-Language', "en_US");
oReq.onreadystatechange = function() {
console.log("state changed - new state: " + oReq.readyState + " and Status: " + oReq.status);
if (oReq.readyState === 4) {
if (oReq.status === 200) {
var response = JSON.parse(oReq.responseText);
OAuthAccessor.access_token = response.access_token;
console.log("access_token set");
} else {
console.log("Error: " + oReq.status + " Message: " + oReq.responseText);
}
}
};
oReq.send('grant_type=client_credentials');
API參考:
集成PDF: https://www.paypalobjects.com/webstatic/de_DE/downloads/PayPal-PLUS-IntegrationGuide.pdf
呼叫參考: https://developer.paypal.com/docs/integration/direct/make-your-first-call/
我縮短呼叫: https://developer.paypal.com/docs/api/payments/#create_payment