1. 安全要求及报文格式
EVO Cloud Gateway API
  • 网关接入
    • 版本记录
    • 讯联数据网关接口接入指引
      • 安全要求及报文格式
        • 安全要求及报文格式
        • 消息签名
        • 卡信息加密
        • PIN加密
        • 安全要求及报文格式(网联断直连)更新中
        • 消息签名(网联断直连)更新中
      • 线上支付场景
        • 授权
        • 授权完成
        • 再次完成
        • 绑卡
        • 退货
        • 无源退货
        • 撤销
        • 关单
        • 3DS认证
        • Network token 管理
        • 订阅性支付
        • DCC
      • 线下支付场景
        • 支付
        • 预授权
        • 预授权完成
        • 退货
        • 无源退货
        • 撤销
        • 冲正
        • DCC
        • 订阅性支付
      • 附录
        • 应答码
        • 常见问题
        • 万事达卡商户建议代码
    • Online API Specification
      • PaymentMethod
        • PaymentMethod
        • PaymentMethod
        • PaymentMethod
        • PaymentMethod
      • PaymentInstrument
        • PaymentInstrument
        • PaymentInstrument
        • PaymentInstrument
        • PaymentInstrument
      • Payment
        • Payment
        • Payment
        • Payment
      • Cancel
        • Cancel
        • Cancel
      • Capture
        • Capture
        • Capture
      • Refund
        • Refund
        • Refund
      • MerchandiseCredit
        • MerchandiseCredit
        • MerchandiseCredit
      • CancelOrRefund
        • CancelOrRefund
        • CancelOrRefund
      • Cryptogram
        • Cryptogram
        • Cryptogram
      • MultipleCapture
        • MultipleCapture
        • MultipleCapture
      • StandaloneCapture
        • StandaloneCapture
        • StandaloneCapture
      • Recapture
        • Recapture
        • Recapture
      • AsynchronousNotification
        • PaymentMethod 异步通知
        • Payment 异步通知
        • Cancel 异步通知
        • Capture 异步通知
        • Refund 异步通知
        • MerchandiseCredit 异步通知
        • Cryptogram 异步通知
        • MultipleCapture 异步通知
        • StandaloneCapture 异步通知
        • Network Token 更新通知
        • Network Token 认证完成通知
        • Recapture 异步通知
        • PaymentInstrument 异步通知
      • HealthCheck
        • HealthCheck
      • TransactionHistoryInquiry
        • TransactionHistoryInquiry
      • FxRateInquiry
        • FX rate inquiry
        • FX rate inquiry
    • Offline API Specification
      • Payment
        • Payment
        • Payment
      • Cancel
        • Cancel
        • Cancel
      • Capture
        • Capture
        • Capture
      • Refund
        • Refund
        • Refund
      • Reversal
        • Reversal
      • MerchandiseCredit
        • Merchandise Credit
        • Merchandise Credit
      • FxRateInquiry
        • FX rate inquiry
        • FX rate inquiry
      • TipsAdjustment
        • Tips adjustment
        • Tips adjustment
      • StandaloneCapture
        • StandaloneCapture
        • StandaloneCapture
      • MultipleCapture
        • MultipleCapture
        • MultipleCapture
      • ZPK
        • ZPK
      • Notification
        • Payment 异步通知
        • Cancel 异步通知
        • Capture 异步通知
        • Refund 异步通知
        • MerchandiseCredit 异步通知
        • StandaloneCapture 异步通知
        • MultipleCapture 异步通知
  1. 安全要求及报文格式

卡信息加密

EVO Cloud 支持您对请求报文中的卡信息进行加密然后发送,您需要将加密后的卡信息密文放在请求报文中的 encryptedCardInfo 字段。

标准 RSA 加密规则#

EVO Cloud 支持使用标准 RSA 加密算法对卡信息进行加密。

密钥使用规则#

在使用 RSA 算法对卡信息进行加密时,需要用到一对由 EVOCloud 生成的 RSA 密钥对,您将使用公钥进行加密,EVO Cloud 使用私钥进行解密。公钥可以从 EVO Cloud 平台中下载。

第一步:构造待加密字符串#

将请求报文中 cardInfo 结构体整体作为待签名字符串
下面是一个构建完成的待签名字符串的样例
{"cardNumber":"1234123412341234","expiryDate":"0724","cvc":"123","holderName":""}

第二步:加密卡信息#

使用 RSA 算法对第一步中得到的待加密字符串进行加密,填充模式为 PKCS1。
假设公钥为
加密后得到密文为:CvV0wRxQ3W8oSCR0XBe403NClYnUZvVTZXI467jOEuDhRQy57ah4lk3/Kc+eiKjdV0V2wECU4kTF5QDWjdGCQG6ClOJvJv+TgBMVBM8+K4NFsJ3VmT8K/7pkPGCXj8OPz72Lj5ula1EPvkx1ey7qG24THBXOnshCEpQbTy+SX1FB3+0URHdyIqvZ+INvqGey5kuYPLi28loCcAxTFGemA2wTj/eU7yweO9u0HB28/EO5C/IgVTWjAlsdyG66CfGy6We52rZQDiFsIiKLnYVYmGNDJHM4QWC+65BObK8FnFo0zOHBKEZjVQ15e3DBPNvYaRh49gUuka6kONx+167CDw==(每次计算加密结果时密文结果是不同的)

