【问题标题】:Object of class Illuminate\Routing\Redirector could not be converted to string. srmklive/laravel-paypalIlluminate\Routing\Redirector 类的对象无法转换为字符串。 srmklive/laravel-paypal
【发布时间】:2019-11-12 19:18:41
【问题描述】:

我目前正在使用贝宝和https://github.com/srmklive/laravel-paypal 进行贝宝结账。我正在使用快速结帐,我对其进行了一些修改以适应我的项目的要求。在测试期间,它在几次尝试中工作,paypal show 和 payment 正确执行,但是当我尝试运行完全相同的代码时。我收到此错误,我不知道它是什么意思。

我尝试检查我的路线是否所有错误都发生在我的路线上,但所有错误都正常工作。我还尝试了像 dd("check") 一样转储和死,只是为了检查它是否真的进入我的控制器并且确实如此。我在“payCommission”方法中做到了这一点(我认为错误发生的地方)

这是我的控制器路线

api.php

Route::get('service/commissionfee/payment' , 'api\service\ExpressPaymentController@payCommission');

Route::get('paypal/ec-checkout-success', 'api\service\ExpressPaymentController@payCommissionSuccess');

ExpressPaymentController.php


<?php

namespace App\Http\Controllers\api\service;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Srmklive\PayPal\Services\ExpressCheckout;

class ExpressPaymentController extends Controller
{
    protected $provider;

    public function __construct()
    {
        try {
            $this->provider = new ExpressCheckout();
        }
        catch(\Exception $e){
            dd($e);
        }

    }


    public function payCommission(Request $request)
    {



            $recurring = false;
            $cart = $this->getCheckoutData($recurring);

            try {
                $response = $this->provider->setExpressCheckout($cart, $recurring);

                return redirect($response['paypal_link']);

            } catch (\Exception $e) {

                dd($e);
                return response()->json(['code' => 'danger', 'message' => "Error processing PayPal payment"]);
            }

    }

    public function payCommissionSuccess(Request $request)
    {

        $recurring = false;

        $token = $request->get('token');
        $PayerID = $request->get('PayerID');

        $cart = $this->getCheckoutData($recurring);

        // ? Verify Express Checkout Token
        $response = $this->provider->getExpressCheckoutDetails($token);

        if (in_array(strtoupper($response['ACK']), ['SUCCESS', 'SUCCESSWITHWARNING'])) {
            if ($recurring === true) {
                $response = $this->provider->createMonthlySubscription($response['TOKEN'], 9.99, $cart['subscription_desc']);
                if (!empty($response['PROFILESTATUS']) && in_array($response['PROFILESTATUS'], ['ActiveProfile', 'PendingProfile'])) {
                    $status = 'Processed';
                } else {
                    $status = 'Invalid';
                }
            } else {
                // ? Perform transaction on PayPal
                $payment_status = $this->provider->doExpressCheckoutPayment($cart, $token, $PayerID);
                $status = $payment_status['PAYMENTINFO_0_PAYMENTSTATUS'];
            }

            return response()->json(['success' => "payment complete"]);
        }
    }

    private function getCheckoutData($recurring = false)
    {
        $data = [];

        $order_id = 1;

            $data['items'] = [
                [
                    'name'  => 'Product 1',
                    'price' => 9.99,
                    'qty'   => 1,
                ],

            ];

            $data['return_url'] = url('api/paypal/ec-checkout-success');



        // ! 

        $data['invoice_id'] = config('paypal.invoice_prefix').'_'.$order_id;
        $data['invoice_description'] = "Commission Fee payment";
        $data['cancel_url'] = url('/');

        $total = 0;
        foreach ($data['items'] as $item) {
            $total += $item['price'] * $item['qty'];
        }

        $data['total'] = $total;

        return $data;
    }
}


我遇到的错误

Object of class Illuminate\Routing\Redirector could not be converted to string

提前谢谢你

【问题讨论】:

  • 修复错误,这是由于“getCheckoutData()”处的重复发票导致我一次又一次地传递同一张发票

标签: laravel paypal laravel-5.8


【解决方案1】:

你可以去 config/paypal.php 并编辑 'invoice_prefix' =&gt; env('PAYPAL_INVOICE_PREFIX', 'Life_saver_'), 你可以像 Life_saver_ 一样使用_下划线,不要忘记在最后使用下划线。

【讨论】:

    猜你喜欢
    • 2020-02-03
    • 2020-10-22
    • 2016-06-01
    • 2020-12-01
    • 2016-09-12
    • 2015-11-19
    • 2018-03-18
    • 1970-01-01
    • 2016-01-01
    相关资源
    最近更新 更多