Моя цель, похоже, похожа на этот вопрос, опубликованный ранее как одобрить идентификатор заказа
Я реализовал конечную точку отдыха для завершения оплаты заказа без использования ссылки перенаправления и создания смарт-кнопок по умолчанию.
Я использую среду песочницы и SDK версии 2 на стороне сервера PayPal
Итак, я создал заказ с помощью API OrdersCreateRequest (), после чего я получаю идентификатор заказа.
{
"id": "xxxxxxxxxxxxxxxx",
"status": "CREATED",
"links": [
{
"href": "https://api.sandbox.paypal.com/v2/checkout/orders/0XY49131JG183432Y",
"rel": "self",
"method": "GET"
},
{
"href": "https://www.sandbox.paypal.com/checkoutnow?token=0XY49131JG183432Y",
"rel": "approve",
"method": "GET"
},
{
"href": "https://api.sandbox.paypal.com/v2/checkout/orders/0XY49131JG183432Y",
"rel": "update",
"method": "PATCH"
},
{
"href": "https://api.sandbox.paypal.com/v2/checkout/orders/0XY49131JG183432Y/capture",
"rel": "capture",
"method": "POST"
}
]
}
Я следовал в точности официальному примеру в документации, но не могу авторизовать заказ
@PostMapping( "payWorkerWithPaypal/{paypalWorkerEmail}/{totalAmount}")
public Order payWorkerWithPaypal(@PathVariable("paypalWorkerEmail") String
paypalWorkerEmail,@PathVariable("totalAmount") String totalAmount) throws IOException {
Order order = null;
PayPalHttpClient client = new PayPalHttpClient(environment);
OrderRequest orderRequest = new OrderRequest();
orderRequest.checkoutPaymentIntent("CAPTURE");
List<PurchaseUnitRequest> purchaseUnitRequests = new ArrayList<PurchaseUnitRequest>();
PurchaseUnitRequest purchaseUnitRequest = new PurchaseUnitRequest();
purchaseUnitRequest.amountWithBreakdown(new
AmountWithBreakdown().currencyCode("USD").value(totalAmount));
Payee payee = new Payee();
payee.email(paypalWorkerEmail);
purchaseUnitRequest.payee(payee);
Payer payer = new Payer();
payer.email("[email protected]");
purchaseUnitRequests.add(purchaseUnitRequest);
orderRequest.purchaseUnits(purchaseUnitRequests);
orderRequest.payer(payer);
OrdersCreateRequest requestCreateOrder = new OrdersCreateRequest().requestBody(orderRequest);
try {
HttpResponse<Order> responseOrderCreated = client.execute(requestCreateOrder);
order = responseOrderCreated.result();
System.out.println("Order ID: " + order.id());
OrdersAuthorizeRequest requestAuthorizeRequest = new OrdersAuthorizeRequest(order.id());
HttpResponse<Order> responseAuthorizeOrder = client.execute(requestAuthorizeRequest);
order = responseAuthorizeOrder.result();
OrdersCaptureRequest requestCaptureOrder = new OrdersCaptureRequest(order.id());
HttpResponse<Order> responseCaptureOrder = client.execute(requestCaptureOrder);
order = responseCaptureOrder.result();
} catch (IOException ioe) { System.out.println(ioe.getMessage()); } return order;
}
и я получаю объект ответа с описанием
Плательщик еще не одобрил Распоряжение к оплате.
Как мне подтвердить заказ напрямую с помощью моего метода?