我正在努力使用Orders v2 PayPal应用编程接口创建订单。
我有令牌,并且我用这些头创建了一个请求来创建订单:
{
"intent": "CAPTURE",
"purchase_units": [{
"description": "Payment",
"amount": {
"value": 'X',
"currency_code": "EUR",
"breakdown": {
"item_total": {
"currency_code": "EUR",
"value": 'X'
},
}
},
"items": [{
"unit_amount": {
"currency_code": "EUR",
"value": 'X'
},
"quantity": "1",
"name": 'item name',
}]
}],
"application_context": {
"brand_name": "My brand name",
"locale": "it-IT",
"return_url": 'my-return-url',
}
}订单创建完成后,我将获得让用户付款的approveurl。
对于approveurl,我执行以下调用:
try {
var response = await http.post(approveurl, body: jsonEncode({"payer_id": payerId}), headers: {
"content-type": "application/json",
'Authorization': 'Bearer ' + accessToken
});
final body = jsonDecode(response.body);
if (response.statusCode == 200) {
return body;
}
return null;
} catch (e) {
rethrow;
}但我得到的回应是:
url = "https://www.sandbox.paypal.com/checkoutnow?token=..."
payerId = "..."
accessToken = "..."
response = {Response}
request = {Request} POST https://www.sandbox.paypal.com/checkoutnow?token=...
statusCode = 302
reasonPhrase = "Found"
contentLength = 61
headers = {_InternalLinkedHashMap} size = 9
0 = {map entry} "paypal-debug-id" -> "95934918777a1"
1 = {map entry} "cache-control" -> "max-age=0, no-cache, no-store, must-revalidate"
2 = {map entry} "location" -> "/webapps/hermes?token=..."
3 = {map entry} "set-cookie" -> "X-PP-SILOVER=name%3DSANDBOX3.WEB.1%26silo_version%3D880%26app%3Dhermesnodeweb%26TIME%3D1595167415%26..."
4 = {map entry} "date" -> "Sun, 19 Jul 2020 14:03:35 GMT"
5 = {map entry} "vary" -> "Accept"
6 = {map entry} "strict-transport-security" -> "max-age=63072000"
7 = {map entry} "content-length" -> "61"
8 = {map entry} "content-type" -> "text/plain; charset=utf-8"
isRedirect = false
persistentConnection = trueresponse.body是:
Found. Redirecting to /webapps/hermes?token=...发布于 2020-07-19 22:50:29
使用approvalurl的
我执行此调用:
审批URL不是供您调用的。这是一个web URL,而不是API URL。这是由付费客户登录并批准付款。
然而,将它们重定向到它将是一个糟糕的网络体验。对于现代网页设计,你应该提供一个“在上下文中”的批准,让你的网站保持在后台加载。下面是如何做到这一点的:https://developer.paypal.com/demo/checkout/#/pattern/server
通过这种集成,您不需要自己读取approval_url,只需在从createOrder获取时返回订单id。
https://stackoverflow.com/questions/62981710
复制相似问题