diff --git a/business/auth2/auth2.go b/business/auth2/auth2.go index ce37b435c..de4c0d243 100644 --- a/business/auth2/auth2.go +++ b/business/auth2/auth2.go @@ -481,7 +481,7 @@ func CheckWeixinminiAuthBind(userID string) (err error) { var ( db = dao.GetDB() ) - authBinds, err := dao.GetUserBindAuthInfo(db, userID, model.AuthBindTypeAuth, []string{"weixinmini"}, "", "", "") + authBinds, err := dao.GetUserBindAuthInfo(db, userID, model.AuthBindTypeAuth, []string{"weixinmini", "weixinapp"}, "", "", "") if len(authBinds) == 0 { return fmt.Errorf("请绑定微信认证方式!") } else { diff --git a/business/auth2/authprovider/weixin/weixin_mini.go b/business/auth2/authprovider/weixin/weixin_mini.go index 86b987815..6c8142201 100644 --- a/business/auth2/authprovider/weixin/weixin_mini.go +++ b/business/auth2/authprovider/weixin/weixin_mini.go @@ -88,9 +88,6 @@ func (a *MiniAuther) GetUserType() (userType int8) { func getWxApp(appID string) (miniApi *weixinapi.API) { miniApi = api.WeixinMiniAPI - if len(appID) > 0 && appID == api.WeixinMiniAppID2 { - miniApi = api.WeixinMiniAPI2 - } return miniApi } diff --git a/business/jxstore/cms/order.go b/business/jxstore/cms/order.go index 0727e46b8..77ac7d755 100644 --- a/business/jxstore/cms/order.go +++ b/business/jxstore/cms/order.go @@ -20,7 +20,7 @@ import ( "git.rosy.net.cn/jx-callback/business/model" ) -func CreateOrder(ctx *jxcontext.Context, orderType, price int, lng, lat float64) (orderID string, err error) { +func CreateOrder(ctx *jxcontext.Context, orderType int, way string, price int, lng, lat float64) (orderID string, err error) { var ( db = dao.GetDB() order *model.Order @@ -33,6 +33,7 @@ func CreateOrder(ctx *jxcontext.Context, orderType, price int, lng, lat float64) OrderID: utils.Int64ToStr(jxutils.GenOrderNo()), UserID: ctx.GetUserID(), Type: orderType, + Way: way, Status: model.OrderStatusWait4Pay, PayPrice: price, Lng: lng, diff --git a/business/jxstore/financial/financial.go b/business/jxstore/financial/financial.go index 2a13af4d1..524163e9d 100644 --- a/business/jxstore/financial/financial.go +++ b/business/jxstore/financial/financial.go @@ -26,6 +26,13 @@ const ( sigTypeSha256 = "HMAC-SHA256" ) +var ( + payMap = map[string]*wxpayapi.API{ + "weixinapp": api.WxpayAPI, + "weixinmini": api.WxpayAPI2, + } +) + func (p *PayHandler) CreatePay() (err error) { switch p.PayType { case model.PayTypeTL: @@ -59,7 +66,7 @@ func (p *PayHandler) CreatePay() (err error) { TimeStart: wxpayapi.Time2PayTime(time.Now()), // ProfitSharing: wxpayapi.OptYes, } - authBinds, err := dao.GetUserBindAuthInfo(dao.GetDB(), p.Ctx.GetUserID(), model.AuthBindTypeAuth, []string{"weixinmini"}, "", "", "") + authBinds, err := dao.GetUserBindAuthInfo(dao.GetDB(), p.Ctx.GetUserID(), model.AuthBindTypeAuth, []string{p.Order.Way}, "", "", "") if err != nil { return err } @@ -67,7 +74,7 @@ func (p *PayHandler) CreatePay() (err error) { return fmt.Errorf("未绑定微信认证方式!") } param.OpenID = authBinds[0].AuthID - result, err2 := api.WxpayAPI.CreateUnifiedOrder(param) + result, err2 := payMap[p.Order.Way].CreateUnifiedOrder(param) if err2 == nil { param2 := make(map[string]interface{}) param2["prepayid"] = result.PrepayID @@ -151,7 +158,7 @@ func (p *PayHandler) CreateRefund() (err error) { // param.OpenID = authInfo.GetAuthID() // } // globals.SugarLogger.Debugf("CreateRefund wx param: %v", utils.Format4Output(param, false)) - // result, err2 := api.WxpayAPI.Transfers(param) + // result, err2 := payMap[p.Order.Way].Transfers(param) // if err2 == nil { // p.Order.PayFinishedAt = utils.Str2Time(result.PaymentTime) // p.Order.Comment = result.DeviceInfo diff --git a/business/model/order.go b/business/model/order.go index 1ae4fd81e..93fb0b616 100644 --- a/business/model/order.go +++ b/business/model/order.go @@ -53,6 +53,7 @@ type Order struct { OrderID string `orm:"column(order_id)" json:"orderID"` //订单号 UserID string `orm:"column(user_id);size(48)" json:"userID"` //用户ID Type int `json:"type"` //订单类型 + Way string `json:"way"` //weixinapp ,weixinmini Status int `json:"status"` //订单状态,待支付2,已支付5,支付成功110,支付失败115 PayPrice int `json:"payPrice"` //支付金额 TransactionID string `orm:"column(transaction_id);size(48)" json:"transactionID"` // 支付成功后,支付方生成的事务ID diff --git a/conf/app.conf b/conf/app.conf index b8f7fd6f6..50f180670 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -59,14 +59,6 @@ weixinMsgKey = "duyaeVYUsz8LuKBqJeQO1NX6KmoC43yfMsbJybcRJ3e" weixinPageAppID = "wx018dbe7daa3d5627" weixinPageSecret = "c7a84ed3ef3ae04ac78e02fb593ffbe5" -weixinMiniAppID = "wxa4a76d7b4c88604e" -weixinMiniSecret = "dc0fd8dc3042f383347e0502b73ab1d2" - -wxpayAppID = "wx70d0943e61e0d15c" -wxpayAppKey = "XKJPOIHJ233adf01KJIXlIeQDSDKFJAD" -wxpayAppMchID = "1603491062" -wxpayNotifyURL = "http://callback.rsm.jxc4.com/wxpay/msg/" - tonglianPayAppID = "00183083" tonglianPayKey = "18048531223" tonglianPayCusID = "56065105499TVAH" @@ -246,19 +238,18 @@ ebaiSecret = "c3db75b754ea2d89" mtpsAppKey = "3c0a05d464c247c19d7ec13accc78605" mtpsSecret = "b1M}9?:sTbsB[OF2gNORnN(|(iy9rB8(`7]|[wGLnbmt`evfM>E:A90DjHAW:UPE" -weixinAppID = "wx2bb99eb5d2c9b82c" -weixinSecret = "6bbbed1443cc062c20a015a64c07a531" -weixinMiniAppID2 = "wx4b5930c13f8b1170" -weixinMiniSecret2 = "2a57228a716ce991a52739f0ff41111d" -weixinMiniAppID3 = "wx70d0943e61e0d15c" -weixinMiniSecret3 = "c2908eeab509314936c4f535dc03e6de" +weixinAppID = "wx70d0943e61e0d15c" +weixinAppSecret = "c2908eeab509314936c4f535dc03e6de" +weixinMiniAppID = "wxa4a76d7b4c88604e" +weixinMiniSecret = "dc0fd8dc3042f383347e0502b73ab1d2" yinbaoAppKey = "682628966212343269" yinbaoAppID = "18C0E0867E467DBC26EFF5E957B02EC4" aliUpcAppCode = "00a6eefba0204d3fa310ac0ee7a6fc54" -wxpayAppID = "wx70d0943e61e0d15c" +wxpayAppID1 = "wx70d0943e61e0d15c" +wxpayAppID2 = "wxa4a76d7b4c88604e" wxpayAppKey = "XKJPOIHJ233adf01KJIXlIeQDSDKFJAD" wxpayAppMchID = "1603491062" wxpayNotifyURL = "http://callback.rsm.jxc4.com/wxpay/msg/" diff --git a/controllers/event_controller.go b/controllers/event_controller.go index ec8c89b05..a5c4a9572 100644 --- a/controllers/event_controller.go +++ b/controllers/event_controller.go @@ -11,7 +11,6 @@ import ( "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" - "git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals" @@ -45,28 +44,6 @@ type Message struct { Data interface{} `json:"data"` } -// @Title 得到微信小程序码 -// @Description 得到微信小程序码 -// @Param token header string true "认证token" -// @Param scene formData string true "最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)" -// @Param page formData string false "必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面" -// @Success 200 {object} controllers.CallResult -// @Failure 200 {object} controllers.CallResult -// @router /GetWeixinUnlimited [post] -func (c *EventController) GetWeixinUnlimited() { - c.callGetWeixinUnlimited(func(params *tEventGetWeixinUnlimitedParams) (retVal interface{}, errCode string, err error) { - // api.WeixinMiniAPI2.CBRetrieveToken() - result, err := api.WeixinMiniAPI2.GetUnlimited(params.Scene, params.Page) - if err != nil || result == nil { - return retVal, "", err - } - fileName := "wxcode" + utils.Int64ToStr(time.Now().Unix()) + ".jpg" - retVal, err = jxutils.UploadExportContent([]byte(result["fakeData"].(string)), fileName) - // tasks.RefreshWeixinToken() - return retVal, "", err - }) -} - // @Title 测试websocket // @Description 测试websocket // @Success 200 {object} controllers.CallResult diff --git a/controllers/order_controller.go b/controllers/order_controller.go index 9803d8d5f..7ec17f31a 100644 --- a/controllers/order_controller.go +++ b/controllers/order_controller.go @@ -46,6 +46,7 @@ func (c *OrderController) Cash() { // @Description 创建订单 // @Param token header string true "认证token" // @Param type formData int true "支付类型/账单类型" +// @Param way formData string true "认证方式" // @Param price formData int true "支付金额" // @Param lng formData float64 true "经纬度" // @Param lat formData float64 true "经纬度" @@ -54,7 +55,7 @@ func (c *OrderController) Cash() { // @router /CreateOrder [post] func (c *OrderController) CreateOrder() { c.callCreateOrder(func(params *tOrderCreateOrderParams) (retVal interface{}, errCode string, err error) { - retVal, err = cms.CreateOrder(params.Ctx, params.Type, params.Price, params.Lng, params.Lat) + retVal, err = cms.CreateOrder(params.Ctx, params.Type, params.Way, params.Price, params.Lng, params.Lat) return retVal, "", err }) } diff --git a/globals/api/api.go b/globals/api/api.go index f75d16c56..a69d8a274 100644 --- a/globals/api/api.go +++ b/globals/api/api.go @@ -60,18 +60,17 @@ var ( EbaiAPI *ebaiapi.API Ebai2API *ebaiapi.API - MtwmAPI *mtwmapi.API - MtpsAPI *mtpsapi.API - DadaAPI *dadaapi.API - WeixinAPI *weixinapi.API // 微信公众号 - WeixinMiniAPI *weixinapi.API // 小程序 - WeixinMiniAPI2 *weixinapi.API // 小程序2 - WeixinApp *weixinapi.API // app微信登录 - WeixinMiniAppID2 string - WeixinMiniAppID3 string - WxpayAPI *wxpayapi.API // 微信支付API - TLpayAPI *tonglianpayapi.API //通联收银宝api - MtMemberAPI *mtmemberapi.API + MtwmAPI *mtwmapi.API + MtpsAPI *mtpsapi.API + DadaAPI *dadaapi.API + WeixinAPI *weixinapi.API // 微信公众号 + WeixinMiniAPI *weixinapi.API // 小程序 + WeixinApp *weixinapi.API // app微信登录 + WxpayAPI *wxpayapi.API // 微信支付AppAPI + WxpayAPI2 *wxpayapi.API // 微信支付小程序API + + TLpayAPI *tonglianpayapi.API //通联收银宝api + MtMemberAPI *mtmemberapi.API YinBaoAPI *yinbaoapi.API //银豹平台api @@ -221,21 +220,14 @@ func Init() { WeimobAPI = nil } WeixinMiniAPI = weixinapi.New(beego.AppConfig.String("weixinMiniAppID"), beego.AppConfig.String("weixinMiniSecret")) - if WeixinMiniAppID2 = beego.AppConfig.String("weixinMiniAppID2"); WeixinMiniAppID2 != "" { - WeixinMiniAPI2 = weixinapi.New(WeixinMiniAppID2, beego.AppConfig.String("weixinMiniSecret2")) - } - WeixinPageAPI = weixinapi.New(beego.AppConfig.String("weixinPageAppID"), beego.AppConfig.String("weixinPageSecret")) - if WeixinMiniAppID3 = beego.AppConfig.String("weixinMiniAppID3"); WeixinMiniAppID3 != "" { - WeixinApp = weixinapi.New(WeixinMiniAppID3, beego.AppConfig.String("weixinMiniSecret3")) - } - // if globals.WxpayNotifyURL != "" { - // WxpayAPI = wxpayapi.New(beego.AppConfig.String("wxpayAppID"), beego.AppConfig.String("wxpayAppKey"), beego.AppConfig.String("wxpayAppMchID")) + WeixinApp = weixinapi.New(beego.AppConfig.String("weixinAppID"), beego.AppConfig.String("weixinAppSecret")) + certPEMBlock, _ := ioutil.ReadFile("conf/apiclient_cert.pem") keyPEMBlock, _ := ioutil.ReadFile("conf/apiclient_key.pem") - // rootCa, _ := ioutil.ReadFile("conf/cacert.pem") - WxpayAPI = wxpayapi.NewWithCertificate(beego.AppConfig.String("wxpayAppID"), beego.AppConfig.String("wxpayAppKey"), beego.AppConfig.String("wxpayAppMchID"), + WxpayAPI = wxpayapi.NewWithCertificate(beego.AppConfig.String("wxpayAppID1"), beego.AppConfig.String("wxpayAppKey"), beego.AppConfig.String("wxpayAppMchID"), + certPEMBlock, keyPEMBlock) + WxpayAPI2 = wxpayapi.NewWithCertificate(beego.AppConfig.String("wxpayAppID2"), beego.AppConfig.String("wxpayAppKey"), beego.AppConfig.String("wxpayAppMchID"), certPEMBlock, keyPEMBlock) - // } if globals.TLPayNotifyURL != "" { TLpayAPI = tonglianpayapi.New(beego.AppConfig.String("tonglianPayAppID"), beego.AppConfig.String("tonglianPayKey"), beego.AppConfig.String("tonglianPayCusID"), beego.AppConfig.String("wxpayAppID"))