Не могу получить токен доступа в Stripe

php oauth stripe-payments access-token

474 просмотра

2 ответа

10 Репутация автора

Я новичок в интеграции Stripe. Я прочитал документацию по API для Stripe, и вот поток OAuth. Но я все еще не получаю токен доступа OAuth. Может кто-нибудь объяснить, как я могу получить токен доступа? Спасибо!

if (isset($_GET['code'])) { // Redirect w/ code
  $code = $_GET['code'];

  $token_request_body = array(
    'grant_type' => 'authorization_code',
    'client_id' => 'ca_32D88BD1qLklliziD7gYQvctJIhWBSQ7',
    'code' => $code,
    'client_secret' => ''
  );

  $req = curl_init(TOKEN_URI);
  curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($req, CURLOPT_POST, true );
  curl_setopt($req, CURLOPT_POSTFIELDS, http_build_query($token_request_body));

  // TODO: Additional error handling
  $respCode = curl_getinfo($req, CURLINFO_HTTP_CODE);
  $resp = json_decode(curl_exec($req), true);
  curl_close($req);

  echo $resp['access_token'];
} else if (isset($_GET['error'])) { // Error
  echo $_GET['error_description'];
} else { // Show OAuth link
  $authorize_request_body = array(
    'response_type' => 'code',
    'scope' => 'read_write',
    'client_id' => 'ca_32D88BD1qLklliziD7gYQvctJIhWBSQ7'
  );

  $url = AUTHORIZE_URI . '?' . http_build_query($authorize_request_body);
  echo "<a href='$url'>Connect with Stripe</a>";
}

Автор: user6591546 Источник Размещён: 18.07.2016 07:14

Ответы (2)


0 плюса

269 Репутация автора

Для этого вы должны использовать клиентскую библиотеку OAuth 2.0, а не пытаться свернуть это самостоятельно, как предлагает Stripe: https://stripe.com/docs/connect/standalone-accounts#sample-code

Их много, но это довольно хороший вариант: https://github.com/thephpleague/oauth2-client

Вы можете изменить этот пример и получить идентификатор учетной записи следующим образом:

$provider->getResourceOwner($accessToken)->getId();

Получив идентификатор учетной записи, вы сохраните и будете использовать его для аутентификации в качестве подключенной учетной записи, как это предложено Stripe: https://stripe.com/docs/connect/authentication#authentication-via-the-stripe-account-header

Автор: Adamjstevenson Размещён: 18.07.2016 08:32

0 плюса

5962 Репутация автора

на самом деле у них есть официальная библиотека github

и у них есть пример для oauth

просто отсутствует в документах по любой причине ...

https://github.com/stripe/stripe-php/blob/master/examples/oauth.php

в случае, если они удаляют его, я включаю файл здесь, обратите внимание: они используют свою библиотеку, поэтому вы должны установить его до этого, чтобы работать

<?php

require('../init.php');

\Stripe\Stripe::setApiKey(getenv('STRIPE_SECRET_KEY'));
\Stripe\Stripe::setClientId(getenv('STRIPE_CLIENT_ID'));


if (isset($_GET['code'])) {
    // The user was redirected back from the OAuth form with an authorization code.
    $code = $_GET['code'];

    try {
        $resp = \Stripe\OAuth::token([
            'grant_type' => 'authorization_code',
            'code' => $code,
        ]);
    } catch (\Stripe\Error\OAuth\OAuthBase $e) {
        exit("Error: " . $e->getMessage());
    }

    $accountId = $resp->stripe_user_id;

    echo "<p>Success! Account $accountId is connected.

\n"; echo "

Click here to disconnect the account.

\n"; } elseif (isset($_GET['error'])) { // The user was redirect back from the OAuth form with an error. $error = $_GET['error']; $error_description = $_GET['error_description']; echo "

Error: code=" . htmlspecialchars($error, ENT_QUOTES) . ", description=" . htmlspecialchars($error_description, ENT_QUOTES) . "

\n"; echo "

Click here to restart the OAuth flow.

\n"; } elseif (isset($_GET['deauth'])) { // Deauthorization request $accountId = $_GET['deauth']; try { \Stripe\OAuth::deauthorize([ 'stripe_user_id' => $accountId, ]); } catch (\Stripe\Error\OAuth\OAuthBase $e) { exit("Error: " . $e->getMessage()); } echo "

Success! Account " . htmlspecialchars($accountId, ENT_QUOTES) . " is disconnected.

\n"; echo "

Click here to restart the OAuth flow.

\n"; } else { $url = \Stripe\OAuth::authorizeUrl([ 'scope' => 'read_only', ]); echo "Connect with Stripe\n"; }
Автор: Toskan Размещён: 26.04.2018 05:23
Вопросы из категории :
32x32