1

我正在使用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”,

因此,经过身份验证后,PayPal 会将我重定向到此网址:

/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 ?
}
4

1 回答 1

1

对于v2/checkout/orders集成,“捕获”是最终操作。

它类似于 deprecated 中的“执行”操作v1/payments,这似乎就是为什么您期望使用这种措辞的原因。

v2 中没有“执行”。


为获得最佳结果,请勿重定向到 PayPal 批准页面并返回到 return_url。不要使用任何重定向。相反,请使用以下批准流程:https ://developer.paypal.com/demo/checkout/#/pattern/server——这是一种现代的“上下文”体验,可让您的网站在后台加载。这是一种改进的买家体验,可以提供更好的结果、更高的转化率等

于 2020-09-13T00:06:46.687 回答