Files
baseapi/platformapi/lakala/lakala_pay_test.go
邹宗楠 0b11cd2ec6 1
2025-07-04 10:03:17 +08:00

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)
}