From c21f84511249d05e78475953a91f9b699c253643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 27 Feb 2020 09:31:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E8=81=94=E5=AE=9D=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchase/jx/localjx/tonglianpay.go | 54 +++++++++++++------ 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/business/partner/purchase/jx/localjx/tonglianpay.go b/business/partner/purchase/jx/localjx/tonglianpay.go index af97a053e..4ef385785 100644 --- a/business/partner/purchase/jx/localjx/tonglianpay.go +++ b/business/partner/purchase/jx/localjx/tonglianpay.go @@ -1,12 +1,12 @@ package localjx import ( - "crypto/md5" "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/json" - "io/ioutil" + "encoding/pem" + "os" "time" "git.rosy.net.cn/jx-callback/globals" @@ -47,19 +47,20 @@ func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, vendorPayTyp result, err := api.TLpayAPI.CreateUnitorderOrder(param) result2 := &tonglianpayapi.PayInfo{} json.Unmarshal([]byte(result.PayInfo), &result2) - file, err := ioutil.ReadFile("conf/rsa_key.pem") - if err != nil { - return nil, err - } - prk, err := x509.ParsePKCS1PrivateKey(file) - if err != nil { - return nil, err - } - paySign, err := rsa.DecryptOAEP(md5.New(), rand.Reader, prk, []byte(result2.PaySign), nil) - if err != nil { - return nil, err - } - result2.PaySign = string(paySign) + plainText, err := RSADecrypt([]byte(result2.PaySign)) + // file, err := ioutil.ReadFile("conf/rsa_key.pem") + // if err != nil { + // return nil, err + // } + // prk, err := x509.ParsePKCS1PrivateKey(file) + // if err != nil { + // return nil, err + // } + // paySign, err := rsa.DecryptOAEP(md5.New(), rand.Reader, prk, []byte(result2.PaySign), nil) + // if err != nil { + // return nil, err + // } + result2.PaySign = string(plainText) str, err := json.Marshal(result2) result.PayInfo = string(str) if err == nil { @@ -82,6 +83,29 @@ func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, vendorPayTyp return orderPay, err } +func RSADecrypt(pub []byte) (plainText []byte, err error) { + //打开文件 + file, err := os.Open("conf/rsa_key.pem") + if err != nil { + panic(err) + } + defer file.Close() + //获取文件内容 + info, _ := file.Stat() + buf := make([]byte, info.Size()) + file.Read(buf) + //pem解码 + block, _ := pem.Decode(buf) + //X509解码 + privateKey, err := x509.ParsePKCS1PrivateKey(block.Bytes) + if err != nil { + panic(err) + } + //对密文进行解密 + plainText, err = rsa.DecryptPKCS1v15(rand.Reader, privateKey, pub) + return plainText, err +} + func OnTLPayCallback(msg *wxpayapi.CallbackMsg) (err error) { globals.SugarLogger.Debugf("OnTLPayCallback msg:%s", utils.Format4Output(msg, true)) switch msg.MsgType {