在我的一個電商項目中,需要集成 Mollie 支付網關,并且需要使用 Mollie Connect (OAuth) 來連接商戶的 Mollie 賬戶。這意味著我需要實現 OAuth 2.0 的授權流程,包括獲取授權碼、交換訪問令牌、刷新令牌等等。手動實現這些流程不僅耗時,而且容易出錯。 composer在線學習地址:學習地址 幸運的是,我發現了 mollie/oauth2-mollie-php 這個 Composer 包。它基于 PHP League 的 OAuth 2.0 Client,專門為 Mollie 提供了 OAuth 2.0 的支持。使用它可以大大簡化 Mollie Connect 的集成過程。
首先,你需要使用 composer 安裝這個包:
composer require mollie/oauth2-mollie-php ^2.0
安裝完成后,你就可以使用 MollieOAuth2ClientProviderMollie 類作為 OAuth 2.0 的 provider。以下是一個簡單的授權碼流程的示例:
$provider = new MollieOAuth2ClientProviderMollie([ 'clientId' => 'YOUR_CLIENT_ID', 'clientSecret' => 'YOUR_CLIENT_SECRET', 'redirectUri' => 'https://your-redirect-uri', ]); // 如果沒有授權碼,則獲取授權碼 if (!isset($_GET['code'])) { // 從 provider 獲取授權 URL $authorizationUrl = $provider->getAuthorizationUrl([ // 可選,如果需要重新請求用戶之前拒絕的權限 'approval_prompt' => 'force', // 可選,權限列表,默認為 'organizations.read' 'scope' => [ MollieOAuth2ClientProviderMollie::SCOPE_ORGANIZATIONS_READ, MollieOAuth2ClientProviderMollie::SCOPE_PAYMENTS_READ, ], ]); // 保存 state 到 session $_SESSION['oauth2state'] = $provider->getState(); // 重定向用戶到授權 URL header('Location: ' . $authorizationUrl); exit; } // 檢查 state,防止 CSRF 攻擊 elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) { unset($_SESSION['oauth2state']); exit('Invalid state'); } else { try { // 使用授權碼獲取 Access Token $accessToken = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); // 使用 access token 獲取用戶信息 $resourceOwner = $provider->getResourceOwner($accessToken); print_r($resourceOwner->toArray()); } catch (LeagueOAuth2ClientProviderExceptionIdentityProviderException $e) { // 獲取 access token 或用戶信息失敗 exit($e->getMessage()); } }
除了授權碼流程,mollie/oauth2-mollie-php 還支持刷新 access token 和撤銷 token。
使用 mollie/oauth2-mollie-php 極大地簡化了 Mollie Connect 的集成過程。它提供了清晰的 API 和示例代碼,使得開發者可以專注于業務邏輯的實現,而無需花費大量時間處理 OAuth 2.0 的細節。如果你需要在你的 PHP 應用中集成 Mollie Connect,那么 mollie/oauth2-mollie-php 絕對是一個值得考慮的選擇。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END