gpt4 book ai didi

rest - PayPal 智能支付按钮与服务器端 REST API 的集成

转载 作者:行者123 更新时间:2023-12-03 16:21:36 25 4
gpt4 key购买 nike

我知道有一些关于 PayPal 集成的问题,但我正在尝试使用智能按钮和 REST API 实现 PayPal 快速结账,但没有成功。

我想做的是:

  • 创建付款授权(使用 payidorderid)
  • 发送此 payid到客户端 (javascript) 获得批准。
  • 付款后重定向到确认页面。

  • 我已经使用以下代码创建了付款授权:
    <?php

    // 1. Autoload the SDK Package. This will include all the files and classes to your autoloader
    // Used for composer based installation
    require __DIR__ . '/PayPal-PHP-SDK/autoload.php';
    // Use below for direct download installation
    // require __DIR__ . '/PayPal-PHP-SDK/autoload.php';


    // After Step 1
    $apiContext = new \PayPal\Rest\ApiContext(
    new \PayPal\Auth\OAuthTokenCredential(
    'client id', // ClientID
    'cliente secret' // ClientSecret
    )
    );

    // After Step 2
    $payer = new \PayPal\Api\Payer();
    $payer->setPaymentMethod('paypal');

    $amount = new \PayPal\Api\Amount();
    $amount->setTotal('1.00');
    $amount->setCurrency('USD');

    $transaction = new \PayPal\Api\Transaction();
    $transaction->setAmount($amount);

    $redirectUrls = new \PayPal\Api\RedirectUrls();
    $redirectUrls->setReturnUrl("https://example.com/your_redirect_url.html")
    ->setCancelUrl("https://example.com/your_cancel_url.html");

    $payment = new \PayPal\Api\Payment();
    $payment->setIntent('sale')
    ->setPayer($payer)
    ->setTransactions(array($transaction))
    ->setRedirectUrls($redirectUrls);


    // After Step 3
    try {
    $payment->create($apiContext);
    echo $payment;

    echo "\n\nRedirect user to approval_url: " . $payment->getApprovalLink() . "\n";
    echo $data= json_encode($payment->id, JSON_PRETTY_PRINT), "\n";
    echo "</br>";echo "</br>";
    echo $data= $payment->id;
    }
    catch (\PayPal\Exception\PayPalConnectionException $ex) {
    // This will print the detailed information on the exception.
    //REALLY HELPFUL FOR DEBUGGING
    echo json_encode($ex->getData()->id, JSON_PRETTY_PRINT), "\n";
    echo "</br>";echo "</br>";
    echo $ex->getData()->id;
    }
    ?>

    我的设置如下(如有错误请指正):
  • 用户选择项目并提交表单。
  • 用户被重定向到一个带有新表单的新页面,然后在表单中填写他的姓名和其他个人信息,然后提交表单以保存在数据库中并生成支付授权。
  • 用户应被重定向到带有智能按钮的最终页面以完成付款。
  • 用户应该被重定向到一个确认页面,确认他的付款已成功完成。

  • 问题是我被困在第 2 步,因为一旦我生成了付款授权,我不知道如何将这个 id(和其他必需的参数)传递给客户端,在这个应该显示的新页面中智能支付按钮完成交易。

    我正在按照 PayPal 文档中的教程进行操作,但我无法理解。

    JavaScript 调用我的服务器以获取 payid ,它可以工作,但会生成一个新的 payid和一个新的付款订单,我想使用以前在用户提交表单时创建的订单,然后以某种方式将其传递到带有智能按钮的最终页面以完成交易并重定向到确认页面。

    我的Javascript:
    <script>
    paypal.Button.render({
    onApprove: function(data) {
    return fetch('/my-server/get-paypal-transaction', {
    headers: {
    'content-type': 'application/json'
    },
    body: JSON.stringify({
    orderID: data.orderID
    })
    }).then(function(res) {
    return res.json();
    }).then(function(details) {
    alert('Transaction approved by ' + details.payer_given_name);

    }, '#paypal-button');
    </script>

    问题是它生成了一个新的 orderID ,一个新的事务,我想检索用户在步骤 2 中提交表单时生成的事务,但我不知道我应该做什么。

    最终我需要的是:
  • 获取付款授权并将其传递给客户(带有按钮的最后一页)
  • 付款完成后重定向用户。
  • 最佳答案

    您正在寻找这个前端:https://developer.paypal.com/demo/checkout/#/pattern/server

    对于您的后端,您应该使用最新的 v2/orders SDK:https://github.com/paypal/Checkout-PHP-SDK

    (您的 v1/payments 后端可以工作,但该 SDK 已弃用,没有理由将其用于新的集成)

    关于rest - PayPal 智能支付按钮与服务器端 REST API 的集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61370190/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com