ホームページ > PHPフレームワーク > Swoole > WeChat 支払いに Hyperf フレームワークを使用する方法

WeChat 支払いに Hyperf フレームワークを使用する方法

王林
リリース: 2023-10-20 17:24:43
オリジナル
1252 人が閲覧しました

WeChat 支払いに Hyperf フレームワークを使用する方法

WeChat 支払いに Hyperf フレームワークを使用する

はじめに:
電子商取引の発展に伴い、WeChat 支払いは人々が買い物をするための主要な方法の 1 つになりました。そして日常生活で支払います。開発においては、WeChat 決済をいかに迅速に統合するかが特に重要になります。この記事では、WeChat 支払いに Hyperf フレームワークを使用する方法を紹介し、具体的なコード例を示します。

本文:

1. 準備作業
WeChat 支払いに Hyperf フレームワークを使用する前に、いくつかの準備作業が必要です。まず、WeChat 決済アカウントを登録し、加盟店番号、アプリケーション キーなどの情報を取得します。次に、Hyperf フレームワークをインストールします。Composer を使用してインストールし、composer create-project hyperf/hyperf-skeleton コマンドを実行します。最後に、WeChat 支払い SDK ライブラリをインストールします。Composer を使用してインストールし、コマンド「composer require overtrue/wechat」を実行します。

2. 設定ファイル
Hyperf フレームワークでは、設定ファイルは config/autoload ディレクトリにあります。設定ファイルに、加盟店番号、アプリケーション キーなど、WeChat 支払い関連の設定項目を正しく入力します。サンプル構成は次のとおりです:

return [
    'wechat' => [
        'app_id' => env('WECHAT_APPID', ''),
        'mch_id' => env('WECHAT_MCH_ID', ''),
        'key' => env('WECHAT_KEY', ''),
        'cert_path' => env('WECHAT_CERT_PATH',''),
        'key_path' => env('WECHAT_KEY_PATH',''),
        'notify_url' => env('WECHAT_NOTIFY_URL',''),
    ],
];
ログイン後にコピー

3. WeChat 支払いサービス クラスの作成
Hyperf フレームワークでは、支払い関連のメソッドをカプセル化する WeChat 支払いサービス クラスを作成できます。サンプル コードは次のとおりです。

<?php

declare(strict_types=1);

namespace AppService;

use EasyWeChatPaymentApplication;

class WechatPayService
{
    protected $app;

    public function __construct()
    {
        $config = config('wechat');
        $this->app = new Application($config);
    }

    public function createOrder(string $orderNo, float $totalAmount, string $description)
    {
        $result = $this->app->order->unify([
            'out_trade_no' => $orderNo,
            'body' => $description,
            'total_fee' => $totalAmount * 100,
            'trade_type' => 'APP',
        ]);

        if ($result['return_code'] === 'SUCCESS' && $result['result_code'] === 'SUCCESS') {
            $prepayId = $result['prepay_id'];
            $jssdkParams = $this->app->jssdk->appConfig($prepayId);

            return [
                'prepay_id' => $result['prepay_id'],
                'jssdk_params' => $jssdkParams,
            ];
        } else {
            throw new Exception($result['return_msg']);
        }
    }

    public function notify(array $data)
    {
        $response = $this->app->handlePaidNotify(function ($message, $fail) {
            // 处理支付回调
            // 更新订单状态,发货等操作
            return true; // 返回处理结果, true 或 false
        });

        return $response;
    }
}
ログイン後にコピー

4. 支払いインターフェイスを呼び出します
WeChat 支払いを呼び出す必要がある場合、WeChat 支払いサービス クラスをインスタンス化し、対応するメソッドを呼び出します。サンプル コードは次のとおりです:

<?php

declare(strict_types=1);

namespace AppController;

use AppServiceWechatPayService;
use HyperfHttpServerAnnotationController;
use HyperfHttpServerAnnotationPostMapping;
use HyperfHttpServerContractRequestInterface;

/**
 * @Controller()
 */
class PayController
{
    /**
     * @PostMapping(path="/pay")
     */
    public function pay(RequestInterface $request, WechatPayService $payService)
    {
        $orderNo = $request->input('orderNo');
        $totalAmount = $request->input('totalAmount');
        $description = $request->input('description');

        try {
            $result = $payService->createOrder($orderNo, $totalAmount, $description);
            // 返回给前端APP的支付参数
            return $result;
        } catch (Exception $e) {
            // 处理异常错误
            return [
                'error' => $e->getMessage(),
            ];
        }
    }

    /**
     * @PostMapping(path="/notify")
     */
    public function notify(RequestInterface $request, WechatPayService $payService)
    {
        $payService->notify($request->all());
        // 处理支付回调结果

        return 'success';
    }
}
ログイン後にコピー

5. ルーティングの構成
ルーティングを構成し、支払いインターフェイスとコールバック インターフェイスを対応するコントローラー メソッドにバインドします。サンプル コードは次のとおりです。

<?php

declare(strict_types=1);

use HyperfHttpServerRouterRouter;

Router::addRoute(['POST'], '/pay', 'App\Controller\PayController@pay');
Router::addRoute(['POST'], '/notify', 'App\Controller\PayController@notify');
ログイン後にコピー

概要:
この記事では、WeChat 支払いに Hyperf フレームワークを使用する方法を紹介し、具体的なコード例を示します。構成ファイルを通じて WeChat 支払い関連のパラメーターを設定し、WeChat 支払いサービス クラスを作成することで、簡単に支払いインターフェイスを呼び出し、支払い結果をコールバックできます。この記事が、開発プロセス中に WeChat Pay を統合する開発者にとって役立つことを願っています。

以上がWeChat 支払いに Hyperf フレームワークを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート