I’ve create a laravel form and i need to call a function located to another page inside a class after submiting. The function has one parameter of type RequestInterface .
I’ve got this error:
Unresolvable dependency resolving [Parameter #0 [ string $method ]] in class GuzzleHttpPsr7Request
This Class code and inside we have the function buildAuthorizationHeader that i want to call.
<code><?php
declare(strict_types=1);
namespace MavianceS3PApiClient;
/**
* ApiClient Class Doc Comment
*
* @category Class
*
* @author Swagger Codegen team
*
* @link https://github.com/swagger-api/swagger-codegen
*/
use GuzzleHttpClient;
use GuzzleHttpUtils;
use PsrHttpMessageRequestInterface;
use PsrHttpMessageResponseInterface;
use PsrHttpMessageUriInterface;
use RamseyUuidUuid;
class ApiClient extends Client
{
public function __construct(private readonly string $token, private readonly string $secret, array $config = [])
{
parent::__construct($config);
}
public function send(RequestInterface $request, array $options = []): ResponseInterface
{
$options['headers'] = ['Authorization' => $this->buildAuthorizationHeader($request)];
return parent::send($request, $options);
}
/** Build S3P Authorization Header */
public function buildAuthorizationHeader(RequestInterface $request): string
{
$data = [];
if ($request->getMethod() == 'POST') {
$data = Utils::jsonDecode($request->getBody()->getContents(), true);
}
$auth_titleKey = 's3pAuth';
$auth_tokenKey = 's3pAuth_token';
$auth_nonceKey = 's3pAuth_nonce';
$auth_signatureKey = 's3pAuth_signature';
$auth_signatureMethodKey = 's3pAuth_signature_method';
$auth_timestampKey = 's3pAuth_timestamp';
$separator = ', ';
$signature_method = 'HMAC-SHA1';
$timestamp = time();
$nonce = Uuid::uuid4()->toString();
$params =
[
's3pAuth_nonce' => $nonce,
's3pAuth_timestamp' => $timestamp,
's3pAuth_signature_method' => $signature_method,
's3pAuth_token' => $this->token,
];
// disect GET request query parameters
if (!empty($request->getUri()->getQuery())) {
$queryparameter = explode('&', urldecode($request->getUri()->getQuery()));
foreach ($queryparameter as $v) {
$item = explode('=', $v);
$params[$item[0]] = $item[1];
}
}
$sig = new HMACSignature(
$request->getMethod(),
$this->getUrl($request->getUri()),
array_merge($data, $params)
);
$signature = $sig->generate($this->secret);
echo $signature;
return $auth_titleKey . ' ' .
$auth_timestampKey . '="' . $timestamp . '"' . $separator .
$auth_signatureKey . '="' . $signature . '"' . $separator .
$auth_nonceKey . '="' . $nonce . '"' . $separator .
$auth_signatureMethodKey . '="' . $signature_method . '"' . $separator .
$auth_tokenKey . '="' . $this->token . '"';
}
/** Build url to use in signature validation */
private function getUrl(UriInterface $uri): string
{
// in case ports are not standard -> add to url
return implode(
'',
[
$uri->getScheme(),
'://',
$uri->getHost(),
is_null($uri->getPort()) ? '' : ((!in_array($uri->getPort(), [80, 443])) ? ':' . $uri->getPort() : ''),
$uri->getPath(),
]
);
}
}
</code>
<code><?php
declare(strict_types=1);
namespace MavianceS3PApiClient;
/**
* ApiClient Class Doc Comment
*
* @category Class
*
* @author Swagger Codegen team
*
* @link https://github.com/swagger-api/swagger-codegen
*/
use GuzzleHttpClient;
use GuzzleHttpUtils;
use PsrHttpMessageRequestInterface;
use PsrHttpMessageResponseInterface;
use PsrHttpMessageUriInterface;
use RamseyUuidUuid;
class ApiClient extends Client
{
public function __construct(private readonly string $token, private readonly string $secret, array $config = [])
{
parent::__construct($config);
}
public function send(RequestInterface $request, array $options = []): ResponseInterface
{
$options['headers'] = ['Authorization' => $this->buildAuthorizationHeader($request)];
return parent::send($request, $options);
}
/** Build S3P Authorization Header */
public function buildAuthorizationHeader(RequestInterface $request): string
{
$data = [];
if ($request->getMethod() == 'POST') {
$data = Utils::jsonDecode($request->getBody()->getContents(), true);
}
$auth_titleKey = 's3pAuth';
$auth_tokenKey = 's3pAuth_token';
$auth_nonceKey = 's3pAuth_nonce';
$auth_signatureKey = 's3pAuth_signature';
$auth_signatureMethodKey = 's3pAuth_signature_method';
$auth_timestampKey = 's3pAuth_timestamp';
$separator = ', ';
$signature_method = 'HMAC-SHA1';
$timestamp = time();
$nonce = Uuid::uuid4()->toString();
$params =
[
's3pAuth_nonce' => $nonce,
's3pAuth_timestamp' => $timestamp,
's3pAuth_signature_method' => $signature_method,
's3pAuth_token' => $this->token,
];
// disect GET request query parameters
if (!empty($request->getUri()->getQuery())) {
$queryparameter = explode('&', urldecode($request->getUri()->getQuery()));
foreach ($queryparameter as $v) {
$item = explode('=', $v);
$params[$item[0]] = $item[1];
}
}
$sig = new HMACSignature(
$request->getMethod(),
$this->getUrl($request->getUri()),
array_merge($data, $params)
);
$signature = $sig->generate($this->secret);
echo $signature;
return $auth_titleKey . ' ' .
$auth_timestampKey . '="' . $timestamp . '"' . $separator .
$auth_signatureKey . '="' . $signature . '"' . $separator .
$auth_nonceKey . '="' . $nonce . '"' . $separator .
$auth_signatureMethodKey . '="' . $signature_method . '"' . $separator .
$auth_tokenKey . '="' . $this->token . '"';
}
/** Build url to use in signature validation */
private function getUrl(UriInterface $uri): string
{
// in case ports are not standard -> add to url
return implode(
'',
[
$uri->getScheme(),
'://',
$uri->getHost(),
is_null($uri->getPort()) ? '' : ((!in_array($uri->getPort(), [80, 443])) ? ':' . $uri->getPort() : ''),
$uri->getPath(),
]
);
}
}
</code>
<?php
declare(strict_types=1);
namespace MavianceS3PApiClient;
/**
* ApiClient Class Doc Comment
*
* @category Class
*
* @author Swagger Codegen team
*
* @link https://github.com/swagger-api/swagger-codegen
*/
use GuzzleHttpClient;
use GuzzleHttpUtils;
use PsrHttpMessageRequestInterface;
use PsrHttpMessageResponseInterface;
use PsrHttpMessageUriInterface;
use RamseyUuidUuid;
class ApiClient extends Client
{
public function __construct(private readonly string $token, private readonly string $secret, array $config = [])
{
parent::__construct($config);
}
public function send(RequestInterface $request, array $options = []): ResponseInterface
{
$options['headers'] = ['Authorization' => $this->buildAuthorizationHeader($request)];
return parent::send($request, $options);
}
/** Build S3P Authorization Header */
public function buildAuthorizationHeader(RequestInterface $request): string
{
$data = [];
if ($request->getMethod() == 'POST') {
$data = Utils::jsonDecode($request->getBody()->getContents(), true);
}
$auth_titleKey = 's3pAuth';
$auth_tokenKey = 's3pAuth_token';
$auth_nonceKey = 's3pAuth_nonce';
$auth_signatureKey = 's3pAuth_signature';
$auth_signatureMethodKey = 's3pAuth_signature_method';
$auth_timestampKey = 's3pAuth_timestamp';
$separator = ', ';
$signature_method = 'HMAC-SHA1';
$timestamp = time();
$nonce = Uuid::uuid4()->toString();
$params =
[
's3pAuth_nonce' => $nonce,
's3pAuth_timestamp' => $timestamp,
's3pAuth_signature_method' => $signature_method,
's3pAuth_token' => $this->token,
];
// disect GET request query parameters
if (!empty($request->getUri()->getQuery())) {
$queryparameter = explode('&', urldecode($request->getUri()->getQuery()));
foreach ($queryparameter as $v) {
$item = explode('=', $v);
$params[$item[0]] = $item[1];
}
}
$sig = new HMACSignature(
$request->getMethod(),
$this->getUrl($request->getUri()),
array_merge($data, $params)
);
$signature = $sig->generate($this->secret);
echo $signature;
return $auth_titleKey . ' ' .
$auth_timestampKey . '="' . $timestamp . '"' . $separator .
$auth_signatureKey . '="' . $signature . '"' . $separator .
$auth_nonceKey . '="' . $nonce . '"' . $separator .
$auth_signatureMethodKey . '="' . $signature_method . '"' . $separator .
$auth_tokenKey . '="' . $this->token . '"';
}
/** Build url to use in signature validation */
private function getUrl(UriInterface $uri): string
{
// in case ports are not standard -> add to url
return implode(
'',
[
$uri->getScheme(),
'://',
$uri->getHost(),
is_null($uri->getPort()) ? '' : ((!in_array($uri->getPort(), [80, 443])) ? ':' . $uri->getPort() : ''),
$uri->getPath(),
]
);
}
}
This is my form code
<code><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Example Form</h1>
<form action="{{route('headerauthorization')}}" method="GET">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<label for="amount">Amount:</label>
<input type="tel" id="amount" name="amount" ><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
</code>
<code><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Example Form</h1>
<form action="{{route('headerauthorization')}}" method="GET">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<label for="amount">Amount:</label>
<input type="tel" id="amount" name="amount" ><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
</code>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Example Form</h1>
<form action="{{route('headerauthorization')}}" method="GET">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<label for="amount">Amount:</label>
<input type="tel" id="amount" name="amount" ><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Route code
<code><?php
use IlluminateSupportFacadesRoute;
use AppHttpControllersFlutterFlowController;
Route::get('/', function () {
return view('welcome');
});
Route::get('/headerauthorization', [FlutterFlowController::class, 'headerauthorization'])->name('headerauthorization');
</code>
<code><?php
use IlluminateSupportFacadesRoute;
use AppHttpControllersFlutterFlowController;
Route::get('/', function () {
return view('welcome');
});
Route::get('/headerauthorization', [FlutterFlowController::class, 'headerauthorization'])->name('headerauthorization');
</code>
<?php
use IlluminateSupportFacadesRoute;
use AppHttpControllersFlutterFlowController;
Route::get('/', function () {
return view('welcome');
});
Route::get('/headerauthorization', [FlutterFlowController::class, 'headerauthorization'])->name('headerauthorization');
my controller code
<code><?php
namespace AppHttpControllers;
use GuzzleHttpPsr7Request;
class FlowController extends Controller
{
function headerauthorization(Request $request)
{
$token = "716c3fcf-98bd-435e-a16d" ; //this is not the real one
$secret = "9f96a7ed-338f-4609"; //this is not the real one
$url = "https://s3p.smobilpay.staging.maviance.info/v2/cashin?serviceid=20052";
$config = new MavianceS3PApiClientConfiguration();
$config->setHost($url);
$client = new MavianceS3PApiClientApiClient($token, $secret, ['verify' => false]);
$headerAuthorization = $client->buildAuthorizationHeader($request);
print_r(''. $headerAuthorization.'');
;
}
}
</code>
<code><?php
namespace AppHttpControllers;
use GuzzleHttpPsr7Request;
class FlowController extends Controller
{
function headerauthorization(Request $request)
{
$token = "716c3fcf-98bd-435e-a16d" ; //this is not the real one
$secret = "9f96a7ed-338f-4609"; //this is not the real one
$url = "https://s3p.smobilpay.staging.maviance.info/v2/cashin?serviceid=20052";
$config = new MavianceS3PApiClientConfiguration();
$config->setHost($url);
$client = new MavianceS3PApiClientApiClient($token, $secret, ['verify' => false]);
$headerAuthorization = $client->buildAuthorizationHeader($request);
print_r(''. $headerAuthorization.'');
;
}
}
</code>
<?php
namespace AppHttpControllers;
use GuzzleHttpPsr7Request;
class FlowController extends Controller
{
function headerauthorization(Request $request)
{
$token = "716c3fcf-98bd-435e-a16d" ; //this is not the real one
$secret = "9f96a7ed-338f-4609"; //this is not the real one
$url = "https://s3p.smobilpay.staging.maviance.info/v2/cashin?serviceid=20052";
$config = new MavianceS3PApiClientConfiguration();
$config->setHost($url);
$client = new MavianceS3PApiClientApiClient($token, $secret, ['verify' => false]);
$headerAuthorization = $client->buildAuthorizationHeader($request);
print_r(''. $headerAuthorization.'');
;
}
}