第三步:将密文放入请求报文中#

将报文中的 cardInfoEncryptMethod 设置为您使用的签名算法,将 encryptedCardInfo 设置为第二步中计算得到的签名值,并用 encryptedCardInfo 字段替换 cardInfo 结构体,最终得到最终要发送的报文:
{
    "card": {
        "encryptedCardInfo": "CvV0wRxQ3W8oSCR0XBe403NClYnUZvVTZXI467jOEuDhRQy57ah4lk3/Kc+eiKjdV0V2wECU4kTF5QDWjdGCQG6ClOJvJv+TgBMVBM8+K4NFsJ3VmT8K/7pkPGCXj8OPz72Lj5ula1EPvkx1ey7qG24THBXOnshCEpQbTy+SX1FB3+0URHdyIqvZ+INvqGey5kuYPLi28loCcAxTFGemA2wTj/eU7yweO9u0HB28/EO5C/IgVTWjAlsdyG66CfGy6We52rZQDiFsIiKLnYVYmGNDJHM4QWC+65BObK8FnFo0zOHBKEZjVQ15e3DBPNvYaRh49gUuka6kONx+167CDw==",
        "cardInfoEncryptMethod": "RSA"
    }
}

国密加密规则#

EVO Cloud 支持使用 SM2 加密算法对卡信息进行加密。

密钥使用规则#

在使用国密算法对卡信息进行加密时,需要用到一对由 EVOCloud 生成的 SM2 密钥对,您将使用公钥进行加密,EVO Cloud 使用私钥进行解密。公钥可以从 EVO Cloud 平台中下载。
密钥使用规则收单机构 -> EVO Cloud
加密EVO Cloud 的公钥(EVO Cloud自行生成并线下交互给机构)
验签EVO Cloud 的私钥(EVO CLoud 自行生成并保存)
密钥格式
私钥:64个字符(0-9,A-F),不区分大小写
公钥:128个字符(0-9,A-F),不区分大小写

第一步:构造待加密字符串#

将请求报文中 cardInfo 结构体整体作为待签名字符串
下面是一个构建完成的待签名字符串的样例
{"cardNumber":"1234123412341234","expiryDate":"0724","cvc":"123","holderName":""}

第二步:加密卡信息#

使用 SM2 算法对第一步中得到的待加密字符串进行加密。EVO Cloud 推荐使用 C1C3C2 作为密文顺序,但同时也支持 C1C2C3 密文顺序。
假设
公钥为:04f9364b9c6040d58ce86d773c74dd3acf04195b88081306d56a0698a736c30e5e277d396b380bdd9dfda341e50b9c8ca8f7a98379a824a6df1347cbc7c6f0dfd3
私钥为:59306fbb8e1a612e4d26091c88c346e63fee9d00dc997357a1728a7513257b9c
说明:
公钥开始前两位 04 是一个前缀,用于表示未压缩的椭圆曲线公钥格式。 表示公钥是由完整的 x 和 y 坐标组成的,而不是使用压缩形式。
EVO Cloud 推荐使用 C1C3C2 作为密文顺序,但同时也支持 C1C2C3 密文顺序encryption。
C1C3C2 是 SM2 加密输出的一种标准格式,由三部分组成:
C1:未压缩的随机点 R 的 x 和 y 坐标。
C3:消息的哈希值与随机点 R 的 x 坐标的组合。
C2:对称加密后的消息或消息摘要。
这种格式确保了加密数据的机密性和完整性,并且在解密过程中可以通过 C1 和 C3 验证消息的真实性。如果你在处理 SM2 加密数据时遇到 C1C3C2,它只是表示加密数据的组成部分。
加密后得到 Hex 格式的密文为:e1062939b997da142671a4cf4400add62920f625df42ddb629dbbe89965bbac3f19095e91abbf7f644ab6591b4d9d256902395a294c876b17c9533f685ee615f973d3b2118d5088d04c5f3fc5d56671a3f23b259a377297f1574926e25b28f840d22e3286fbbb3d3f461d648869bb7f8ae9f7a07f2d1e7572ee8afa23153292280d0a6e9d26124ee2329bff2c380f777b98aac3f6339a8d5581f67306c0ca5f3ac4078f36e8e8b3acd5c8057f56c31c0aa(每次计算加密结果时密文结果是不同的)

第三步:将密文放入请求报文中#

将报文中的 cardInfoEncryptMethod 设置为您使用的签名算法,将 encryptedCardInfo 设置为第二步中计算得到的签名值,并用 encryptedCardInfo 字段替换 cardInfo 结构体,最终得到最终要发送的报文:
{
    "card": {
        "encryptedCardInfo": "e1062939b997da142671a4cf4400add62920f625df42ddb629dbbe89965bbac3f19095e91abbf7f644ab6591b4d9d256902395a294c876b17c9533f685ee615f973d3b2118d5088d04c5f3fc5d56671a3f23b259a377297f1574926e25b28f840d22e3286fbbb3d3f461d648869bb7f8ae9f7a07f2d1e7572ee8afa23153292280d0a6e9d26124ee2329bff2c380f777b98aac3f6339a8d5581f67306c0ca5f3ac4078f36e8e8b3acd5c8057f56c31c0aa",
        "cardInfoEncryptMethod": "SM2"
    }
}
上一页
消息签名
下一页
PIN加密
Built with