go建行支付异步通知验签处理

关于建行支付的异步通知验签处理

找了很多大佬的文章没看到golang详细的建行支付异步通知得了例子,这里将用go进行示例。

建行给的公钥是16进制公钥,如果拿来使用记得转换成一下。同样的还有sign签名串

func HexToString(hexStr string) string {
   hexBytes, err := hex.DecodeString(hexStr)
   if err != nil {
   	return ""
   }

   return string(hexBytes)
}

代码如下:

func RsaVerifySignWithMd5(originalData, sign, pubKey string) error {

   pubKey = Base64URLDecode(pubKey)
   fmt.Println("pubKey", pubKey)
   public, err := base64.StdEncoding.DecodeString(pubKey)
   if err != nil {
   	fmt.Println("DecodeString")
   	return err
   }
   pub, err := x509.ParsePKIXPublicKey(public)
   if err != nil {
   	fmt.Println("ParsePKIXPublicKey", err)
   	return err
   }
   hash := md5.New()
   hash.Write([]byte(originalData))
   return rsa.VerifyPKCS1v15(pub.(*rsa.PublicKey), crypto.MD5, hash.Sum(nil), []byte(sign))
}

func Base64URLDecode(data string) string {
   var missing = (4 - len(data)%4) % 4
   data += strings.Repeat("=", missing) //字符串长度不足4倍的位补"="
   data = strings.Replace(data, "_", "/", -1)
   data = strings.Replace(data, "-", "+", -1)
   return data
}
func main() {
   publicKey := "你的16进制小写公钥"
   pub := HexToString(publicKey)
   message := "你的验签串(记得将所有非sign参数按照正确的顺序排列)"
   //
   signature := "你的16进制小写签名串"
   //
   sig := HexToString(signature)
   err := RsaVerifySignWithMd5(message, sig, pub)
   fmt.Println(err)
   if err != nil {
   	fmt.Println("Signature verification failed:", err)
   } else {
   	fmt.Println("Signature verified successfully.")
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现建设银行聚合支付生成订单接口,可以按照以下步骤进行: 1. 导入建设银行支付接口开发包。在Java项目中,可以通过使用Maven或Gradle等构建工具,将建设银行支付接口的依赖添加到项目中。 2. 创建一个Java类来处理生成订单的逻辑。可以命名为"CcbPaymentService"或类似的名称。在该类中,可以定义一个方法名为"generateOrder"用于生成订单。 3. 在"generateOrder"方法中,首先要通过建设银行支付接口提供的API,构建生成订单的请求参数。这些参数通常包括商户号、支付金额、订单号、交易描述等。 4. 调用建设银行支付接口的生成订单方法,将构建好的请求参数传递给该方法。可以通过使用Java的网络请求库,如HttpClient或OkHttp,向建设银行支付接口发送POST请求。 5. 接收建设银行支付接口返回的结果,并对结果进行处理。可以通过解析返回的JSON数据,获取生成的订单号或其他相关信息。 6. 返回生成的订单号或其他相关信息给调用方。可以将该信息封装成一个Java对象,方便后续的使用和传递。 7. 在调用方的其他逻辑中,可以使用这个生成的订单号来进行后续的支付流程。 以上是实现建设银行聚合支付生成订单接口的大致步骤。具体的实现细节会根据建设银行支付接口的具体要求而有所不同。在实际开发中,还需要进行异常处理、参数校验、日志记录等工作,以确保代码的健壮性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值