通联宝支付测试
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user