I'm currently integrating MercadoPago into my Laravel application, and I'm encountering an issue when trying to process a payment. The error message I receive is:
"You cannot use application_fee with this payment."
The documentation says "This error occurs because the Access Token being used was not obtained via OAuth. Make sure to use an Access Token generated through OAuth." but I've obtained the AToken via oauth.
Route /connect-mercadopago
$codeVerifier = bin2hex(random_bytes(32));
session(['mp_code_verifier' => $codeVerifier]);
// Generate code challenge
$codeChallenge = rtrim(strtr(base64_encode(hash('sha256', $codeVerifier, true)), '+/', '-_'), '=');
// auth params
$queryParams = http_build_query([
'response_type' => 'code',
'client_id' => env('MERCADOPAGO_CLIENT_ID'),
'redirect_uri' => url('/callback-mercadopago'),
'code_challenge' => $codeChallenge,
'code_challenge_method' => 'S256',
]);
return redirect(env('MERCADOPAGO_GETAUTH') . $queryParams);
MERCADOPAGO_GETAUTH=?
public function callBackToken(Request $request): void
{
$code = request('code');
$codeVerifier = session('mp_code_verifier');
if (!$code || !$codeVerifier) {
echo "Error: Missing Params.";
return;
}
$postData = [
'client_id' => env('MERCADOPAGO_CLIENT_ID'),
'client_secret' => env('MERCADOPAGO_CLIENT_SECRET'),
'grant_type' => 'authorization_code',
'code' => $code,
'redirect_uri' => env('REDIRECT_URL'),
'code_verifier' => $codeVerifier,
];
$response = Http::asForm()->post(env('MERCADOPAGO_OAUTH'), $postData);
if ($response->failed() || $response->status() >= 400) {
echo "Error: " . $response->body();
return;
}
$responseData = $response->json();
if (!is_array($responseData) || !isset($responseData['access_token'], $responseData['refresh_token'], $responseData['expires_in'])) {
echo "Error: " . $response; }
// **SAVE**
$data = [
'user_id' => auth()->id(),
'encrypted_access_token' => encrypt($responseData['access_token']),
'encrypted_refresh_token' => encrypt($responseData['refresh_token']),
'expires_at' => now()->addSeconds($responseData['expires_in']),
'public_key' => encrypt($responseData['public_key'])
];
$request->user()->Seller()->create($data);
echo json_encode($responseData);
}
MERCADOPAGO_OAUTH=
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744327287a4568710.html
评论列表(0条)