示例

- 商户在微信小程序内指定走H5收银台需要对接2个邀请制接口能力,并且需要提供商户号进行加白
- 【邀请制接口能力】手机号传输
- 【邀请制接口能力】指定走H5收银台
- 另外,受微信小程序限制,商户必须在微信小程序管理后台配置业务域名:
- 添加列表:需添加 cashier.douyinpay.com、cashier.ulpay.com payscore.doupay.com抖音支付相关域名。
- 校验文件:商户需下载微信提供的校验文件,并由抖音支付研发协助放置在对应域名根目录下
手机号传输
新增参数传递:
- attach
- login_mobile_number,RSA加密的手机号
- login_mobile_number_mask,掩码手机号,例如 186****2752
- cert_seq_no,平台证书序列号。详细信息参考以下说明第2点。
// attach字段是一个Json字符串
“attach”:”{"cert_seq_no":"763CC8F6xxxxxxx","login_mobile_number_mask":"186****2752","login_mobile_number":"Y0LAN1JrGchk+5hX+OXurG72TOVwVveJ8qCLWKi/V1FRP3SGFxLaz5OosrJn/vKAS2Qy/2PmI/ONl5i2EBCMjps0ThJ7u1ww7nQFLBzRVLKwkKIGj+kJeaV9YwOmGQp95lWqe0ctzCIoTiew3pGcPBz7TzoQevYu27kCAxHyls0LOJ92FGr3z0cuRVA7c/rOUfYMuqJh8HtNiOzuw2tLmzAz96An/jzC5601VpHIFJIEfUatDuw74kAaQjrgxlgp4TJxmU77vUszL+tQD9pGO4zI2OU9SHmwR/11SF678Pz0ReeanD12ug4SneB+xl+BoYaVf4WrzGdU8iQAGPKohA=="}”
以下为参考示例:
为了保证通信过程中敏感信息字段的机密性,抖音支付API 要求商户对上送的敏感信息字段进行加密。下面详细介绍加密的方式,以及如何进行相应的计算。
- 加密算法
敏感信息加密使用的RSA公钥加密算法 (opens new window)。加密算法使用的填充方案,我们使用了EncryptPKCS1v15。
EncryptPKCS1v15在各个编程语言中的模式值为:
- OpenSSL (opens new window),padding设置为RSA_PKCS1_PADDING
- Java,使用Cipher.getinstance(RSA/ECB/PKCS1Padding)
- PHP (opens new window),padding设置为OPENSSL_PKCS1_PADDING
- .NET (opens new window),fOAEP设置为false
- Node.js (opens new window),padding设置为crypto.constants.RSA_PKCS1_PADDING
- GO (opens new window),使用 EncryptPKCS1v15
开发者应当使用抖音支付平台证书中的公钥,对上送的敏感信息进行加密。这样只有拥有私钥的抖音支付才能对密文进行解密,从而保证了信息的机密性。
- 声明加密使用的平台证书
某些情况下,抖音支付会更新平台证书。这时,商户有多个抖音支付平台证书可以用于加密。为了保证解密顺利,商户发起请求的HTTP头部中应包括证书序列号,以声明加密所用的密钥对和证书。
- 商户上送敏感信息时使用抖音支付平台证书公钥加密,证书序列号包含在请求HTTP头部的Douyinpay-Serial
加密示例
开发者应当使用抖音支付平台证书中的公钥,对上送的敏感信息进行加密。
大部分编程语言支持RSA公钥加密。你可以参考示例,了解如何使用您的编程语言实现敏感信息加密。
func TestCheckSm2CertFormatWithPwd(t *testing.T) {// 加载证书 raw, err := ioutil.ReadFile("./abce.pem") t.Log(err) // 解析 block, rest := pem.Decode(raw) fmt.Println(rest) pubInterface, err := x509.ParseCertificate(block.Bytes) // 类型断言转换为*rsa.PublicKey pubKey, ok := pubInterface.PublicKey.(*rsa.PublicKey) if !ok { fmt.Println("1212") } needSecretMessage := []byte("send reinforcements, we're going to advance") s, err := rsa.EncryptPKCS1v15(rand.Reader, pubKey, needSecretMessage) // base64 编码 secretmsg: =base64.StdEncoding.EncodeToString(s) // 完成加密 t.Log(secretmsg)
}
指定走H5收银台
商户需要做以下步骤:
- 商户H5预下单的时候attach字段带参数return_invoke_url_type:h5_cashier,则返回指定H5收银台
// attach字段是一个Json字符串
“attach”: “{"return_invoke_url_type":"h5_cashier"}” - 商户H5调起支付的时候在H5_URL后面拼接参数,指定本次支付仅走H5收银台
https://cashier.ulpay.com/bytepay-cashdesk/bytepay-invoke?prepay_id=dy9pvo8xyxpyop7u7t735u5s41527t5t8uytv101rs5t477vy989q7q5&origin_host=https%253A%252F%252Fwww.douyin.com&return_url=https%3A%2F%2Fwww.douyin.com
需要拼接: return_url=https%3A%2F%2Fwww.douyin.com&invoke_mode=h5
商户小程序需要给抖音支付的域名加白 - 需在小程序后台配置抖音支付业务域名,入口小程序管理后台-开发管理-开发设置-业务域名,需要添加以下链接域名: