通联宝支付测试

This commit is contained in:
苏尹岚
2020-02-27 09:31:12 +08:00
parent 71bccc687b
commit c21f845112

View File

@@ -1,12 +1,12 @@
package localjx package localjx
import ( import (
"crypto/md5"
"crypto/rand" "crypto/rand"
"crypto/rsa" "crypto/rsa"
"crypto/x509" "crypto/x509"
"encoding/json" "encoding/json"
"io/ioutil" "encoding/pem"
"os"
"time" "time"
"git.rosy.net.cn/jx-callback/globals" "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) result, err := api.TLpayAPI.CreateUnitorderOrder(param)
result2 := &tonglianpayapi.PayInfo{} result2 := &tonglianpayapi.PayInfo{}
json.Unmarshal([]byte(result.PayInfo), &result2) json.Unmarshal([]byte(result.PayInfo), &result2)
file, err := ioutil.ReadFile("conf/rsa_key.pem") plainText, err := RSADecrypt([]byte(result2.PaySign))
if err != nil { // file, err := ioutil.ReadFile("conf/rsa_key.pem")
return nil, err // if err != nil {
} // return nil, err
prk, err := x509.ParsePKCS1PrivateKey(file) // }
if err != nil { // prk, err := x509.ParsePKCS1PrivateKey(file)
return nil, err // if err != nil {
} // return nil, err
paySign, err := rsa.DecryptOAEP(md5.New(), rand.Reader, prk, []byte(result2.PaySign), nil) // }
if err != nil { // paySign, err := rsa.DecryptOAEP(md5.New(), rand.Reader, prk, []byte(result2.PaySign), nil)
return nil, err // if err != nil {
} // return nil, err
result2.PaySign = string(paySign) // }
result2.PaySign = string(plainText)
str, err := json.Marshal(result2) str, err := json.Marshal(result2)
result.PayInfo = string(str) result.PayInfo = string(str)
if err == nil { if err == nil {
@@ -82,6 +83,29 @@ func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, vendorPayTyp
return orderPay, err 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) { func OnTLPayCallback(msg *wxpayapi.CallbackMsg) (err error) {
globals.SugarLogger.Debugf("OnTLPayCallback msg:%s", utils.Format4Output(msg, true)) globals.SugarLogger.Debugf("OnTLPayCallback msg:%s", utils.Format4Output(msg, true))
switch msg.MsgType { switch msg.MsgType {