当前位置: 首页 > 知识库问答 >
问题:

如何使用paypal/checkout php sdk执行付款?

拓拔俊德
2023-03-14

我正在使用贝宝/签出-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到“/执行命令”,

因此,PayPal在验证后将我重定向到此url:

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

共有1个答案

尚鸿才
2023-03-14

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

它类似于不推荐使用的v1/payments中的“execute”操作,这似乎就是您希望使用这种措辞的原因。

v2中没有“执行”。

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

 类似资料:
  • 如何使用 PHP 自动PayPal付款? 我有我的PayPal企业帐户的电子邮件,收件人的PayPal电子邮件和要转移的金额。有没有办法在没有我互动的情况下进行汇款?(付款来自我的帐户) 当然我会手动运行PHP脚本

  • 堆栈跟踪:#0/var/ww/html/paypal/vendor/paypal/paypalhttp/lib/paypalhttp/httpclient.php(100):paypalhttp\httpclient->parseresponse()#1/var/ww/html/paypal/vendor/paypal/paypal-payouts-sdk/lib/paypalpayoutssdk

  • 我尝试将基于PayPal classic API的旧快速结账流程迁移到新的RestAPI,但在新流程中出现了一个问题: 如何在创建付款后和使用PayPal restAPI执行付款前更改发货金额? 创建付款后的请求: 执行付款前的请求: PayPal在执行付款后回复:

  • 我正在尝试将Papal与我的SpringWeb服务集成。我指的是高级服务器集成,并使用此SDK创建支付示例。 这是我的客户端代码 这是我的网络服务 当我点击Paypal结账按钮时。它弹出Paypal登录屏幕,授权工作正常。之后,我尝试使用我的API执行付款。但是当我呼叫

  • 我已经成功地利用PayPal PHP SKD请求付款,将用户发送到PayPal支付网关沙箱,并提供凭据和沙箱买家帐户等。一切正常,我收到一个返回URL的请求,其中包含$_GetVariables success=true、paymentID、token和PayerID。我的问题是在下一步中,它捕获paymentID和PayRid,为PaymentExecution创建对象,它似乎工作正常,但在执行