Srmklive\PayPal 错误“无法将类 Illuminate\Routing\Redirector 的对象转换为字符串”尝试在沙盒中快速结帐
Posted
技术标签:
【中文标题】Srmklive\\PayPal 错误“无法将类 Illuminate\\Routing\\Redirector 的对象转换为字符串”尝试在沙盒中快速结帐【英文标题】:Srmklive\PayPal error "Object of class Illuminate\Routing\Redirector could not be converted to string" trying express checkout in sandboxSrmklive\PayPal 错误“无法将类 Illuminate\Routing\Redirector 的对象转换为字符串”尝试在沙盒中快速结帐 【发布时间】:2020-10-22 23:47:33 【问题描述】:您好,我正在尝试使用 Srmklive\PayPal 将 Paypal 集成到 Laravel 5.8 项目中。 我遵循文档并像这样配置我的应用程序:
这是控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Srmklive\PayPal\Services\ExpressCheckout;
class PayPalController extends Controller
/**
* Responds with a welcome message with instructions
*
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function payment()
$data = [];
$data['items'] = [
[
'name' => 'ItSolutionStuff.com',
'price' => 100,
'desc' => 'Description for ItSolutionStuff.com',
'qty' => 1
]
];
$data['invoice_id'] = 1;
$data['invoice_description'] = "Order #$data['invoice_id'] Invoice";
$data['return_url'] = route('payment.success');
$data['cancel_url'] = route('payment.cancel');
$data['total'] = 100;
$provider = new ExpressCheckout;
$response = $provider->setCurrency('EUR')->setExpressCheckout($data);
//dd($response);
return redirect($response['paypal_link']);
/**
* Responds with a welcome message with instructions
*
* @return \Illuminate\Http\Response
*/
public function cancel()
dd('Your payment is canceled. You can create cancel page here.');
/**
* Responds with a welcome message with instructions
*
* @return \Illuminate\Http\Response
*/
public function success(Request $request)
$response = $provider->getExpressCheckoutDetails($request->token);
if (in_array(strtoupper($response['ACK']), ['SUCCESS', 'SUCCESSWITHWARNING']))
dd('Your payment was successfully. You can create success page here.');
dd('Something is wrong.');
这些是路线:
Route::get('payment', 'PayPalController@payment')->name('payment');
Route::get('cancel', 'PayPalController@cancel')->name('payment.cancel');
Route::get('payment/success', 'PayPalController@success')->name('payment.success');
最后这是我放入 .env 文件的内容:
PAYPAL_SANDBOX_API_USERNAME=sb-xxxxxxxx.com
PAYPAL_SANDBOX_API_PASSWORD=KxxxxxxxxxWA
PAYPAL_SANDBOX_API_SECRET=Exxxxxxxxxxxxx
PAYPAL_SANDBOX_API_CERTIFICATE=
点击支付按钮时出现的错误是“类 Illuminate\Routing\Redirector 的对象无法转换为字符串”
这是控制器中生成的$response转储的内容
感谢您的帮助
【问题讨论】:
抱歉我忘记了转储内容:array:10 [▼ "TIMESTAMP" => "2020-07-02T11:20:27Z" "CORRELATIONID" => "4983ab115332a" "ACK" => "失败”“VERSION”=>“123”“BUILD”=>“54686869”“L_ERRORCODE0”=>“10002”“L_SHORTMESSAGE0”=>“安全错误”“L_LONGMESSAGE0”=>“安全标头无效”“L_SEVERITYCODE0” => "错误" "paypal_link" => null ] 最好将转储放在已编辑的问题中以提高可读性。 欢迎来到 SO ..."paypal_link" => null
... 没有“paypal 链接”,所以 redirect(null)
返回 Redirector
而不是 RedirectResponse
@lagbox 搞定了
我终于找到了错误。问题是错误的文档和示例文件。
【参考方案1】:
这是我的 $provider 变量的转储......我真的不知道在哪里可以找到错误......似乎一切都正确设置了
Srmklive\PayPal\Services\ExpressCheckout #299 ▼
-client: GuzzleHttp\Client #300 ▼
-config: array:9 [▶]
-httpClientConfig: array:2 [▶]
-certificate: ""
+mode: "sandbox"
#post: Illuminate\Support\Collection #321 ▼
#items: array:21 [▼
"L_PAYMENTREQUEST_0_NAME0" => "ItSolutionStuff.com"
"L_PAYMENTREQUEST_0_AMT0" => 100
"L_PAYMENTREQUEST_0_DESC0" => "Description for ItSolutionStuff.com"
"L_PAYMENTREQUEST_0_QTY0" => 1
"PAYMENTREQUEST_0_ITEMAMT" => 100
"PAYMENTREQUEST_0_AMT" => 100
"PAYMENTREQUEST_0_PAYMENTACTION" => "Sale"
"PAYMENTREQUEST_0_CURRENCYCODE" => "EUR"
"PAYMENTREQUEST_0_DESC" => "Order #1 Invoice"
"PAYMENTREQUEST_0_INVNUM" => 1
"NOSHIPPING" => 1
"RETURNURL" => "http://127.0.0.1:8000/payment/success"
"CANCELURL" => "http://127.0.0.1:8000/cancel"
"LOCALE" => "en_US"
"L_BILLINGTYPE0" => "MerchantInitiatedBilling"
"L_BILLINGAGREEMENTDESCRIPTION0" => "Order #1 Invoice"
"USER" => "sb-4lmkp2417467_api1.business.example.com"
"PWD" => "KWP3ZMXTAABSECWA"
"SIGNATURE" => "ENX8hFsccoYGDiPXfROILYkMlkRTCkdCRdBQZ-prMaOGLpE7sm7TRaZSFFd4KQI14LAShVhvDZN9sSDh"
"VERSION" => 123
"METHOD" => "SetExpressCheckout"
]
-config: array:12 [▼
"username" => "sb-4lmkp2417467_api1.business.example.com"
"password" => "KWP3ZMXTAABSECWA"
"secret" => "ENX8hFsccoYGDiPXfROILYkMlkRTCkdCRdBQZ-prMaOGLpE7sm7TRaZSFFd4KQI14LAShVhvDZN9sSDh"
"certificate" => ""
"app_id" => "APP-80W284485P519543T"
"signature" => "ENX8hFsccoYGDiPXfROILYkMlkRTCkdCRdBQZ-prMaOGLpE7sm7TRaZSFFd4KQI14LAShVhvDZN9sSDh"
"api_url" => "https://api-3t.sandbox.paypal.com/nvp"
"gateway_url" => "https://www.sandbox.paypal.com"
"ipn_url" => "https://ipnpb.sandbox.paypal.com/cgi-bin/webscr"
"payment_action" => "Sale"
"notify_url" => ""
"locale" => ""
]
-subtotal: 100
-currency: "EUR"
-billingType: "MerchantInitiatedBilling"
-options: []
-paymentAction: "Sale"
-locale: "en_US"
-apiUrl: "https://api-3t.sandbox.paypal.com/nvp"
-notifyUrl: ""
-httpBodyParam: "form_params"
-validateSSL: true
【讨论】:
以上是关于Srmklive\PayPal 错误“无法将类 Illuminate\Routing\Redirector 的对象转换为字符串”尝试在沙盒中快速结帐的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 8 中使用 srmklive/laravel-paypal v3
与paypal集成时如何解决paypal登录选项卡丢失的问题
(Laravel)无法从PayPal IPN获得响应,但模拟的响应返回已经过验证
远程服务器返回错误: 404错误远程服务器返回错误:500错误 HttpWebResponse远程服务器返回错误:(404500) 错误。