必需参数 $path 遵循可选参数 $handlers paypal sdk [重复]

Posted

技术标签:

【中文标题】必需参数 $path 遵循可选参数 $handlers paypal sdk [重复]【英文标题】:Required parameter $path follows optional parameter $handlers paypal sdk [duplicate] 【发布时间】:2021-06-09 02:05:08 【问题描述】:

在这个问题上我真的需要你的帮助,因为我不明白如何解决它或从哪里开始寻找答案。事情是这样的:

我正在尝试使用 php 8 将 paypal 集成到 Laravel 8。我正在使用的包是 paypal/rest-api-sdk-php v1。我知道这已被弃用,但我还没有找到任何其他解决方案来使用 v2。

好吧,每当我尝试使用 $payment->create($this->api_context) 方法创建付款时 - 顺便说一下,您可以查看我从下面获得这些示例的操作指南 - 过程给我一个错误,说以下内容

ErrorException Required parameter $path follows optional parameter $handlers

我知道这是因为在必需参数之前调用了可选参数。但老实说,我已经为此工作了好几个星期,但我仍然无法弄清楚。

这里有一些证据: 错误屏幕:

类 PagoController(所有魔法开始失效的地方)

class PagoController extends Controller

私有 $api_context;

public function __construct()

    $paypal_config = Config::get('paypal');

    $this->api_context = new ApiContext(
        new OAuthTokenCredential(
            $paypal_config['client_id'],
            $paypal_config['secret']
        )
    );

    $this->api_context->setConfig($paypal_config['settings']);

    //dd($this->api_context);


public function pagarConPaypal(Request $request, $id_conciliacion)

    //Obtener valores de la conciliación
    $registro_pago = Conciliacion::where('id_conciliacion', '=', $id_conciliacion)->first();
    //dd($registro_pago);

//--Crea un nuevo pago

    $payer = new Payer();
    $payer->setPaymentMethod('paypal');

    $amount = new Amount();
    $amount->setTotal($registro_pago->monto);
    $amount->setCurrency('MXN');

    $transaction = new Transaction();
    $transaction->setAmount($amount);
    $transaction->setDescription($registro_pago->concepto);

    $callbackURL = url('/paypal/estado');
    $redirectUrls = new RedirectUrls();
    $redirectUrls->setReturnUrl($callbackURL)
        ->setCancelUrl($callbackURL);

    $payment = new Payment();
    $payment->setIntent('Sale')
        ->setPayer($payer)
        ->setTransactions(array($transaction))
        ->setRedirectUrls($redirectUrls);

    //dd($payment);

//--Aplica el pago creado
    try 
        $payment->create($this->api_context, null);
        // echo $payment;
        return redirect()->away($payment->getApprovalLink());
    
    catch (PayPalConnectionException $ex) 
        // This will print the detailed information on the exception.
        //REALLY HELPFUL FOR DEBUGGING
        echo $ex->getData();
    

任何帮助将不胜感激。提前致谢

【问题讨论】:

“我使用的软件包是 paypal/rest-api-sdk-php v1。我知道这已被弃用,但我还没有找到任何其他解决方案来使用 v2。”唔?使用当前的 Checkout-PHP-SDK。您正在做的事情已被弃用并且没有支持。 当我只想让用户重定向到贝宝付款时安装它可以吗?我希望用户单击一个按钮进行支付,将他们重定向到贝宝以授权付款并自己执行付款......只是问,因为这是我第一次使用贝宝 for laravel 【参考方案1】:

不要使用已弃用的 SDK,没有对它的支持。

理想情况下,您也不应该对旧网站使用任何重定向,因为这是一种旧的集成方法。

这是最好的方法:

使用 Checkout-PHP-SDK 在您的服务器上创建两条路由:一条用于“创建订单”,一条用于“捕获订单”documented here。这些路由在访问时应该只返回/输出 JSON 数据(没有其他 html 或文本) 将您的两条路线与调用它们的以下批准流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server

【讨论】:

非常感谢。我已经处理这个问题好几个星期了!!!我认为这是因为我使用的是 PHP 8 并且他们已经重构了那部分

以上是关于必需参数 $path 遵循可选参数 $handlers paypal sdk [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Dart 知识点:可选参数必需参数

Powershell 非位置,可选参数

Argparse:“可选参数”下列出的必需参数?

argparse 必需参数列表与可选参数列表竞争

Python - 必需参数之前的可选参数

必需参数 $xxx 跟在可选参数 $yyy 之后