国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman中使用easywechat6需要注意的問題

彭彭
Webman是基于Workerman開發(fā)的高性能HTTP服務框架,具有高穩(wěn)定性、超高性能、高復用性、高擴展性等特點。它支持自定義進程,并復用Composer生態(tài)中的組件和類庫,使得開發(fā)變得更加簡單和高效。而EasyWeChat是一個開源的、簡潔而強大的微信非官方SDK,從 6.x 起 SDK 中不再內置具體業(yè)務的接口,僅封裝底層基礎部分,如認證、授權和 API 客戶端。在Webman中使用EasyWeChat可以幫助開發(fā)者快速接入微信功能,如公眾號、小程序等。然而,在這個過程中,有一些需要注意的問題,以確保項目的順利進行。以下是在Webman中使用EasyWeChat時需要注意的一些問題:
  • EasyWeChat環(huán)境需求:EasyWeChat要求PHP版本不低于8.0,并需要安裝cURL、OpenSSL、SimpleXML和fileinfo等擴展。這確保了EasyWeChat在Webman環(huán)境中的兼容性和功能性。

  • 初始化EasyWeChat:使用EasyWeChat時,通過傳入配置信息來初始化一個模塊實例。這包括AppID、AppSecret、Token等敏感信息。在Webman中,需要確保這些配置信息的安全存儲和管理。比如常用的:

在webman中使用easywechat6服務端消息時,需要把webman的請求轉為easywechat6版本中使用的SymfonyRequest請求,當然想要在這里替換緩存的也可以根據(jù)實際需求替換,如果是多臺服務器的一定要使用統(tǒng)一的redis緩存來緩存基礎的token:

<?php
namespace app\controller;

use Symfony\Component\Cache\Adapter\RedisAdapter;
use Symfony\Component\Cache\Psr16Cache;
use EasyWeChat\OfficialAccount\Application;
use support\Request;
use Symfony\Component\HttpFoundation\HeaderBag;
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;

// 授權事件回調地址:http://easywechat.com/OfficialAccount/server

class OfficialAccount
{
    public function server(Request $request)
    {
        $config = config('wechatv6.official_account');
        $app = new Application($config);
        $symfony_request = new SymfonyRequest($request->get(), $request->post(), [], $request->cookie(), [], [], $request->rawBody());
        $symfony_request->headers = new HeaderBag($request->header());
        $app->setRequestFromSymfonyRequest($symfony_request);
        //$app->setCache(new Psr16Cache(new RedisAdapter(Redis::connection()->client())));//需要在redis配置中加上相關信息
        $server = $app->getServer();
        $response = $server->serve();

        return response($response->getBody()->getContents(), $response->getStatusCode(), $response->getHeaders());
    }
}

在Thinkphp或者laravel等框架的模板中使用微信JSSDK,其中變量$app需要后臺assign到前端,下面以thinkphp為例:

