golang版google pay 支付签名验证
//data :purchaseData 订单信息
//sign dataSignature 签名
//publicKey 谷歌公钥 无需加-----
func verifyGoogleSign(data string , sign string,publicKey string) (bool,error) {
decodePublic,err:=base64.StdEncoding.DecodeString(publicKey)
if err!=nil{
return false,err
}
pubInterface ,err:=x509.ParsePKIXPublicKey(decodePublic)
if err!=nil{
return false,err
}
pub:=pubInterface.(*rsa.PublicKey)
decodeSign,err:=base64.StdEncoding.DecodeString(sign)
if err!=nil{
return false,err
}
sh1:=sha1.New()
sh1.Write([]byte(data))
hashData := sh1.Sum(nil)
result := rsa.VerifyPKCS1v15(pub, crypto.SHA1, hashData, decodeSign)
if result!=nil{
return false,err
}
return true,nil
}
网友评论