【发布时间】:2018-01-18 07:14:24
【问题描述】:
我尝试将 PayPal PLUS API 集成到我的 NativeScript 移动应用程序中。在创建付款(调用此 API:https://developer.paypal.com/docs/api/payments/#create_payment)并在侧面显示缩短的调用时,我不断收到 500 错误。可悲的是,我没有找到如何显示它的信息。
我正在通过 NativeScript 在 iOS 模拟器 (Xcode 7) 上运行我的代码。
我尝试了以下 curl-call,它对我有用:
我对 curl 的尝试:
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-Created 响应。
现在我在 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-Object 的错误消息吗?或者也许有人甚至看到我的代码可能有什么问题。如果您需要有效的 API 调用(通过 XHR):
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
【问题讨论】:
标签: javascript typescript curl paypal xmlhttprequest