1. 其他语言的加密签名例子
  • 开放文档介绍
  • 代收
    • 代收下单-印度
    • 代收下单-菲律宾
    • 代收下单-印尼
    • 代收下单-越南
    • 代收下单-虚拟币
    • 代收下单-中国
    • 代收下单-马来西亚
  • 代付
    • 代付下单-印度
    • 代付下单-菲律宾
    • 代付下单-印尼
    • 代付下单-越南
    • 代付下单-虚拟币
    • 代付下单-马来西亚
  • 回调通知
    • 回调说明
    • 代收回调
    • 代付回调
  • 查询接口
    • 代收查询
    • 代付查询
    • 钱包查询
  • 其他语言的加密签名例子
    • Go语言加密签名例子
    • Python加密签名例子
    • PHP加密签名例子
    • Nodejs加密签名例子
    • 环境变量和请求体json的例子
    • Java加密签名例子
  • 其它说明
    • 响应状态说明
    • 订单状态说明
    • 支付方式列表
    • 银行卡列表
    • 收银台 iframe 复制功能支持说明
  1. 其他语言的加密签名例子

PHP加密签名例子

依赖#

使用 PHP 标准库(OpenSSL),无需额外依赖。需要 PHP >= 7.1(支持 GCM 模式)。

完整代码#

使用说明#

1.
签名生成:使用 generateSignature() 静态方法,传入 HTTP 方法、路径、时间戳、随机数和原始 JSON body
2.
请求体加密:使用 encryptBody() 静态方法,传入原始 JSON、App ID 和 apiDataKey
3.
Query 字符串排序:使用 sortQueryString() 静态方法对查询参数排序
4.
生成 Nonce:使用 generateNonce() 静态方法生成随机字符串

注意事项#

签名中的 body 始终使用加密前的原始 JSON 字符串(即使设置了 X-Enc = aes-gcm-v1)
apiDataKey 必须是 Base64 编码的 32 字节密钥
时间戳使用 Unix 毫秒时间戳(13 位数字)
Content-Type:加密时使用 application/octet-stream,明文时使用 application/json
PHP 的 openssl_encrypt() 在 GCM 模式下,$tag 参数会被填充为 16 字节的 authTag
PHP 7.1+ 才支持 GCM 模式的 AAD(关联数据)参数

PHP 版本要求#

PHP >= 7.1(支持 GCM 模式的 AAD 参数)
Modified at 2026-01-12 22:35:33
Previous
Python加密签名例子
Next
Nodejs加密签名例子
Built with