黄梓健
5 years ago
5 changed files with 10 additions and 135 deletions
@ -0,0 +1 @@ |
|||||
|
package wechat |
@ -1,135 +0,0 @@ |
|||||
package wx |
|
||||
|
|
||||
// import (
|
|
||||
// "bytes"
|
|
||||
// "crypto/tls"
|
|
||||
// "crypto/x509"
|
|
||||
// "encoding/xml"
|
|
||||
// "io/ioutil"
|
|
||||
// "net/http"
|
|
||||
// "net/url"
|
|
||||
// "strconv"
|
|
||||
|
|
||||
// "github.com/ouxuanserver/osmanthuswine/src/helper"
|
|
||||
// )
|
|
||||
|
|
||||
// const KEY = "wechat_key"
|
|
||||
|
|
||||
// var transfers = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"
|
|
||||
|
|
||||
// type Order struct {
|
|
||||
// XMLName xml.Name `xml:"xml"`
|
|
||||
// MchAppid string `xml:"mch_appid"`
|
|
||||
// Mchid string `xml:"mchid"`
|
|
||||
// DeviceInfo string `xml:"device_info"`
|
|
||||
// NonceStr string `xml:"nonce_str"`
|
|
||||
// Sign string `xml:"sign"`
|
|
||||
// PartnerTradeNo string `xml:"partner_trade_no"`
|
|
||||
// Openid string `xml:"openid"`
|
|
||||
// CheckName string `xml:"check_name"`
|
|
||||
// ReUserName string `xml:"re_user_name"`
|
|
||||
// Amount int `xml:"amount"`
|
|
||||
// Desc string `xml:"desc"`
|
|
||||
// SpbillCreateIp string `xml:"spbill_create_ip"`
|
|
||||
// }
|
|
||||
|
|
||||
// type OrderResult struct {
|
|
||||
// ReturnCode string `xml:"return_code"`
|
|
||||
// ReturnMsg string `xml:"return_msg"`
|
|
||||
// ResultCode string `xml:"result_code"`
|
|
||||
// ErrCode string `xml:"err_code"`
|
|
||||
// ErrCodeDes string `xml:"err_code_des"`
|
|
||||
// MchAppid string `xml:"mch_appid"`
|
|
||||
// Mchid string `json:"mchid"`
|
|
||||
// DeviceInfo string `json:"device_info"`
|
|
||||
// NonceStr string `json:"nonce_str"`
|
|
||||
// PartnerTradeNo string `xml:"partner_trade_no"`
|
|
||||
// PaymentNo string `xml:"payment_no"`
|
|
||||
// PaymentTime string `xml:"payment_time"`
|
|
||||
// }
|
|
||||
|
|
||||
// //付款,成功返回自定义订单号,微信订单号,true,失败返回错误信息,false
|
|
||||
// func Withdraw(appid, mchid, openid, amount, partnerTradeNo, desc, clientIp string) (*OrderResult, error) {
|
|
||||
// order := Order{}
|
|
||||
// order.MchAppid = appid
|
|
||||
// order.Mchid = mchid
|
|
||||
// order.Openid = openid
|
|
||||
// order.Amount, _ = strconv.Atoi(amount)
|
|
||||
// order.Desc = desc
|
|
||||
// order.PartnerTradeNo = partnerTradeNo
|
|
||||
// order.DeviceInfo = "WEB"
|
|
||||
// order.CheckName = "NO_CHECK" //NO_CHECK:不校验真实姓名 FORCE_CHECK:强校验真实姓名
|
|
||||
// order.SpbillCreateIp = clientIp
|
|
||||
// order.NonceStr = helper.CreateUUID()
|
|
||||
// order.Sign = md5WithdrawOrder(order)
|
|
||||
// xmlBody, _ := xml.MarshalIndent(order, " ", " ")
|
|
||||
// resp, err := SecurePost(transfers, xmlBody)
|
|
||||
// if err != nil {
|
|
||||
// return nil, err
|
|
||||
// }
|
|
||||
// defer resp.Body.Close()
|
|
||||
// bodyByte, _ := ioutil.ReadAll(resp.Body)
|
|
||||
// res := new(OrderResult)
|
|
||||
// err = xml.Unmarshal(bodyByte, res)
|
|
||||
// return res, err
|
|
||||
// }
|
|
||||
// func md5WithdrawOrder(order Order) string {
|
|
||||
// o := url.Values{}
|
|
||||
// o.Add("mch_appid", order.MchAppid)
|
|
||||
// o.Add("mchid", order.Mchid)
|
|
||||
// o.Add("device_info", order.DeviceInfo)
|
|
||||
// o.Add("partner_trade_no", order.PartnerTradeNo)
|
|
||||
// o.Add("check_name", order.CheckName)
|
|
||||
// o.Add("amount", strconv.Itoa(order.Amount))
|
|
||||
// o.Add("spbill_create_ip", order.SpbillCreateIp)
|
|
||||
// o.Add("desc", order.Desc)
|
|
||||
// o.Add("nonce_str", order.NonceStr)
|
|
||||
// o.Add("openid", order.Openid)
|
|
||||
// r, _ := url.QueryUnescape(o.Encode())
|
|
||||
// return helper.Md5(r + "&key=" + KEY)
|
|
||||
// }
|
|
||||
|
|
||||
// var (
|
|
||||
// wechatCertPath = `./cert/cert.pem`
|
|
||||
// wechatKeyPath = `./cert/key.pem`
|
|
||||
// wechatCAPath = `./cert/rootca.pem`
|
|
||||
// )
|
|
||||
|
|
||||
|
|
||||
//采用单例模式初始化ca
|
|
||||
// func getTLSConfig() (*tls.Config, error) {
|
|
||||
// if _tlsConfig != nil {
|
|
||||
// return _tlsConfig, nil
|
|
||||
// }
|
|
||||
// // load cert
|
|
||||
// cert, err := tls.LoadX509KeyPair(wechatCertPath, wechatKeyPath)
|
|
||||
// if err != nil {
|
|
||||
// return nil, err
|
|
||||
// }
|
|
||||
// // load root ca
|
|
||||
// caData, err := ioutil.ReadFile(wechatCAPath)
|
|
||||
// if err != nil {
|
|
||||
// return nil, err
|
|
||||
// }
|
|
||||
// pool := x509.NewCertPool()
|
|
||||
// pool.AppendCertsFromPEM(caData)
|
|
||||
// _tlsConfig = &tls.Config{
|
|
||||
// Certificates: []tls.Certificate{cert},
|
|
||||
// RootCAs: pool,
|
|
||||
// }
|
|
||||
// return _tlsConfig, nil
|
|
||||
// }
|
|
||||
|
|
||||
// //携带ca证书的安全请求
|
|
||||
// func SecurePost(url string, xmlContent []byte) (*http.Response, error) {
|
|
||||
// tlsConfig, err := getTLSConfig()
|
|
||||
// if err != nil {
|
|
||||
// return nil, err
|
|
||||
// }
|
|
||||
// tr := &http.Transport{TLSClientConfig: tlsConfig}
|
|
||||
// client := &http.Client{Transport: tr}
|
|
||||
// return client.Post(
|
|
||||
// url,
|
|
||||
// "application/xml",
|
|
||||
// bytes.NewBuffer(xmlContent))
|
|
||||
// }
|
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue