ホームページ  >  記事  >  バックエンド開発  >  PHP と OAuth を使用して WeChat 決済を統合する方法

PHP と OAuth を使用して WeChat 決済を統合する方法

王林
王林オリジナル
2023-07-28 19:30:281539ブラウズ

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 ライブラリのインストールと設定

  1. OAuth ライブラリのダウンロードとインストール
    PHP には、php-oauth2-client など、選択できる優れた OAuth ライブラリが多数あります。 Composer を使用してインストールできます。具体的なインストール コマンドは次のとおりです:
composer require thephpleague/oauth2-client
  1. OAuth ライブラリの構成
    プロジェクトで、次の Config.php ファイルを作成する必要があります。 OAuth ライブラリの設定。このファイルには、販売者番号、キーなどの WeChat 支払い関連の構成情報が含まれている必要があります。サンプル コードは次のとおりです。
<?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 を使用する

  1. 承認されたログイン
    ユーザーが WeChat 支払いを使用するには、まず次のことを行う必要があります。ログインを許可します。これは、次のコード例で実現できます。
<?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) {
    // 错误处理
}
?>
  1. 支払い要求の開始
    ユーザーがログインを承認した後、支払い要求を開始できます。これは、次のコード例で実現できます。
<?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传递给前端进行支付
?>
  1. 支払いコールバック処理
    支払いが成功すると、WeChat サーバーは指定された 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。