示例

  • 商户在微信小程序内指定走H5收银台需要对接2个邀请制接口能力,并且需要提供商户号进行加白
    1. 【邀请制接口能力】手机号传输
    2. 【邀请制接口能力】指定走H5收银台
  • 另外,受微信小程序限制,商户必须在微信小程序管理后台配置业务域名:
    1. 添加列表:需添加 cashier.douyinpay.com、cashier.ulpay.com payscore.doupay.com抖音支付相关域名。
    2. 校验文件:商户需下载微信提供的校验文件,并由抖音支付研发协助放置在对应域名根目录下

手机号传输

新增参数传递:

  • 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 要求商户对上送的敏感信息字段进行加密。下面详细介绍加密的方式,以及如何进行相应的计算。
  1. 加密算法
    敏感信息加密使用的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
    开发者应当使用抖音支付平台证书中的公钥,对上送的敏感信息进行加密。这样只有拥有私钥的抖音支付才能对密文进行解密,从而保证了信息的机密性。
  1. 声明加密使用的平台证书
    某些情况下,抖音支付会更新平台证书。这时,商户有多个抖音支付平台证书可以用于加密。为了保证解密顺利,商户发起请求的HTTP头部中应包括证书序列号,以声明加密所用的密钥对和证书。
  • 商户上送敏感信息时使用抖音支付平台证书公钥加密,证书序列号包含在请求HTTP头部的Douyinpay-Serial
  1. 加密示例
    开发者应当使用抖音支付平台证书中的公钥,对上送的敏感信息进行加密。
    大部分编程语言支持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收银台

商户需要做以下步骤: