如何解决如何使用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 -这是一种现代的“上下文”体验,可让您的网站保持在后台。这是一种改进的买家体验,可以带来更好的结果,更多的转化等
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。