riftfox / wechat-session-signature
微信小程序SessionKey加密接口和实现
Installs: 2
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/riftfox/wechat-session-signature
Requires
- riftfox/wechat-session: @dev
This package is auto-updated.
Last update: 2025-10-18 10:58:07 UTC
README
微信小程序会话签名计算模块,提供统一的签名生成接口。
功能特性
- 支持多种签名算法
- 默认提供 HMAC-SHA256 签名实现
- 可扩展的抽象工厂设计模式
- 与 wechat-js-code-to-session 模块无缝集成
安装
composer require riftfox/wechat-session-signature
使用方法
基本用法
use Riftfox\Wechat\SessionSignature\SignatureFactory; use Riftfox\Wechat\Session\Session; // 创建签名工厂 $factory = new SignatureFactory(); // 获取支持的签名方法 $methods = $factory->getSupportedMethods(); foreach ($methods as $method) { echo "支持的签名方法: " . $method . "\n"; } // 创建签名器 $signature = $factory->createSignature(SignatureFactoryInterface::METHOD_HMAC_SHA256); // 计算签名 $session = new Session(); $session->setSessionKey('your-session-key'); $sign = $signature->sign($session);
在 CheckSession 中使用
use Riftfox\Wechat\CheckSession\CheckSessionProvider; use Riftfox\Wechat\SessionSignature\SignatureFactory; $signatureFactory = new SignatureFactory(); $provider = new CheckSessionProvider( $client, $requestFactory, $uriFactory, $resultFactory, $exceptionFactory, $signatureFactory ); $result = $provider->checkSession($application, $session);
接口说明
SignatureFactoryInterface
interface SignatureFactoryInterface { // 支持的签名方法常量 const METHOD_HMAC_SHA256 = 'hmac_sha256'; /** * 创建签名器 */ public function createSignature(string $method): SignatureInterface; /** * 获取支持的签名方法列表 */ public function getSupportedMethods(): array; }
SignatureInterface
interface SignatureInterface { /** * 计算会话签名 */ public function sign(SessionInterface $session): string; /** * 获取签名方法 */ public function getMethod(): string; }
添加新的签名算法
- 创建新的签名实现类:
class NewSignature extends AbstractSignature { protected string $method = 'new_method'; public function sign(SessionInterface $session): string { // 实现新的签名算法 return 'signature'; } }
- 在 SignatureFactory 中注册:
class SignatureFactory implements SignatureFactoryInterface { private array $supportedMethods = [ self::METHOD_HMAC_SHA256, 'new_method' ]; public function createSignature(string $method): SignatureInterface { switch ($method) { case self::METHOD_HMAC_SHA256: return new HmacSha256Signature(); case 'new_method': return new NewSignature(); default: throw new \InvalidArgumentException("Unsupported method: {$method}"); } } }
相关链接
License
MIT