通联宝支付测试

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
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 {