Commit 021ae594 authored by wangp's avatar wangp

lakala

parent 1f52298a
......@@ -177,3 +177,35 @@ func InsertPayBillDetailNoticeResponseBody(tx *sql.Tx, billID int64, noticeRespo
return nil
}
// BillPayStateSuccess is 微信回调后 把订单状态 置为结算成功
func BillPayStateSuccess(tx *sql.Tx, billID int64) error {
insertPayBillDetailSQL := `update system_pay_bill set result_code = 1 where id = ?`
result, err := tx.Exec(insertPayBillDetailSQL, billID)
if err != nil {
return err
}
_, err = result.RowsAffected()
if err != nil {
return err
}
return nil
}
// BillPayStateFail is 微信回调后 把订单状态 置为结算失败
//func BillPayStateFail(tx *sql.Tx, billID int64) error {
//
// insertPayBillDetailSQL := `update system_pay_bill set result_code = 2 where id = ?`
// result, err := tx.Exec(insertPayBillDetailSQL, billID)
// if err != nil {
// return err
// }
//
// _, err = result.RowsAffected()
// if err != nil {
// return err
// }
// return nil
//}
......@@ -38,8 +38,6 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
orderID := GetUID()
//beego.Info("AttachInfo: ", input.AttachInfo)
attachMap := make(map[string]interface{}, 0)
attachMap["store_sn"] = input.StoreSn
attachMap["old_attach"] = input.AttachInfo
......@@ -99,27 +97,15 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
// 构造回调url
input.NoticeURL = GetNoticeURL(input.SourceCode)
// 传递给支付渠道的
//p.ServeNoticeUrl = noticeURLx
data2 := make(map[string]interface{})
//data2["merchant_no"] = "8221210701101SB"
//data2["merchant_no"] = "8222900581201QB"
if input.SourceCode==4 || input.SourceCode==6 {
data2["merchant_no"] = merchant_no1 //微信H5、支付宝H5
} else {
data2["merchant_no"] = merchant_no2 //微信扫码、支付宝扫码
}
//data2["term_no"] = "29034705" //不需要传?
//data2["total_amount"] = "1"
data2["total_amount"] = input.GoodsPrice*100
//data2["out_trade_no"] = orderID //随机生成的订单号 //商户交易流水号
//data2["out_trade_no"] = RandomString(32)
data2["out_order_no"] = orderID //随机生成的订单号 //商户订单号
//data2["out_order_no"] = RandomString(32)
//data2["out_trade_no"] = input.AttachInfo
//data2["out_order_no"] = input.AttachInfo
if input.SourceCode==15 {
//快捷支付
......@@ -151,16 +137,10 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
// 构造回调url
input.NoticeURL = GetNoticeURL(input.SourceCode)
// 传递给支付渠道的
//p.ServeNoticeUrl = noticeURL
data2 := make(map[string]interface{})
//data2["merchant_no"] = "8222900701107M5"
//data2["term_no"] = "A1062976"
//data2["merchant_no"] = "8221210701101SB"
data2["merchant_no"] = merchant_no3
data2["term_no"] = term_no3
//tempMoney, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", p.GoodsPrice*100), 64)
data2["total_amount"] = input.GoodsPrice*100
data2["out_trade_no"] = orderID //随机生成的订单号 //商户交易流水号
......@@ -171,7 +151,6 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
//data2["goods_mark"] = input.AttachInfo //商品信息标识 (1:含商品信息,不填默认不含商品信息)
//微信JSAPI、微信小程序
//data2["counter_param"] = "{\"pay_mode\":\"WECHAT\"}"
data2["account_type"] = "WECHAT" //钱包类型
if input.SourceCode==2 {
data2["trans_type"] = "71" //接入方式:微信小程序
......@@ -187,8 +166,6 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
//地址位置信息
data4 := make(map[string]interface{})
//data4["open_id"] = input.OpenID //此参数 支付类型是 JS API 的时候 必传
data4["sub_appid"] = input.AppID //子商户公众账号ID
data4["user_id"] = input.OpenID //用户标识
......@@ -210,10 +187,7 @@ func UnifiedOrder(input *models.PlaceAnOrderParamInput, ip string) (interface{},
data2 := make(map[string]interface{})
data2["merchant_no"] = merchant_no4
data2["term_no"] = term_no4
//data2["merchant_no"] = "8222900581201QB"
//data2["term_no"] = "D0027598"
data2["out_trade_no"] = orderID //随机生成的订单号 //商户交易流水号
//data2["out_trade_no"] = RandomString(32)
//扫码支付授权码,设备读取用户APP中的条码或者二维码信息,用户付款码条形码规则见说明
//data2["auth_code"] = "135178236713755038"
data2["auth_code"] = input.DynamicID
......@@ -365,20 +339,6 @@ func getAuthorization(platform_type uint8, body string) (string, error) {
message := appid + "\n" + mchSerialNo + "\n" + timestamp + "\n" + nonceStr + "\n" + body + "\n";
//测试
//privateRaw := "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDvDBZyHUDndAGx\nrIcsCV2njhNO3vCEZotTaWYSYwtDvkcAb1EjsBFabXZaKigpqFXk5XXNI3NIHP9M\n8XKzIgGvc65NpLAfRjVql8JiTvLyYd1gIUcOXMInabu+oX7dQSI1mS8XzqaoVRhD\nZQWhXcJW9bxMulgnzvk0Ggw07AjGF7si+hP/Va8SJmN7EJwfQq6TpSxR+WdIHpbW\ndhZ+NHwitnQwAJTLBFvfk28INM39G7XOsXdVLfsooFdglVTOHpNuRiQAj9gShCCN\nrpGsNQxDiJIxE43qRsNsRwigyo6DPJk/klgDJa417E2wgP8VrwiXparO4FMzOGK1\n5quuoD7DAgMBAAECggEBANhmWOt1EAx3OBFf3f4/fEjylQgRSiqRqg8Ymw6KGuh4\nmE4Md6eW/B6geUOmZjVP7nIIR1wte28M0REWgn8nid8LGf+v1sB5DmIwgAf+8G/7\nqCwd8/VMg3aqgQtRp0ckb5OV2Mv0h2pbnltkWHR8LDIMwymyh5uCApbn/aTrCAZK\nNXcPOyAn9tM8Bu3FHk3Pf24Er3SN+bnGxgpzDrFjsDSHjDFT9UMIc2WdA3tuMv9X\n3DDn0bRCsHnsIw3WrwY6HQ8mumdbURk+2Ey3eRFfMYxyS96kOgBC2hqZOlDwVPAK\nTPtS4hoq+cQ0sRaJQ4T0UALJrBVHa+EESgRaTvrXqAECgYEA+WKmy9hcvp6IWZlk\n9Q1JZ+dgIVxrO65zylK2FnD1/vcTx2JMn73WKtQb6vdvTuk+Ruv9hY9PEsf7S8gH\nSTTmzHOUgo5x0F8yCxXFnfji2juoUnDdpkjtQK5KySDcpQb5kcCJWEVi9v+zObM0\nZr1Nu5/NreE8EqUl3+7MtHOu1TMCgYEA9WM9P6m4frHPW7h4gs/GISA9LuOdtjLv\nAtgCK4cW2mhtGNAMttD8zOBQrRuafcbFAyU9de6nhGwetOhkW9YSV+xRNa7HWTeI\nRgXJuJBrluq5e1QGTIwZU/GujpNaR4Qiu0B8TodM/FME7htsyxjmCwEfT6SDYlke\nMzTbMa9Q0DECgYBqsR/2+dvD2YMwAgZFKKgNAdoIq8dcwyfamUQ5mZ5EtGQL2yw4\n8zibHh/LiIxgUD1Kjk/qQgNsX45NP4iOc0mCkrgomtRqdy+rumbPTNmQ0BEVJCBP\nscd+8pIgNiTvnWpMRvj7gMP0NDTzLI3wnnCRIq8WAtR2jZ0Ejt+ZHBziLQKBgQDi\nbEe/zqNmhDuJrpXEXmO7fTv3YB/OVwEj5p1Z/LSho2nHU3Hn3r7lbLYEhUvwctCn\nLl2fzC7Wic1rsGOqOcWDS5NDrZpUQGGF+yE/JEOiZcPwgH+vcjaMtp0TAfRzuQEz\nNzV8YGwxB4mtC7E/ViIuVULHAk4ZGZI8PbFkDxjKgQKBgG8jEuLTI1tsP3kyaF3j\nAylnw7SkBc4gfe9knsYlw44YlrDSKr8AOp/zSgwvMYvqT+fygaJ3yf9uIBdrIilq\nCHKXccZ9uA/bT5JfIi6jbg3EoE9YhB0+1aGAS1O2dBvUiD8tJ+BjAT4OB0UDpmM6\nQsFLQgFyXgvDnzr/o+hQJelW"
//线上
//privateRaw := "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCrBLPTvXAWDc4I\nM3Loqc267lycWpFNkL3fW6yCNPtZ0TwNx/0bGyVXxegmSIEPJ8smBeJJdvVw5AN9\nTaFf7L8gV5n2PG+1IGxkou18dQJ+jw0X0ezt6AMWFIM+L5eWMnFx7MaSeuq3TwEi\nnEeT5toCGrgu3cDouOB3GGc1hpMXmLL5lkkWrZpVff2uRqWAyqCidrNXU9ghLo7G\naryA0PnSy+R9gQfWC3WuHzmdo7jsS7Xts+VM97yL4P8v+JWYErW++rXkw9e4HNes\nvQieC30S3WclzaJlCp5PhX6oq7gTZYVe2RVTtfuvg+OxZ4mCx59cmLZV8MELi/Pi\ncdELpABVAgMBAAECggEAAQExEUBepTKFkFTFCwrcU4nM73o0ulDsXKCMPeOTym5J\nPQd8vCkHqiFWgMsSPwWL0vhb4PSa8oPUZWsMVKTuZoE9PU4TlevP1zOB06ZYUmgC\nuq4YBznCsuGB996NtGstcW7jp76jHFqRdiOW5A6KH1MK2/Ofi35yiyCQkqbsvEm9\n3+oNwcbLSexDiU45tiwRDy7m2siikZpaxb4SV5JMtO27zXKFQGlVAtb52kHTMwvT\nNqrg2wIohhs2pHbImJMhDrVukFuW3UL1F2CIbpgZG36Lpy3oxCHtCNm6mggpy4Pe\n+rgPW3ZPGoTZaiaqbEeem+hG/w9UylKZZV2B+AhFQQKBgQDwnx9eDUryMi58a5AG\nkA5vwtCqYaX4veIjTFm5b70n0vw0h11Sn/YPryx8jc0bb+acekNTUmXjbRZzpGmn\nMFiP77v+zxfakqwSEEDgsJBHU+HZ3m6p/ejEMX/mQOdDUrwqm6Y7UmMMDsz4b9BZ\n7o0etiHgPKPvni6+D3LWImDwxQKBgQC18shCQYnYM5EHMunPN12dwcCbdFsvr9Eo\nQPxXwDGOsGQliOAVrA3NnIvg0DgOnEuov9ieBd1L+mT6I4uRE3aRowislecFOYHT\nWj3HbXYWw94yXZrZyb9UnS6FSAG+xjP/RiooHs2Sprrz5nDnIylJxnTn0+3U+2a0\n2bWddhGqUQKBgD0Ow7DkAp6OqUkdKkDgESm+76AsgycpV9bJKwNpHUCbwy+5Ia8z\ntAaq1skMWn2Z2ZTfWXItOHmLVuUlVUH9fJuZo8S23EC0c0FqKmxZoWLYIDlevgoY\nyhXu0Zul4Iku11ygfoATGdsXbl+kT+RiKiEe6l2yRY8qPoYv+V3o/1xZAoGATbxM\nkwItQpHFhK3b9wxQkvYUtFYiH12envQk29jhU3VJVEAGfTvlKdOYb5SGXreoG5Db\nm6glxDBWtAg7uN/36IEfU5039qN7NDF585pwuYk1hY84eZQYiq4dEhSRqlBEJuxz\nVnDSo7VYapwp4JbFLR/9Eo8ZLcW7O8lILt4i7gECgYAubzT3SDYf5BlxQzzdVHhd\nXY43f6SHCOsdE/7voyJCiQKwcJefkYJD/puvf1bHsfb5gsH4nyou0djKt4SM1SpE\nSVdmIKIjKGFNiqFSbCEKI6s6UTfa4bIhx8ZbqjM6YWVmZFGzF00CP8qYZJgpA4Rr\nX593bU9XLvgypO98+uFcDA=="
//signature, err := Sha256WithRsa(privateRaw, message)
//if err != nil {
// return signature, err
//}
//fmt.Println(777)
//fmt.Println(signature)
//fmt.Println("签名1:", signature)
var path_private_key string //私钥文件地址
//平台类型 1:saas 2:shop 3:shop mobile 4:收银台 6:bk_shop 7:bk_shop_mobile
if platform_type==2 || platform_type==3 {
......@@ -408,132 +368,65 @@ func getAuthorization(platform_type uint8, body string) (string, error) {
return authorization, nil
}
//func Sha256WithRsa(privateRaw string, msg string) (string, error) {
// privateRaw = strings.Trim(privateRaw, "\n")
// if !strings.HasPrefix(privateRaw, "-----BEGIN RSA PRIVATE KEY-----") {
// privateRaw = fmt.Sprintf("%s\n%s\n%s", "-----BEGIN RSA PRIVATE KEY-----", privateRaw, "-----END RSA PRIVATE KEY-----")
// }
// //fmt.Println(privateRaw)
// blockPri, _ := pem.Decode([]byte(privateRaw))
// if blockPri == nil {
// return "", fmt.Errorf("blockPri is nil")
// }
//
// rsaPri, e := genPriKey(blockPri.Bytes, PKCS8)
// if e != nil {
// panic(e)
// }
//
// h := sha256.New()
// h.Write([]byte(msg))
// d := h.Sum(nil)
//
// signature, err := rsa.SignPKCS1v15(rand.Reader, rsaPri, crypto.SHA256, d)
// if err != nil {
// //return "", errorx.Wrap(err)
// return "", err
// }
// encodedSig := base64.StdEncoding.EncodeToString(signature)
// return encodedSig, nil
//}
//const (
// PKCS1 int64 = iota
// PKCS8
//)
//
//func genPriKey(privateKey []byte, privateKeyType int64) (*rsa.PrivateKey, error) {
// var priKey *rsa.PrivateKey
// var err error
// switch privateKeyType {
// case PKCS1:
// {
// priKey, err = x509.ParsePKCS1PrivateKey([]byte(privateKey))
// if err != nil {
// return nil, err
// }
// }
// case PKCS8:
// {
// prkI, err := x509.ParsePKCS8PrivateKey([]byte(privateKey))
// if err != nil {
// return nil, err
// }
// priKey = prkI.(*rsa.PrivateKey)
// }
// default:
// {
// return nil, fmt.Errorf("unsupport private key type")
// }
// }
// return priKey, nil
//}
// GetNoticeURL is 获取回调地址
func GetNoticeURL(sourceCode uint8) string {
domainName := setting.Conf.PayUrl.DomainName
return domainName + "/api/v1/pay/wx_notice" //目前微信、支付宝调同一个地址
//生产随机字符串
func RandomString(n int) string {
var letters = []byte("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
result := make([]byte, n)
rand2.Seed(time.Now().Unix())
for i := range result {
result[i] = letters[rand2.Intn(len(letters))]
}
return string(result)
}
// BillPayStateSuccess is 微信回调后 把订单状态 置为结算成功
func BillPayStateSuccess(tx *sql.Tx, billID int64) error {
insertPayBillDetailSQL := `update system_pay_bill set result_code = 1 where id = ?`
result, err := tx.Exec(insertPayBillDetailSQL, billID)
// 私钥签名过程
func RSASign(data []byte, filename string) (string, error) {
// 1、选择hash算法,对需要签名的数据进行hash运算
myhash := crypto.SHA256
hashInstance := myhash.New()
hashInstance.Write(data)
hashed := hashInstance.Sum(nil)
// 2、读取私钥文件,解析出私钥对象
privateKey, err := ReadParsePrivaterKey(filename)
if err != nil {
return err
return "", err
}
_, err = result.RowsAffected()
// 3、RSA数字签名(参数是随机数、私钥对象、哈希类型、签名文件的哈希串),生成base64编码的签名字符串
bytes, err := rsa.SignPKCS1v15(rand.Reader, privateKey, myhash, hashed)
if err != nil {
return err
return "", err
}
return nil
return base64.StdEncoding.EncodeToString(bytes), nil
}
// BillPayStateFail is 微信回调后 把订单状态 置为结算失败
func BillPayStateFail(tx *sql.Tx, billID int64) error {
insertPayBillDetailSQL := `update system_pay_bill set result_code = 2 where id = ?`
result, err := tx.Exec(insertPayBillDetailSQL, billID)
// 读取私钥文件,解析出私钥对象
func ReadParsePrivaterKey(filename string) (*rsa.PrivateKey, error) {
// 1、读取私钥文件,获取私钥字节
privateKeyBytes, err := ioutil.ReadFile(filename)
if err != nil {
return err
return nil, err
}
_, err = result.RowsAffected()
// 2、对私钥文件进行编码,生成加密块对象
block, _ := pem.Decode(privateKeyBytes)
fmt.Println(block.Type)
if block == nil {
return nil, errors.New("私钥信息错误!")
}
// 3、解析DER编码的私钥,生成私钥对象
prkI, err := x509.ParsePKCS8PrivateKey(block.Bytes)
if err != nil {
return err
return nil, err
}
return nil
}
//InsertRefundBill is 插入 支付订单表中
func InsertRefundBill(tx *sql.Tx, p *models.RefundParamInput, refundID string) (int64, error) {
var billID int64
//todo
//insertSQL := `insert system_pay_bill set platform_type = ?, source_code = ?,
//payment_order_code = ?, paymoney = ?*1000, pay_type = 4, attach = ?, _type = 1, original_payment_order_code = ?`
//platformType, sourceCode, checkSn, refundAmount, attach, orderID
//result, err := tx.Exec(insertSQL, p.PlatformType, p.PlatformInfo, p.SourceCode,
// orderID, p.GoodsPrice, p.GoodsDes, p.GoodsDetail, p.AttachInfo, p.NoticeURL, p.PayType, p.IsServe)
privateKey := prkI.(*rsa.PrivateKey)
insertSQL := `insert system_pay_bill set original_payment_order_code=?, payment_order_code=?, paymoney=?*1000, pay_type=4, _type=1`
return privateKey, nil
}
//platformType, sourceCode, checkSn, refundAmount, attach, orderID
result, err := tx.Exec(insertSQL, p.RefundNo, refundID, p.RefundAmount)
if err != nil {
return billID, err
}
// GetNoticeURL is 获取回调地址
func GetNoticeURL(sourceCode uint8) string {
billID, err = result.LastInsertId()
if err != nil {
return billID, err
}
return billID, nil
domainName := setting.Conf.PayUrl.DomainName
return domainName + "/api/v1/pay/wx_notice" //目前微信、支付宝调同一个地址
}
//InsertPayBill is 插入 支付订单表中
......@@ -598,23 +491,22 @@ func InsertPayBillDetailResponseBody(tx *sql.Tx, billID int64, responseBody inte
return nil
}
func InsertPayBillDetailResponseBodyString(tx *sql.Tx, billID int64, responseBody string) error {
insertPayBillDetailSQL := `update system_pay_bill_detail set response_body = ? where pay_bill_id = ?`
result, err := tx.Exec(insertPayBillDetailSQL, responseBody, billID)
if err != nil {
return err
}
_, err = result.RowsAffected()
if err != nil {
return err
}
return nil
}
//func InsertPayBillDetailResponseBodyString(tx *sql.Tx, billID int64, responseBody string) error {
//
// insertPayBillDetailSQL := `update system_pay_bill_detail set response_body = ? where pay_bill_id = ?`
// result, err := tx.Exec(insertPayBillDetailSQL, responseBody, billID)
// if err != nil {
// return err
// }
//
// _, err = result.RowsAffected()
// if err != nil {
// return err
// }
// return nil
//}
func GetUID() string {
u4 := uID.NewV4()
//if err != nil {
// return ""
......@@ -624,9 +516,10 @@ func GetUID() string {
return strings.Replace(id, "-", "", -1)
}
// 拉卡拉退款
func UnifiedRefund(input *models.RefundParamInput, ip string) (interface{}, error) {
fmt.Println("谛宝多多输入参数(退款)")
fmt.Println(input)
......@@ -645,8 +538,8 @@ func UnifiedRefund(input *models.RefundParamInput, ip string) (interface{}, erro
defer mysql.CloseTx(tx, err)
//订单存在check
log_no, trans_term_no, source_code, err := selectPayBill(tx, input)
//退款订单存在check
log_no, trans_term_no, source_code, err := selectRefundBill(tx, input)
if err != nil {
return nil, err
}
......@@ -777,7 +670,8 @@ func UnifiedRefund(input *models.RefundParamInput, ip string) (interface{}, erro
return response, nil
}
func selectPayBill(tx *sql.Tx, input *models.RefundParamInput) (string, string, uint8, error) {
//退款订单存在check
func selectRefundBill(tx *sql.Tx, input *models.RefundParamInput) (string, string, uint8, error) {
var billID int64
var status uint
......@@ -786,11 +680,11 @@ func selectPayBill(tx *sql.Tx, input *models.RefundParamInput) (string, string,
var notice_request2 []byte
//payment_order_code, paymoney
selectPayBillDetailSQL := `select b.id, b.result_code, b.source_code, bd.notice_request_body
selectRefundBillSQL := `select b.id, b.result_code, b.source_code, bd.notice_request_body
from system_pay_bill b
left join system_pay_bill_detail bd on b.id=bd.pay_bill_id
where b._type=0 and b.payment_order_code=?`
err := tx.QueryRow(selectPayBillDetailSQL, input.RefundNo).Scan(&billID, &status, &source_code, &notice_request2)
err := tx.QueryRow(selectRefundBillSQL, input.RefundNo).Scan(&billID, &status, &source_code, &notice_request2)
if err != nil {
return "", "", 0, err
}
......@@ -829,60 +723,30 @@ func selectPayBill(tx *sql.Tx, input *models.RefundParamInput) (string, string,
return log_no, notice_request.TransTermNo, source_code, nil
}
//生产随机字符串
func RandomString(n int) string {
var letters = []byte("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
result := make([]byte, n)
rand2.Seed(time.Now().Unix())
for i := range result {
result[i] = letters[rand2.Intn(len(letters))]
}
return string(result)
}
//InsertRefundBill is 插入 支付订单表中
func InsertRefundBill(tx *sql.Tx, p *models.RefundParamInput, refundID string) (int64, error) {
// 私钥签名过程
func RSASign(data []byte, filename string) (string, error) {
// 1、选择hash算法,对需要签名的数据进行hash运算
myhash := crypto.SHA256
hashInstance := myhash.New()
hashInstance.Write(data)
hashed := hashInstance.Sum(nil)
// 2、读取私钥文件,解析出私钥对象
privateKey, err := ReadParsePrivaterKey(filename)
if err != nil {
return "", err
}
// 3、RSA数字签名(参数是随机数、私钥对象、哈希类型、签名文件的哈希串),生成base64编码的签名字符串
bytes, err := rsa.SignPKCS1v15(rand.Reader, privateKey, myhash, hashed)
if err != nil {
return "", err
}
return base64.StdEncoding.EncodeToString(bytes), nil
}
var billID int64
//todo 原source
//insertSQL := `insert system_pay_bill set platform_type = ?, source_code = ?,
//payment_order_code = ?, paymoney = ?*1000, pay_type = 4, attach = ?, _type = 1, original_payment_order_code = ?`
// 读取私钥文件,解析出私钥对象
func ReadParsePrivaterKey(filename string) (*rsa.PrivateKey, error) {
// 1、读取私钥文件,获取私钥字节
privateKeyBytes, err := ioutil.ReadFile(filename)
//platformType, sourceCode, checkSn, refundAmount, attach, orderID
//result, err := tx.Exec(insertSQL, p.PlatformType, p.PlatformInfo, p.SourceCode,
// orderID, p.GoodsPrice, p.GoodsDes, p.GoodsDetail, p.AttachInfo, p.NoticeURL, p.PayType, p.IsServe)
insertSQL := `insert system_pay_bill set original_payment_order_code=?, payment_order_code=?, paymoney=?*1000, _type=1`
//差 platformType, sourceCode, attach 和 pay_type = 4
result, err := tx.Exec(insertSQL, p.RefundNo, refundID, p.RefundAmount)
if err != nil {
return nil, err
}
// 2、对私钥文件进行编码,生成加密块对象
block, _ := pem.Decode(privateKeyBytes)
fmt.Println(block.Type)
if block == nil {
return nil, errors.New("私钥信息错误!")
return billID, err
}
// 3、解析DER编码的私钥,生成私钥对象
//privateKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
//if err != nil {
// return nil, err
//}
prkI, err := x509.ParsePKCS8PrivateKey(block.Bytes)
billID, err = result.LastInsertId()
if err != nil {
return nil, err
return billID, err
}
privateKey := prkI.(*rsa.PrivateKey)
return privateKey, nil
return billID, nil
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment