74 lines
2.1 KiB
Go
74 lines
2.1 KiB
Go
package lakala
|
|
|
|
import (
|
|
"crypto"
|
|
"crypto/rand"
|
|
"crypto/rsa"
|
|
"crypto/sha256"
|
|
"crypto/x509"
|
|
"encoding/base64"
|
|
"encoding/json"
|
|
"encoding/pem"
|
|
"fmt"
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"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: "",
|
|
})
|
|
}
|
|
|
|
func TestCardBin(t *testing.T) {
|
|
result, err := api.QueryCarBin(GetOrderNumber(8), "1", "4275711234554321")
|
|
globals.SugarLogger.Debugf("result := %s", utils.Format4Output(result, false))
|
|
globals.SugarLogger.Debugf("result := %v", err)
|
|
}
|