[英]PayPal Orders V2 payee object in Checkout-PHP-SDK fails with amount error
[英]How to execute a payment with paypal/checkout-php-sdk?
我正在使用paypal/checkout-php-sdk ,但在創建訂單后不知所措。
我可以成功創建訂單:
/**
* @Route("/create-order", name="create_order")
*/
public function createOrder(Paypal $paypal)
{
// Construct a request object and set desired parameters
// Here, OrdersCreateRequest() creates a POST request to /v2/checkout/orders
$request = new OrdersCreateRequest();
$request->prefer('return=representation');
$request->body = [
"intent" => "CAPTURE",
"purchase_units" => [[
"reference_id" => "test_ref_id1",
"amount" => [
"value" => "100.00",
"currency_code" => "USD"
]
]],
"application_context" => [
"cancel_url" => "https://google.com/",
"return_url" => "http://127.0.0.1:8000/execute-order"
]
];
try {
// Call API with your client and get a response for your call
$response = $paypal->client->execute($request);
$approuveLink = array_values( array_filter(
$response->result->links,
function ($e) {
return $e->rel == "approve";
}
))[0]->href;
return $this->redirect($approuveLink);
}catch (HttpException $ex) {
echo $ex->statusCode;
return new Response($ex->getMessage());
}
}
正如你看到的,我把return_url放在“/execute-order”中,
因此,貝寶在經過身份驗證后將我重定向到此網址:
/execute-order?token=0NH30171UR363613S&PayerID=SNVZ4E6KDYA54
但我不知道接下來要做什么。 我必須執行付款,但在包的示例中,我發現只有 createOrder 和 captureOrder 但沒有 executeOrder
/**
* @Route("/execute-order", name="order_execute")
*/
public function executeOrder(Request $request)
{
echo $request->query->get('PayerID')." / ". $request->query->get('token');
// WHAT TO PUT HERE ?
}
對於v2/checkout/orders
集成,“捕獲”是最終操作。
它類似於已棄用的v1/payments
的“執行”操作,這似乎就是您期望使用這種措辭的原因。
v2 中沒有“執行”。
為獲得最佳結果,請勿重定向到 PayPal 批准頁面並返回 return_url。 不要使用任何重定向。 相反,請使用此審批流程: https : //developer.paypal.com/demo/checkout/#/pattern/server——這是一種現代的“上下文”體驗,可讓您的網站在后台加載。 這是一種改進的買家體驗,可以提供更好的結果,增加轉化率等
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.