tencent cloud

腾讯云超级应用服务

签名以及验签

PDF
聚焦模式
字号
最后更新时间: 2025-12-05 22:40:21

虚拟支付请求验签名算法说明

pay_sig 参数的签名算法,使用 superapp 获取的appKey对支付的请求进行签名,代表请求经过开发者服务端的支付模块发起。签名算法伪代码为:
paySig = to_hex(hmac_sha256(appKey,method + '&' + signData))
import hmac
import hashlib
import urllib.parse

# sign_data 支付原串 注意这里sign_data需要和前端请求参数保持一致,原格式传递(包括空格和回车),建议后台下发,
# appKey
# method
def gen_pay_sig(sign_data, appkey, method):
need_encode_body = method + '&' + sign_data
print(need_encode_body)
return hmac.new(key=appkey.encode('utf-8'), msg=need_encode_body.encode('utf-8'),
digestmod=hashlib.sha256).hexdigest()

虚拟支付回调签名

pay_event_sig 参数的签名算法,使用 superapp 中的虚拟支付秘钥对支付的请求进行签名,代表请求是经过superapp平台发起。签名算法伪代码为:
pay_event_sig = to_hex(hmac_sha256(app_key, event + '&' + payload))
可以参考以下 python 示例中的calc_pay_event_sig实现,其中:
●event 为推送的事件类型
●app_key 为 superapp 配置的虚拟支付秘钥。
●payload 为本次推送的数据,对应 minigame 结构内的 payload,参考具体推送的请求参数说明。

#!/usr/bin/python
# -*- coding: utf-8 -*-
""" PayEventSig签名算法计算示例 """
import hmac
import hashlib
def calc_pay_event_sig(event, payload, app_key):
""" pay_event_sig签名算法
Args:
event - 事件类型 创建订单传入event
payload - 事件对应包体,通知消息中的payload 例如{"OpenId":"to_user_openid","OutTradeNo":"xxxxxxx","WeChatPayInfo":{"MchOrderNo":"xxxxxxx","TransactionId":"xxxxxxx"},"Env":0,"CoinInfo":{"ZoneId":"1","TotalPrice":100,"BuyQuantity":1,"OrigPrice":100}}
app_key - superapp配置的虚拟支付秘钥
Returns:
支付请求签名pay_event_sig
"""
need_sign_msg = event + '&' + payload
pay_sig = hmac.new(key=appkey.encode('utf-8'), msg=need_sign_msg.encode('utf-8'),
digestmod=hashlib.sha256).hexdigest()
return pay_sig

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