|
@@ -20,15 +20,14 @@ import (
|
|
//vip订阅付费
|
|
//vip订阅付费
|
|
type SubVipPayOrder struct {
|
|
type SubVipPayOrder struct {
|
|
*xweb.Action
|
|
*xweb.Action
|
|
- createOrder xweb.Mapper `xweb:"/jypay/vipsubscribe/createOrder"` //创建订单并支付
|
|
|
|
- orderToPay xweb.Mapper `xweb:"/jypay/vipsubscribe/orderToPay"` //支付已创建订单
|
|
|
|
|
|
+ createOrder xweb.Mapper `xweb:"/vipsubscribe/createOrder"` //创建订单并支付
|
|
|
|
+ orderToPay xweb.Mapper `xweb:"/vipsubscribe/orderToPay"` //支付已创建订单
|
|
}
|
|
}
|
|
|
|
|
|
func init() {
|
|
func init() {
|
|
xweb.AddAction(&SubVipPayOrder{})
|
|
xweb.AddAction(&SubVipPayOrder{})
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
//创建订单返回支付串
|
|
//创建订单返回支付串
|
|
func (this *SubVipPayOrder) CreateOrder() {
|
|
func (this *SubVipPayOrder) CreateOrder() {
|
|
area := qutil.ObjToMap(this.GetString("area"))
|
|
area := qutil.ObjToMap(this.GetString("area"))
|
|
@@ -43,6 +42,9 @@ func (this *SubVipPayOrder) CreateOrder() {
|
|
if len(industry) == 1 { //去掉[""]
|
|
if len(industry) == 1 { //去掉[""]
|
|
industry = []string{}
|
|
industry = []string{}
|
|
}
|
|
}
|
|
|
|
+ if !(payWay == "wx_js" || payWay == "wx_app" || payWay == "ali_app") {
|
|
|
|
+ return &entity.FuncResult{false, errors.New("未知支付"), nil}
|
|
|
|
+ }
|
|
date_count, date_unit, err := checkReqDate(date)
|
|
date_count, date_unit, err := checkReqDate(date)
|
|
if err != nil {
|
|
if err != nil {
|
|
return &entity.FuncResult{false, err, nil}
|
|
return &entity.FuncResult{false, err, nil}
|
|
@@ -62,39 +64,56 @@ func (this *SubVipPayOrder) CreateOrder() {
|
|
return &entity.FuncResult{false, errors.New("创建订单出错"), nil}
|
|
return &entity.FuncResult{false, errors.New("创建订单出错"), nil}
|
|
}
|
|
}
|
|
//计算价格
|
|
//计算价格
|
|
- totalfee := entity.GetSubVipPrice(area, industry, date_count, date_unit)
|
|
|
|
|
|
+ //totalfee := entity.GetSubVipPrice(area, industry, date_count, date_unit)
|
|
|
|
+ totalfee := 1
|
|
//创建订单
|
|
//创建订单
|
|
- tradeno, ret := pay.WxStruct.CreatePrepayOrder( "e", this.IP(), openId, "", totalfee)
|
|
|
|
- if ret == nil || (*ret)["status"] != "1" {
|
|
|
|
- errMsg := "创建微信订单出错"
|
|
|
|
- if (*ret)["errcodedes"] != "" {
|
|
|
|
- errMsg = (*ret)["errcodedes"]
|
|
|
|
- } else if (*ret)["errcode"] != "" {
|
|
|
|
- errMsg = (*ret)["errcode"]
|
|
|
|
|
|
+ tradeno, prepayid, payStr := "", "", ""
|
|
|
|
+
|
|
|
|
+ if payWay == "wx_js" { //微信js支付
|
|
|
|
+ var ret *map[string]string
|
|
|
|
+ tradeno, ret = pay.WxStruct.CreatePrepayOrder(pay.WX_SUBVIP_JSAPI, this.IP(), openId, "", totalfee)
|
|
|
|
+ if ret == nil || (*ret)["status"] != "1" {
|
|
|
|
+ errMsg := "创建微信订单出错"
|
|
|
|
+ if (*ret)["errcodedes"] != "" {
|
|
|
|
+ errMsg = (*ret)["errcodedes"]
|
|
|
|
+ } else if (*ret)["errcode"] != "" {
|
|
|
|
+ errMsg = (*ret)["errcode"]
|
|
|
|
+ }
|
|
|
|
+ return &entity.FuncResult{false, errors.New(errMsg), nil}
|
|
}
|
|
}
|
|
- return &entity.FuncResult{false, errors.New(errMsg), nil}
|
|
|
|
|
|
+ prepayid = qutil.ObjToString((*ret)["prepayid"])
|
|
|
|
+ payStr = pay.GetWxJsPayStr(prepayid)
|
|
|
|
+ } else if payWay == "wx_app" {
|
|
|
|
+ var ret *map[string]string
|
|
|
|
+ tradeno, ret = pay.WxStruct.CreatePrepayOrder(pay.WX_SUBVIP_JSAPI, this.IP(), openId, "", totalfee)
|
|
|
|
+ if ret == nil || (*ret)["status"] != "1" {
|
|
|
|
+ errMsg := "创建微信订单出错"
|
|
|
|
+ if (*ret)["errcodedes"] != "" {
|
|
|
|
+ errMsg = (*ret)["errcodedes"]
|
|
|
|
+ } else if (*ret)["errcode"] != "" {
|
|
|
|
+ errMsg = (*ret)["errcode"]
|
|
|
|
+ }
|
|
|
|
+ return &entity.FuncResult{false, errors.New(errMsg), nil}
|
|
|
|
+ }
|
|
|
|
+ prepayid = qutil.ObjToString((*ret)["prepayid"])
|
|
|
|
+ payStr = pay.WxStruct.GetAppWxPayStr(prepayid)
|
|
}
|
|
}
|
|
- //存入订单表
|
|
|
|
- ordercode := pay.GetOrderCode(openId)
|
|
|
|
- prepayid := qutil.ObjToString((*ret)["prepayid"])
|
|
|
|
- jsPayParam := pay.GetWxJsPayStr(prepayid)
|
|
|
|
-
|
|
|
|
- filter := map[string]interface{}{
|
|
|
|
- "_id": mog_id,
|
|
|
|
- "area": area,
|
|
|
|
- "industry": industry,
|
|
|
|
- "cyclecount": date_count, //时长
|
|
|
|
- "cycleunit": date_unit, //单位
|
|
|
|
|
|
+ filter := entity.VipSimpleMsg{
|
|
|
|
+ mog_id,
|
|
|
|
+ area,
|
|
|
|
+ industry,
|
|
|
|
+ date_count,
|
|
|
|
+ date_unit,
|
|
}
|
|
}
|
|
filterStr, _ := json.Marshal(filter)
|
|
filterStr, _ := json.Marshal(filter)
|
|
-
|
|
|
|
|
|
+ ordercode := pay.GetOrderCode(userId)
|
|
orderid := util.Mysql.Insert("dataexport_order", map[string]interface{}{
|
|
orderid := util.Mysql.Insert("dataexport_order", map[string]interface{}{
|
|
"order_money": totalfee,
|
|
"order_money": totalfee,
|
|
"order_status": 0,
|
|
"order_status": 0,
|
|
"user_nickname": qutil.ObjToString(this.GetSession("s_nickname")),
|
|
"user_nickname": qutil.ObjToString(this.GetSession("s_nickname")),
|
|
"user_openid": openId,
|
|
"user_openid": openId,
|
|
"prepay_id": prepayid,
|
|
"prepay_id": prepayid,
|
|
- "code_url": jsPayParam,
|
|
|
|
|
|
+ "code_url": payStr,
|
|
"out_trade_no": tradeno,
|
|
"out_trade_no": tradeno,
|
|
"order_code": ordercode,
|
|
"order_code": ordercode,
|
|
"product_type": "VIP订阅",
|
|
"product_type": "VIP订阅",
|
|
@@ -109,10 +128,7 @@ func (this *SubVipPayOrder) CreateOrder() {
|
|
if orderid == -1 {
|
|
if orderid == -1 {
|
|
return &entity.FuncResult{false, errors.New("数据库操作异常"), nil}
|
|
return &entity.FuncResult{false, errors.New("数据库操作异常"), nil}
|
|
}
|
|
}
|
|
- return &entity.FuncResult{true, nil, map[string]interface{}{
|
|
|
|
- "code": ordercode,
|
|
|
|
- "res": jsPayParam,
|
|
|
|
- }}
|
|
|
|
|
|
+ return &entity.FuncResult{true, nil, map[string]interface{}{"code": ordercode, "res": payStr}}
|
|
}()
|
|
}()
|
|
if r.Err != nil {
|
|
if r.Err != nil {
|
|
log.Printf("%s CreateOrder err:%v\n", userId, r.Err.Error())
|
|
log.Printf("%s CreateOrder err:%v\n", userId, r.Err.Error())
|
|
@@ -140,9 +156,7 @@ func (this *SubVipPayOrder) OrderToPay() {
|
|
jsPayParam := qutil.ObjToString((*oData)["code_url"])
|
|
jsPayParam := qutil.ObjToString((*oData)["code_url"])
|
|
if time.Now().Before(prepayTime.Add(time.Hour*2)) && jsPayParam != "" {
|
|
if time.Now().Before(prepayTime.Add(time.Hour*2)) && jsPayParam != "" {
|
|
//未过期
|
|
//未过期
|
|
- return &entity.FuncResult{true, nil, map[string]interface{}{
|
|
|
|
- "res": jsPayParam,
|
|
|
|
- }}
|
|
|
|
|
|
+ return &entity.FuncResult{true, nil, map[string]interface{}{"res": jsPayParam}}
|
|
}
|
|
}
|
|
//重新生成订单
|
|
//重新生成订单
|
|
openId := qutil.ObjToString((*oData)["user_openid"])
|
|
openId := qutil.ObjToString((*oData)["user_openid"])
|
|
@@ -170,7 +184,7 @@ func (this *SubVipPayOrder) OrderToPay() {
|
|
if !ok {
|
|
if !ok {
|
|
return &entity.FuncResult{false, errors.New("数据库操作异常"), nil}
|
|
return &entity.FuncResult{false, errors.New("数据库操作异常"), nil}
|
|
}
|
|
}
|
|
- return &entity.FuncResult{true, nil, map[string]interface{}{"res": jsPayParam }}
|
|
|
|
|
|
+ return &entity.FuncResult{true, nil, map[string]interface{}{"res": jsPayParam}}
|
|
}()
|
|
}()
|
|
if r.Err != nil {
|
|
if r.Err != nil {
|
|
log.Printf("%s CreateOrder err:%v\n", userId, r.Err.Error())
|
|
log.Printf("%s CreateOrder err:%v\n", userId, r.Err.Error())
|
|
@@ -200,4 +214,3 @@ func checkReqDate(dateStr string) (cyclecount, cycleunit int, err error) {
|
|
}
|
|
}
|
|
return -1, -1, errors.New(fmt.Sprintf("日期%s格式化出错", dateStr))
|
|
return -1, -1, errors.New(fmt.Sprintf("日期%s格式化出错", dateStr))
|
|
}
|
|
}
|
|
-
|
|
|