快速使用
- 添加抖音服务
引用 RsCode.Douyin.dll
servcies.AddDouyin();
- 添加抖音参数配置
douyin.json配置
{
"app": [
{
"appid": "tt6be31d5ef",
"secret": "8ea50e45ac8ea5",
"token": "4NTe3b",
"salt": "4NTe3b5bEvzpN834",
"privateKeyPath": "cert/douyin/privatekey.pem", //应用的私钥
"publicKeyPath": "cert/douyin/publickey.pem" //抖音平台的公钥
}
]
}
项目根目录下,创建cert文件夹,保存公钥与私钥
- 密钥生成
创建应用公钥
应用公钥和私钥的生成方式可参考:
更详细的证书制作过程,查看这篇文章 Cert证书制作教程
windows下制作证书
openssl genrsa -out d:\privatekey.pem 2048
openssl rsa -in d:\privatekey.pem -pubout -out d:\publickey.pem
上传应用公钥
登录「抖音开放平台」,进入小程序的「开发管理-开发设置」页,在「密钥设置」处点击“更新”
在cert文件夹中准备两个证书文件 应用私钥privatekey.pem 和平台公钥publickey.pem
应用私钥privatekey.pem 复制上一步生成的privatekey.pem即可
平台公钥publickey.pem,到抖音平台-某小程序-开发-开发配置,显示的平台公钥中,复制它,保存到publickey.pem中
先生成密钥,再测试上线,不用官方提供的参数,有坑
回调签名算法
支付回调通知开发者服务端时,会使用如下的算法进行签名,供开发者验证请求的来源:
在抖音开放平台-【某小程序】-【功能】-【支付】-【支付产品】-【支付设置】中获取Token, 按照接口文档将所有请求字段(验证时注意不包含 sign 签名本身,不包含空字段与 type 常量字段)内容与平台上配置的 token 一起,进行字典序排序。
所有字段内容连接成一个字符串
使用 sha-1 算法计算字符串摘要作为签名
上述步骤计算出的签名 signature,和支付回调请求体里面的 signature 对比,如果不一致,说明请求不可信任(如被篡改)
抖音开放平台-【某小程序】-【功能】-【支付】-【支付方式管理】-【支付设置】中查看支付系统秘钥 SALT
参数的签名:1排除参数app_id, third_party_id,sign,other_settle_params 不参与签名
2对其它参数的值(如果参数值为null,添加<nil>
)和支付设置中的salt一起进行ascii码排序,
密钥(功能管理-支付-支付设置-SALT)
请求参数中签名是md5签名
回调验签字符例子
{"appid":"tt6be31d5ef4dfda0b01","cp_orderno":"174430247936","cp_extra":"","way":"10","channel_no":"TP2023052621135500973701287530","channel_gateway_no":"","payment_order_no":"DPS2305262113589004661092192889","out_channel_order_no":"TP2023052621135500973701287530","total_amount":100,"status":"SUCCESS","seller_uid":"72370059863623948910","extra":"","item_id":"","paid_at":1685106853,"message":"","order_id":"N7237478737451911458","ec_pay_trade_no":"DTPP2305262113529021149660512889"}
支付自助校验
token salt 担保支付中要使用 使用token验签 使用salt签名
DouyinRequest 中参数名方法 CreateParamSign()
PayNotifyData中验签方法VerifySign()
平台公钥没有用到