|
@@ -47,19 +47,20 @@ const (
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
//小程序端微信支付client
|
|
//小程序端微信支付client
|
|
|
-func getMchProxyInitClient() *mch.Proxy {
|
|
|
|
|
-
|
|
|
|
|
|
|
+func getMchProxyInitClient(payCode string) *mch.Proxy {
|
|
|
|
|
+ mechant := GetMechantInfo(payCode)
|
|
|
appId := beego.AppConfig.String("WxFohowXcxAppId") //获取小程序渠道appId
|
|
appId := beego.AppConfig.String("WxFohowXcxAppId") //获取小程序渠道appId
|
|
|
-
|
|
|
|
|
- mchProxy := mch.NewProxy(appId, mchId, apiKey, nil)
|
|
|
|
|
|
|
+ mchProxy := mch.NewProxy(appId, mechant.MchId, mechant.ApiKey, nil)
|
|
|
return mchProxy
|
|
return mchProxy
|
|
|
}
|
|
}
|
|
|
-func getMchTLSProxyInitClient() *mch.Proxy {
|
|
|
|
|
|
|
+func getMchTLSProxyInitClient(payCode string) *mch.Proxy {
|
|
|
appId := beego.AppConfig.String("WxFohowXcxAppId") //获取小程序渠道appId
|
|
appId := beego.AppConfig.String("WxFohowXcxAppId") //获取小程序渠道appId
|
|
|
|
|
+ mechant := GetMechantInfo(payCode)
|
|
|
|
|
+
|
|
|
var tlsHttpCilent, _ = mch.NewTLSHttpClient(
|
|
var tlsHttpCilent, _ = mch.NewTLSHttpClient(
|
|
|
- beego.AppConfig.String("MchCertFile"),
|
|
|
|
|
- beego.AppConfig.String("MchKeyFile"))
|
|
|
|
|
- mchTLSProxy := mch.NewProxy(appId, mchId, apiKey, tlsHttpCilent)
|
|
|
|
|
|
|
+ mechant.MchCertFile,
|
|
|
|
|
+ mechant.MchKeyFile)
|
|
|
|
|
+ mchTLSProxy := mch.NewProxy(appId, mechant.MchId, mechant.ApiKey, tlsHttpCilent)
|
|
|
return mchTLSProxy
|
|
return mchTLSProxy
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -155,6 +156,7 @@ func GetPayData(openid, outTradeNo string, totalPrice int64, body, notifyUrl, re
|
|
|
func getPayPrepayId(openid, outTradeNo string, totalPrice int64, body, notifyUrl, remoteIp, payCode string, limit bool) (prepayId string) {
|
|
func getPayPrepayId(openid, outTradeNo string, totalPrice int64, body, notifyUrl, remoteIp, payCode string, limit bool) (prepayId string) {
|
|
|
appId := beego.AppConfig.String("WxFohowXcxAppId") //获取小程序渠道appId
|
|
appId := beego.AppConfig.String("WxFohowXcxAppId") //获取小程序渠道appId
|
|
|
mechantInfo := GetMechantInfo(payCode) //商户号配置信息
|
|
mechantInfo := GetMechantInfo(payCode) //商户号配置信息
|
|
|
|
|
+ mchProxy := getMchProxyInitClient(payCode)
|
|
|
|
|
|
|
|
outTradeNo = fmt.Sprintf("%s_%d", outTradeNo, time.Now().Unix())
|
|
outTradeNo = fmt.Sprintf("%s_%d", outTradeNo, time.Now().Unix())
|
|
|
u := uuid.NewV4().String()
|
|
u := uuid.NewV4().String()
|
|
@@ -191,13 +193,17 @@ func getPayPrepayId(openid, outTradeNo string, totalPrice int64, body, notifyUrl
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//订单退款接口
|
|
//订单退款接口
|
|
|
-func GetRefundDataPay(outTradeNo, outRefundNo string, totalPrice int64, transactionId, remark string) (ret map[string]string) {
|
|
|
|
|
|
|
+func GetRefundDataPay(outTradeNo, outRefundNo string, totalPrice int64, transactionId, remark, payCode string) (ret map[string]string) {
|
|
|
outTradeNo = fmt.Sprintf("%s_%d", outTradeNo, time.Now().Unix())
|
|
outTradeNo = fmt.Sprintf("%s_%d", outTradeNo, time.Now().Unix())
|
|
|
|
|
+ appId := beego.AppConfig.String("WxFohowXcxAppId") //获取小程序渠道appId
|
|
|
|
|
+ mechantInfo := GetMechantInfo(payCode) //商户号配置信息
|
|
|
|
|
+ mchTLSProxy := getMchTLSProxyInitClient(payCode)
|
|
|
|
|
+
|
|
|
u := uuid.NewV4().String()
|
|
u := uuid.NewV4().String()
|
|
|
us := strings.Split(u, "-")
|
|
us := strings.Split(u, "-")
|
|
|
nonce_str := strings.Join(us, "")
|
|
nonce_str := strings.Join(us, "")
|
|
|
req := map[string]string{
|
|
req := map[string]string{
|
|
|
- "mch_id": mchId,
|
|
|
|
|
|
|
+ "mch_id": mechantInfo.MchId,
|
|
|
"appid": appId,
|
|
"appid": appId,
|
|
|
"nonce_str": nonce_str, //fmt.Sprintf("%d", time.Now().Unix()),
|
|
"nonce_str": nonce_str, //fmt.Sprintf("%d", time.Now().Unix()),
|
|
|
"transaction_id": transactionId,
|
|
"transaction_id": transactionId,
|
|
@@ -208,7 +214,7 @@ func GetRefundDataPay(outTradeNo, outRefundNo string, totalPrice int64, transact
|
|
|
//"notify_url": notifyUrl,
|
|
//"notify_url": notifyUrl,
|
|
|
"refund_desc": remark,
|
|
"refund_desc": remark,
|
|
|
}
|
|
}
|
|
|
- sign := mch.Sign(req, apiKey, nil)
|
|
|
|
|
|
|
+ sign := mch.Sign(req, mechantInfo.ApiKey, nil)
|
|
|
req["sign"] = sign
|
|
req["sign"] = sign
|
|
|
beego.BeeLogger.Warn("%v", req)
|
|
beego.BeeLogger.Warn("%v", req)
|
|
|
ret, err := pay.Refund(mchTLSProxy, req)
|
|
ret, err := pay.Refund(mchTLSProxy, req)
|
|
@@ -233,11 +239,14 @@ func getTradeNo(prefix string) string {
|
|
|
// FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账)
|
|
// FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账)
|
|
|
// OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
|
|
// OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
|
|
|
// 如果check_name设置为FORCE_CHECK或OPTION_CHECK,则必填用户真实姓名
|
|
// 如果check_name设置为FORCE_CHECK或OPTION_CHECK,则必填用户真实姓名
|
|
|
-func Transfers(openid string, rmb int64, tradeNo, check, realName, desc string) map[string]string {
|
|
|
|
|
|
|
+func Transfers(openid string, rmb int64, tradeNo, check, realName, payCode, desc string) map[string]string {
|
|
|
// tradNo := getTradeNo("EP")
|
|
// tradNo := getTradeNo("EP")
|
|
|
|
|
+ appId := beego.AppConfig.String("WxFohowXcxAppId") //获取小程序渠道appId
|
|
|
|
|
+ mechantInfo := GetMechantInfo(payCode) //商户号配置信息
|
|
|
|
|
+ mchTLSProxy := getMchTLSProxyInitClient(payCode)
|
|
|
req := map[string]string{
|
|
req := map[string]string{
|
|
|
"mch_appid": appId,
|
|
"mch_appid": appId,
|
|
|
- "mchid": mchId,
|
|
|
|
|
|
|
+ "mchid": mechantInfo.MchId,
|
|
|
"nonce_str": fmt.Sprintf("%d", time.Now().Unix()),
|
|
"nonce_str": fmt.Sprintf("%d", time.Now().Unix()),
|
|
|
"partner_trade_no": tradeNo,
|
|
"partner_trade_no": tradeNo,
|
|
|
"openid": openid,
|
|
"openid": openid,
|
|
@@ -246,7 +255,7 @@ func Transfers(openid string, rmb int64, tradeNo, check, realName, desc string)
|
|
|
"amount": fmt.Sprintf("%d", rmb),
|
|
"amount": fmt.Sprintf("%d", rmb),
|
|
|
"desc": desc,
|
|
"desc": desc,
|
|
|
"spbill_create_ip": "8.129.187.89"}
|
|
"spbill_create_ip": "8.129.187.89"}
|
|
|
- sign := mch.Sign(req, apiKey, nil)
|
|
|
|
|
|
|
+ sign := mch.Sign(req, mechantInfo.ApiKey, nil)
|
|
|
req["sign"] = sign
|
|
req["sign"] = sign
|
|
|
|
|
|
|
|
ret, _ := promotion.Transfers(mchTLSProxy, req)
|
|
ret, _ := promotion.Transfers(mchTLSProxy, req)
|
|
@@ -270,7 +279,9 @@ func Transfers(openid string, rmb int64, tradeNo, check, realName, desc string)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 校验支付结果回调参数
|
|
// 校验支付结果回调参数
|
|
|
-func VerifyWxPayResult(payResult *PayResult) bool {
|
|
|
|
|
|
|
+func VerifyWxPayResult(payResult *PayResult, payCode string) bool {
|
|
|
|
|
+ mechantInfo := GetMechantInfo(payCode) //商户号配置信息
|
|
|
|
|
+
|
|
|
sign := payResult.Sign
|
|
sign := payResult.Sign
|
|
|
params, err := XmlStructToMap(payResult)
|
|
params, err := XmlStructToMap(payResult)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -279,7 +290,7 @@ func VerifyWxPayResult(payResult *PayResult) bool {
|
|
|
}
|
|
}
|
|
|
// beego.BeeLogger.Warn("*****params: %v", params)
|
|
// beego.BeeLogger.Warn("*****params: %v", params)
|
|
|
// beego.BeeLogger.Warn("*****sign: %s", sign)
|
|
// beego.BeeLogger.Warn("*****sign: %s", sign)
|
|
|
- mchSign := mch.Sign(params, wxApiKey, nil)
|
|
|
|
|
|
|
+ mchSign := mch.Sign(params, mechantInfo.ApiKey, nil)
|
|
|
// beego.BeeLogger.Warn("*****mch sign: %s", mchSign)
|
|
// beego.BeeLogger.Warn("*****mch sign: %s", mchSign)
|
|
|
return sign == mchSign
|
|
return sign == mchSign
|
|
|
}
|
|
}
|