Flare 错误向我显示“标头可能不包含多个标头,检测到新行”和我的 index.php 文件。这是我的索引文件的一小部分:
namespace App\Http\Controllers;
require_once('vendor/autoload.php');
use Illuminate\Support\Facades\Auth;
use Stripe\Stripe;
use Stripe\Account;
use Stripe\AccountLink;
use App\Models\User;
use Illuminate\Support\Facades\Crypt;
use Carbon\Carbon;
use Stripe\ApiOperations;
use Illuminate\Http;
class StripeConnectController extends Controller
{
public function StripeOnboarding101(){
$user = Auth::user();
/** @var User $user */
if (empty($user->stripe_on_boarding_completed_at)) {
$stripeSecret = env('STRIPE_SECRET');
$stripe::setApiKey($stripeSecret);
$stripe = new \Stripe\StripeClient ($stripeSecret);
if (empty($user->stripe_connect_id)) {
/** @var Account $account */
$account = Account::create([
'type' => 'express',
'email' => $user->email,
'country' => 'SE',
'capabilities' => [
'card_payments' => ['requested' => true],
'transfers' => ['requested' => true],
],
'settings' => [
'payouts' => [
'schedule' => [
'interval' => 'manual',
],
],
],
]);
$user->stripe_connect_id = $account->id;
$user->save();
}
$user->fresh();
$onBoardLink = AccountLink::create([
'account' => $user->stripe_connect_id,
'refresh_url' => route('onBoardCancel'),
'return_url' => route('onBoardResult', Crypt::encrypt($user->stripe_connect_id)),
'type' => 'account_onboarding',
]);
// ob_clean();
// Open a new window alternative TEST; $javascript = "<script>window.open('{$onBoardLink->url}', '_blank');</script>";
}
$loginLink = $this->stripeClient->accounts->createLoginLink($user->stripe_connect_id, []);
return redirect($loginLink->url);
}
public function onBoardResult($encodedToken)
{
/** @var User $user */
$user = User::whereStripeConnectId(Crypt::decrypt($encodedToken))->firstOrFail();
$user->stripe_on_boarding_completed_at = Carbon::now();
$user->save();
return redirect(route('create/campaign'));
}
public function onBoardCancel()
{
return redirect(route('dashboard'));
}
以下是我的 Stripe 入门路线:
Route::middleware(['web', 'auth'])->group(function () {
Route::get('dashboard', 'DashboardController@index')->name('dashboard');});
// Exempt the Stripe onboarding route from the RedirectIfAuthenticated middleware
Route::get('/stripeonboarding', 'StripeConnectController@StripeOnboarding101')->name('StripeOnboarding101')->withoutMiddleware(['guest'])
这是我在我的页面上注册时的 RegisterController。
namespace App\Http\Controllers\Auth;
use App\Models\User;
use Validator;
use App\Models\AdminSettings;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\RegistersUsers;
use Mail;
use App\Http\Controllers\StripeConnectController;
class RegisterController extends Controller
{
use RegistersUsers;
/**
* Where to redirect users after login / registration.
*
* @var string
*/
protected function redirectTo()
{
return redirect()->action([StripeConnectController::class,'StripeOnboarding101']);
}
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
$settings = AdminSettings::first();
$data['_captcha'] = $settings->captcha;
$messages = [
'countries_id.required' => trans('misc.please_select_country'),
'g-recaptcha-response.required_if' => trans('admin.captcha_error_required'),
'g-recaptcha-response.captcha' => trans('admin.captcha_error'),
];
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
'countries_id' => 'required',
'agree_gdpr' => 'required',
'g-recaptcha-response' => 'required_if:_captcha,==,on|captcha'
],$messages);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
$settings = AdminSettings::first();
// Verify Settings Admin
if( $settings->email_verification == 1 ) {
$confirmation_code = str_random(100);
$status = 'pending';
//send verification mail to user
$_username = $data['name'];
$_email_user = $data['email'];
$_title_site = $settings->title;
$_email_noreply = $settings->email_no_reply;
Mail::send('emails.verify', array('confirmation_code' => $confirmation_code, 'title_site' => $_title_site ),
function($message) use (
$_username,
$_email_user,
$_title_site,
$_email_noreply
) {
$message->from($_email_noreply, $_title_site);
$message->subject(trans('users.title_email_verify'));
$message->to($_email_user,$_username);
});
} else {
$confirmation_code = '';
$status = 'active';
}
$token = str_random(75);
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'countries_id' => $data['countries_id'],
'avatar' => 'default.jpg',
'status' => $status,
'role' => 'normal',
'token' => $token,
'confirmation_code' => $confirmation_code
]);
}
protected function redirectToStripeOnboarding(User $user)
{
// Call the Stripe onboarding logic here
$this->StripeOnboarding101($user);
// Redirect the user to a specific URL after Stripe onboarding
return redirect()->route('organization.dashboard'); // Adjust the route as needed
}
public function showRegistrationForm()
{
$settings = AdminSettings::first();
if($settings->registration_active == 'on') {
return view('auth.register');
} else {
return redirect('/');
}
}
}
这是我的错误日志:
[2023-12-28 17:46:39] development.ERROR: Header may not contain more than a single header, new line detected {"userId":27,"exception":"[object] (ErrorException(code: 0): Header may not contain more than a single header, new line detected at /home/..../public_html/vendor/symfony/http-foundation/Response.php:376) [stacktrace]
#0 /home/capitalpal/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(255): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError()
#1 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->Illuminate\\Foundation\\Bootstrap\\{closure}()
#2 /home/capitalpal/public_html/vendor/symfony/http-foundation/Response.php(376): header()
#3 /home/capitalpal/public_html/vendor/symfony/http-foundation/Response.php(424): Symfony\\Component\\HttpFoundation\\Response->sendHeaders()
#4 /home/capitalpal/public_html/index.php(55): Symfony\\Component\\HttpFoundation\\Response->send()
#5 {main}
"}
单击注册按钮时,我还在刀片文件上进行了重定向,但我不怀疑它会出错。并且,我将再次非常感谢任何帮助。如果有人在他们的项目中也做了这个,如果我能看到他们的脚本的一部分并进行比较等,我将不胜感激。我尝试制作一个 JavaScript 行来打开一个新窗口,但根本不起作用。我已使用 Composer 更新了供应商文件,并重新安装了供应商文件夹,我已将 laravel (v10.38.2)、Stripe PHP 库 (v10.21.0) 和 PHP 更新至 8.2
Laravel Middleware: Header may not contains more than a single header, new line detectors 中提供的答案类似,问题是 redirectTo()
上的
RegisterController
方法预计会返回路径的字符串要在其中重定向,但您当前正在返回完整的重定向响应对象。更新此方法以返回您要重定向到的路径:
protected function redirectTo()
{
// Use the action() helper to convert the action to a path.
return action([StripeConnectController::class, 'StripeOnboarding101']);
}