Maison >cadre php >Swoole >Comment utiliser le framework Hyperf pour le paiement WeChat

Comment utiliser le framework Hyperf pour le paiement WeChat

王林
王林original
2023-10-20 17:24:431253parcourir

Comment utiliser le framework Hyperf pour le paiement WeChat

Utiliser le framework Hyperf pour le paiement WeChat

Introduction :
Avec le développement du commerce électronique, le paiement WeChat est devenu l'un des principaux moyens permettant aux gens de faire leurs achats et de payer dans la vie quotidienne. En développement, la manière d’intégrer rapidement le paiement WeChat devient particulièrement importante. Cet article explique comment utiliser le framework Hyperf pour le paiement WeChat et fournit des exemples de code spécifiques.

Texte :

1. Préparation
Avant d'utiliser le framework Hyperf pour le paiement WeChat, quelques préparations sont nécessaires. Tout d’abord, enregistrez un compte de paiement WeChat et obtenez le numéro de commerçant, la clé d’application et d’autres informations. Deuxièmement, installez le framework Hyperf Vous pouvez utiliser Composer pour l'installer et exécuter la commande : composer create-project hyperf/hyperf-skeleton. Enfin, installez la bibliothèque du SDK de paiement WeChat. Vous pouvez utiliser Composer pour l'installer et exécuter la commande : composer require overtrue/wechat.

2. Fichier de configuration
Dans le framework Hyperf, le fichier de configuration se trouve dans le répertoire config/autoload. Dans le fichier de configuration, remplissez correctement les éléments de configuration liés au paiement WeChat, notamment le numéro de commerçant, la clé d'application, etc. L'exemple de configuration est le suivant :

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. Créez une classe de service de paiement WeChat
Dans le framework Hyperf, vous pouvez créer une classe de service de paiement WeChat pour encapsuler les méthodes liées au paiement. L'exemple de code est le suivant :

<?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. Appelez l'interface de paiement
Partout où le paiement WeChat doit être appelé, instanciez la classe du service de paiement WeChat et appelez la méthode correspondante. L'exemple de code est le suivant :

<?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. Configurez le routage
Configurez le routage et liez l'interface de paiement et l'interface de rappel à la méthode de contrôleur correspondante. L'exemple de code est le suivant :

<?php

declare(strict_types=1);

use HyperfHttpServerRouterRouter;

Router::addRoute(['POST'], '/pay', 'App\Controller\PayController@pay');
Router::addRoute(['POST'], '/notify', 'App\Controller\PayController@notify');

Résumé :
Cet article explique comment utiliser le framework Hyperf pour le paiement WeChat et fournit des exemples de code spécifiques. En définissant les paramètres liés au paiement WeChat via le fichier de configuration et en créant une classe de service de paiement WeChat, vous pouvez facilement appeler l'interface de paiement et rappeler les résultats du paiement. J'espère que cet article sera utile aux développeurs qui intègrent WeChat Pay pendant le processus de développement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn