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

dev-main 2025-07-18 10:11 UTC

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;
}

添加新的签名算法

  1. 创建新的签名实现类:
class NewSignature extends AbstractSignature
{
    protected string $method = 'new_method';

    public function sign(SessionInterface $session): string
    {
        // 实现新的签名算法
        return 'signature';
    }
}
  1. 在 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