package lakala import ( "crypto" "crypto/rand" "crypto/rsa" "crypto/sha256" "crypto/x509" "encoding/base64" "encoding/json" "encoding/pem" "fmt" "git.rosy.net.cn/jx-callback/globals" "testing" ) func TestSign(t *testing.T) { api.signParamRSA(nil, LaKaLaPublicKey) } func TestJiami(t *testing.T) { sign, err := signParamRSA2("8000000000001", "1610334026688401311", "1621690412", "123456789012", LaKaLaPrivateKey) globals.SugarLogger.Debugf("---sign := %s", sign) globals.SugarLogger.Debugf("---err := %v", err) } // signParamRSA 支付签名 func signParamRSA2(appId, serialNo, timeStamp, nonceStr, RSAPrivate string) (sign string, err error) { block, _ := pem.Decode([]byte(RSAPrivate)) private, err := x509.ParsePKCS8PrivateKey(block.Bytes) if err != nil { return "", err } // 签名参数 body1, err := json.Marshal(`{"reqData":....此处省略具体报文......}`) sm4Key, _ := base64.StdEncoding.DecodeString(SM4Key) body2, err := SM4ECBEncrypt(body1, sm4Key) if err != nil { return "", err } bodyData := base64.StdEncoding.EncodeToString(body2) context := fmt.Sprintf("%s\n%s\n%s\n%s\n%s\n", appId, serialNo, timeStamp, nonceStr, bodyData) // 进行rsa加密签名 hashed := sha256.Sum256([]byte(context)) signedData, err := rsa.SignPKCS1v15(rand.Reader, private.(*rsa.PrivateKey), crypto.SHA256, hashed[:]) if err != nil { return "", err } signData := base64.StdEncoding.EncodeToString(signedData) authorization := signData // fmt.Sprintf(`LKLAPI-SHA256withRSA appid="%s",serial_no="%s",timestamp="%s",nonce_str="%s",signature="%s"`, a.appID, a.serialNo, timeStamp, nonceStr, signData) return authorization, nil } func TestPayStatusQuery(t *testing.T) { api.PayStatusQuery(&PayStatusQueryReq{ MerchantNo: "822290059430BFA", TermNo: "29034705", OutTradeNo: "FD660E1FAA3A4470933CDEDAE1EC1D8E", TradeNo: "", }) }