oauth - You cannot use application_fee with this payment. | MercadoPago MarketPlace Laravel - Stack Overflow

I'm currently integrating MercadoPago into my Laravel application, and I'm encountering an is

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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信