<script src="https://res2.wx.qq.com/open/js/jweixin-1.4.0.js" type="text/javascript" charset="utf-8"></script>
<script>
    wx.config(<?php echo json_encode($app->getUtils()->buildJsSdkConfig('https://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],['hideAllNonBaseMenuItem','hideMenuItems'],[], false)); ?>);
    wx.ready(function () {
        wx.hideAllNonBaseMenuItem();
        wx.hideMenuItems({
            menuList: ['menuItem:share:appMessage', 'menuItem:share:timeline', 'menuItem:copyUrl', 'menuItem:originPage'] // 要隱藏的菜單項,只能隱藏“傳播類”和“保護類”按鈕,所有menu項見附錄3
        });
    })
</script>

easywechat6是在6.11版本(含)后才加入消息驗簽,按官方說法,建議在拿到微信接口響應和接收到微信支付的回調通知時,對通知的簽名進行驗證,以確保通知是微信支付發(fā)送的,推送消息的驗簽:

$server = $app->getServer();

$server->handlePaid(function (Message $message, \Closure $next) use ($app) {
    // $message->out_trade_no 獲取商戶訂單號
    // $message->payer['openid'] 獲取支付者 openid

    try{
        $app->getValidator()->validate($app->getRequest());
       // 驗證通過,業(yè)務處理
    } catch(Exception $e){
      // 驗證失敗
    }

    return $next($message);
});

// 默認返回 ['code' => 'SUCCESS', 'message' => '成功']
return $server->serve();

api返回值的驗簽:

// API 請求示例
$response = $app->getClient()->postJson("v3/pay/transactions/jsapi", [...]);

try{
    $app->getValidator()->validate($response->toPsrResponse());
   // 驗證通過
} catch(Exception $e){
  // 驗證失敗
}
  • 時區(qū)問題:在使用EasyWeChat進行微信支付等操作時,可能會遇到時區(qū)不正確的問題。確保服務器上的時區(qū)設置正確,對于某些服務器,可能需要修改時區(qū)設置。

  • SSL證書問題:在調用微信支付等敏感操作接口時,可能會出現(xiàn)SSL證書問題。這要求服務器正確安裝了CA證書,并確保使用的SSL協(xié)議版本兼容。

  • 支付授權目錄配置:微信支付授權目錄未正確配置可能導致支付失敗。開發(fā)者需要登錄微信公眾平臺,進入開發(fā)設置正確配置支付授權目錄。這包括目錄的URL、域名ICP備案等。

  • 異常處理和日志記錄:在Webman中使用EasyWeChat時,確保正確處理任何可能出現(xiàn)的異常情況,并記錄相關操作的日志,以便于問題追蹤和調試。

  • 參與社區(qū)和文檔:由于Webman和EasyWeChat都是開源項目,積極參與社區(qū)討論,查閱官方文檔和最佳實踐,可以幫助解決使用過程中遇到的問題。

總之,在Webman中集成和使用EasyWeChat時,需要綜合考慮框架特性、環(huán)境配置、初始化設置、安全性、性能優(yōu)化以及社區(qū)支持等多方面因素。通過妥善處理這些問題,可以確保EasyWeChat在Webman中的順利使用,為微信應用開發(fā)提供強大支持。
3374 7 8
7個評論

567

非常感謝正好需要

zjkal?

說實話, 6真不如5好用

  • 彭彭 2024-04-30

    其實是一樣的,6封裝了底層的加密驗簽請求等,需要你更了解微信官方的相關文檔,5是針對功能封裝好的。6對easywechat作者升級更友好,微信sdk加了一個功能接口,5需要針對該功能重新封裝,而6不需要,因為底層的加解密驗簽和請求不變。

積極廢人

給大佬點贊,
非fpm模式,需要自己處理request的兼容性問題

nbyang

開啟了控制器復用這樣使用的話會不會有什么問題?
$app = Wxapp::get();
$server = $app->getServer();
$response = $server->serve();

<?php

namespace support;

use EasyWeChat\MiniApp\Application;

class Wxapp
{
    public static ?Application $wx_app = null;

    public static function get(): Application
    {
        if (self::$wx_app === null) {
            $config = [
                'app_id' => getenv('WXAPP_ID'),
                'secret' => getenv('WXAPP_SECRET'),
                'token' => getenv('WXAPP_TOKEN'),
                'aes_key' => getenv('WXAPP_AES_KEY'),
                'http' => [
                    'throw' => false,
                    'timeout' => 5.0,
                    'retry' => false,
                ],
            ];
            self::$wx_app = new Application($config);
        }

        return self::$wx_app;
    }
}
  • 彭彭 2024-12-02

    看easywchat6源碼,代碼部分復用應該會有問題,因為源碼里面,不管是$app->getServer()獲取到的server,還是Server實例化時依賴的$this->getRequest()獲取到的服務端請求,都是判斷了有實例化對象就用之前的對象,還有通過Application獲取的客戶端請求也是一樣,所以不建議,拿到Application的時候,同步應該設置好里面的服務端請求和緩存對像等。本文章中的示例用法打開控制器復用應該沒有問題的

efnic

直接 composer安裝一個包即可
composer require ledc/easywechat

  • xpwsgg 2024-12-04

    我剛說來個人封裝一下easywechat ,。。

  • toooooop 2024-12-19

    高手

張文遠

easywechat6 我看了下,大致跟微信官方的V3版本SDK很像,都封裝好了簽名等信息,我使用微信官方SDK簡單封裝了一個拓展,其實常用的也就支付、獲取用戶信息、退款等功能

  • 彭彭 2025-01-10

    微信支付有官方推薦的sdk,但是公眾號,小程序,企業(yè)微信這些官方是沒有sdk的呀!

  • efnic 2025-01-10

    composer require ledc/easywechat

andyzu

easywechat 的文檔是出了名的不友好

  • 暫無評論

彭彭

-150
積分
0
獲贊數(shù)
0
粉絲數(shù)
2023-06-06 加入
??