|
|
@@ -1,6 +1,7 @@
|
|
|
package wx
|
|
|
|
|
|
import (
|
|
|
+ "encoding/xml"
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
"git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
|
|
|
@@ -10,6 +11,7 @@ import (
|
|
|
"github.com/silenceper/wechat/oauth"
|
|
|
"github.com/silenceper/wechat/pay"
|
|
|
"github.com/silenceper/wechat/util"
|
|
|
+ "io/ioutil"
|
|
|
"net/url"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
@@ -26,13 +28,34 @@ func CallWxPayCallbackHandler(c *entitys.CtrlContext)models.SysReturn{
|
|
|
if wxPayCallbackHandler == nil{
|
|
|
return models.SysReturn{500, "微信支付回调处理函数为空", nil}
|
|
|
}
|
|
|
+ data, err := ioutil.ReadAll(c.Ctx.Request.Body)
|
|
|
+ if err != nil{
|
|
|
+ fmt.Println("******************----》微信支付回调read request body错误", err.Error())
|
|
|
+ return models.SysReturn{500, err.Error(), nil}
|
|
|
+ }
|
|
|
notifyRet := pay.NotifyResult{}
|
|
|
- err := c.Ctx.BindXML(¬ifyRet)
|
|
|
+ err = xml.Unmarshal(data, ¬ifyRet)
|
|
|
+ //err = c.Ctx.BindXML(¬ifyRet)
|
|
|
if err != nil{
|
|
|
fmt.Println("******************----》微信支付回调bindxml错误", err.Error())
|
|
|
return models.SysReturn{500, err.Error(), nil}
|
|
|
}
|
|
|
- return wxPayCallbackHandler(¬ifyRet)
|
|
|
+ if notifyRet.ResultCode == "SUCCESS" && notifyRet.ReturnCode == "SUCCESS"{
|
|
|
+ ok, err := VerifyResponseData(data, wxConfig.PayKey)
|
|
|
+ if err != nil{
|
|
|
+ fmt.Println("*****************---->微信支付回调验证错误", err.Error())
|
|
|
+ return models.SysReturn{500, err.Error(), nil}
|
|
|
+ }
|
|
|
+ if !ok{
|
|
|
+ fmt.Println("*****************---->微信支付回调验证错误, ok is false")
|
|
|
+ return models.SysReturn{500, "", nil}
|
|
|
+ }
|
|
|
+ return wxPayCallbackHandler(¬ifyRet)
|
|
|
+ }else{
|
|
|
+ fmt.Println("------------------>微信支付失败", notifyRet)
|
|
|
+ return models.SysReturn{500, "", ""}
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
// 扫码支付
|
|
|
@@ -66,10 +89,13 @@ func PayJSAPI(params *PayParams)(*JSAPIPayConfig, error){
|
|
|
return nil, errors.New("交易单号为空")
|
|
|
}
|
|
|
|
|
|
+
|
|
|
attach := params.Attach
|
|
|
if attach == ""{
|
|
|
+ fmt.Println("--------------------->1")
|
|
|
attach = params.Ctx.Ctx.GetString("user_id")
|
|
|
if attach == ""{
|
|
|
+ fmt.Println("--------------------->2")
|
|
|
attach = "attach"
|
|
|
}
|
|
|
}
|
|
|
@@ -79,7 +105,16 @@ func PayJSAPI(params *PayParams)(*JSAPIPayConfig, error){
|
|
|
}
|
|
|
ip := utils.GetIP(params.Ctx)
|
|
|
|
|
|
- payParams := pay.Params{strconv.Itoa(params.TotalFee), ip, body, attach, params.OutTradeNo, params.OpenId}
|
|
|
+ fmt.Println("params.Attach", params.Attach, "attach", attach)
|
|
|
+
|
|
|
+ payParams := pay.Params{
|
|
|
+ strconv.Itoa(params.TotalFee),
|
|
|
+ ip,
|
|
|
+ body,
|
|
|
+ attach,
|
|
|
+ params.OutTradeNo,
|
|
|
+ params.OpenId,
|
|
|
+ }
|
|
|
payObj := wc.GetPay()
|
|
|
prePayID, err := payObj.PrePayID(&payParams)
|
|
|
if err != nil{
|
|
|
@@ -96,6 +131,7 @@ func PayJSAPI(params *PayParams)(*JSAPIPayConfig, error){
|
|
|
|
|
|
payCfg := pay.Config{timestamp, nonceStr, prePayID, "MD5", sign}
|
|
|
exPayConfig := JSAPIPayConfig{}
|
|
|
+ exPayConfig.AppId = wxConfig.AppId
|
|
|
exPayConfig.NonceStr = payCfg.NonceStr
|
|
|
exPayConfig.OutTradeNo = params.OutTradeNo
|
|
|
exPayConfig.Package = "prepay_id=" + payCfg.PrePayID
|
|
|
@@ -110,6 +146,11 @@ func PayJSAPI(params *PayParams)(*JSAPIPayConfig, error){
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// 关闭订单
|
|
|
+func CloseOrder(outTradeNo string)(*pay.CloseOrderResult, error){
|
|
|
+ return wc.GetPay().CloseOrder(outTradeNo)
|
|
|
+}
|
|
|
+
|
|
|
// 获取微信OAuth认证参数
|
|
|
func GetOAuthParams(paramMap map[string]string)(*WxOAuthConfig, error){
|
|
|
config := WxOAuthConfig{}
|