ExWechatpay. VirtualPay. Signature
(ex_wechatpay v0.4.0)
View Source
虚拟支付签名工具模块
提供微信虚拟支付所需的三种 HMAC-SHA256 签名:
- pay_sig: 服务端 API 签名(调用 xpay 接口用)
- client_pay_sig: 客户端签名(返回给前端 wx.requestVirtualPayment)
- user_signature: 用户态签名(用 session_key 计算)
所有签名输出均为 hex 小写字符串。
Summary
Functions
客户端签名(client_pay_sig)
返回给前端,用于 wx.requestVirtualPayment 的 paySig 参数。
参数
app_key- 应用密钥sign_data_str- signData 的 JSON 字符串(必须与前端传给微信的字节一致)
返回值
String.t()- hex 小写签名字符串
注意
签名消息自动包含 "requestVirtualPayment&" 前缀,不可省略。
示例
iex> client_pay_sig("app_key_123", ~s({"offerId":"123",...}))
"d4e5f6..."
服务端 API 签名(pay_sig)
用于调用 xpay 服务端接口(query_user_balance, query_order 等)。
参数
app_key- 应用密钥(根据 env 选择现网或沙箱)path- API 路径,如 "/xpay/query_user_balance"body- 请求体 JSON 字符串
返回值
String.t()- hex 小写签名字符串
示例
iex> pay_sig("app_key_123", "/xpay/query_user_balance", ~s({"openid":"xxx"}))
"a1b2c3d4..."
用户态签名(user_signature)
用 session_key 计算,返回给前端用于 wx.requestVirtualPayment 的 signature 参数。
参数
session_key- 用户 session_key(通过 code2session 获取)sign_data_str- signData 的 JSON 字符串
返回值
String.t()- hex 小写签名字符串
示例
iex> user_signature("session_key_xxx", ~s({"offerId":"123",...}))
"g7h8i9..."