PHP と OAuth を使用して WeChat 支払いを統合する方法
はじめに:
モバイル決済の人気により、WeChat 支払いは多くの人にとって好まれる支払い方法になりました。 WeChat Pay を Web サイトまたはアプリケーションに統合すると、ユーザーに便利な支払い体験を提供できます。この記事では、WeChat 支払い統合に PHP と OAuth を使用する方法を紹介し、関連するコード例を示します。
1. WeChat Pay の申請
WeChat Pay を使用する前に、まず WeChat Pay 販売アカウントと関連キーを申請する必要があります。具体的な申請プロセスについては、WeChat Payの公式ドキュメントを参照してください。
2. PHP OAuth ライブラリの選択
OAuth は承認のオープン標準であり、ユーザーはサードパーティのアプリケーションが自分の情報にアクセスすることを承認できます。 WeChat Payでは、ユーザーの認証ログインと決済のプロセスにOAuthが使用されます。 PHP には、OAuth1 や OAuth2 など、選択できるオープンソース OAuth ライブラリが多数あります。
3. OAuth ライブラリのインストールと設定
composer require thephpleague/oauth2-client
<?php class Config { public static $wechatPayConfig = [ 'clientId' => 'YOUR_CLIENT_ID', 'clientSecret' => 'YOUR_CLIENT_SECRET', 'redirectUri' => 'YOUR_REDIRECT_URI', 'wechatPayApiUrl' => 'https://api.mch.weixin.qq.com/pay/unifiedorder', 'wechatPayAppId' => 'YOUR_APP_ID', 'wechatPayMchId' => 'YOUR_MCH_ID', 'wechatPayApiKey' => 'YOUR_API_KEY' ]; } ?>
4. WeChat 支払いの統合に OAuth を使用する
<?php require 'vendor/autoload.php'; use LeagueOAuth2ClientProviderGenericProvider; $provider = new GenericProvider([ 'clientId' => Config::$wechatPayConfig['clientId'], 'clientSecret' => Config::$wechatPayConfig['clientSecret'], 'redirectUri' => Config::$wechatPayConfig['redirectUri'], 'urlAuthorize' => 'https://open.weixin.qq.com/connect/oauth2/authorize', 'urlAccessToken' => 'https://api.weixin.qq.com/sns/oauth2/access_token', 'urlResourceOwnerDetails' => 'https://api.weixin.qq.com/sns/userinfo' ]); // 获取授权码 if (!isset($_GET['code'])) { $authorizationUrl = $provider->getAuthorizationUrl(); $_SESSION['oauth2state'] = $provider->getState(); header('Location: ' . $authorizationUrl); exit(); } try { $accessToken = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); $resourceOwner = $provider->getResourceOwner($accessToken); $openid = $resourceOwner->getValues()['openid']; // TODO: 将openid保存到数据库中 } catch (Exception $e) { // 错误处理 } ?>
<?php require 'vendor/autoload.php'; $wechatPay = new WechatPay(Config::$wechatPayConfig); $prepayInfo = $wechatPay->unifiedOrder([ 'body' => '支付测试', 'out_trade_no' => time(), 'total_fee' => '1', 'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], 'notify_url' => 'http://www.example.com/notify.php', 'trade_type' => 'JSAPI', 'openid' => $openid ]); $prepayParams = $wechatPay->getJSSDKParams($prepayInfo['prepay_id']); // 将$prepayParams传递给前端进行支付 ?>
notify_url
をコールバックします。支払い結果を通知するため。これは、次のコード例で実現できます: <?php require 'vendor/autoload.php'; use WechatPayNotify; $notify = new Notify(Config::$wechatPayConfig); $notifyResult = $notify->handleNotify(); // 处理支付结果通知 if ($notifyResult) { // TODO: 更新数据库中的订单状态 echo 'success'; // 返回给微信服务器,表示已成功处理通知 } else { // TODO: 删除数据库中的订单,或者进行其他处理 echo 'fail'; } ?>
概要:
上記の手順を通じて、PHP と OAuth に基づいた WeChat 支払い機能を実装できます。まず、OAuth によるユーザー認証ログインを実装し、ユーザーの openid を取得します。次に、openid と関連パラメータを使用して支払いリクエストを行います。最後に、支払い結果通知では、支払い結果が処理され、関連する注文ステータスが更新されます。この方法により、WeChat 支払いを Web サイトやアプリケーションに簡単に統合できます。
上記はこの記事のコード例です。PHP と OAuth を使用して WeChat 決済を統合する際の参考になれば幸いです。
以上がPHP と OAuth を使用して WeChat 決済を統合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。