wangkaiyue 5 年之前
父節點
當前提交
d748ae4cd9

+ 0 - 1
src/jfw/front/vipsubscribe.go

@@ -43,7 +43,6 @@ func (s *Subscribepay) Introduce() {
 //试用完善信息
 func (s *Subscribepay) TailInfo() {
 	s.Render("/weixin/vipsubscribe/trial_info.html", &s.T)
-	return nil
 }
 
 //订阅收费购买页面

+ 1 - 0
src/jfw/modules/app/src/app/pay/wxpay.go

@@ -19,5 +19,6 @@ func init() {
 		Sjdc_bodymsg:      util.ObjToString(payConfig["sjdc_bodymsg"]),
 		Sjdc_detailmsg:    util.ObjToString(payConfig["sjdc_detailmsg"]),
 		Sjbg_msg:          util.ObjToString(payConfig["sjbd_msg"]),
+		Subvip_msg:        util.ObjToString(payConfig["subvip_msg"]),
 	}
 }

+ 116 - 0
src/jfw/pay/vipSubscribePay.go

@@ -0,0 +1,116 @@
+package pay
+
+import (
+	"errors"
+	"fmt"
+	"jfw/config"
+	"jfw/public"
+	"log"
+	qutil "qfw/util"
+	"strconv"
+	"strings"
+
+	"time"
+
+	"github.com/go-xweb/xweb"
+)
+
+//订单结构
+type Order struct {
+	*xweb.Action
+	buyStatus   xweb.Mapper `xweb:"/front/vipsubscribe/buyStatus"`   //获取用户已购买
+	createOrder xweb.Mapper `xweb:"/front/vipsubscribe/createOrder"` //创建订单
+}
+
+//获取已购买选项
+func (this *Order) BuyStatus() {
+	userid := qutil.ObjToString(this.GetSession("userId"))
+	r := map[string]interface{}{"success": false}
+	if userid != "" {
+		m, ok := public.MQFW.FindById("user", userid, `{"i_vipstatus":1,"o_area":1,"a_buyerindustry":1}`)
+		if ok && len(*m) > 0 {
+			r["success"] = true
+			r["area"] = qutil.ObjToMap((*m)["o_area"])
+			r["industry"] = (*m)["a_buyerindustry"]
+			//r["industry"] = qutil.obj (*m)["a_buyerindustry"]
+			r["vipStatus"] = qutil.IntAll((*m)["i_vipstatus"])
+		}
+	}
+	this.ServeJson(r)
+}
+
+//去支付
+func (this *Order) CreateOrder() {
+	area := qutil.ObjToMap(this.GetString("area"))
+	industry := strings.Split(this.GetString("industry"), ",")
+	date := this.GetString("date")
+	payWay := this.GetString("payWay")
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	openId := qutil.ObjToString(this.GetSession("s_m_openid"))
+	ok, str := func() (bool, string) {
+		//数据校验
+		date_count, date_unit, err := checkReqDate(date)
+		if err != nil {
+			return false, err.Error()
+		}
+		log.Println(area, industry, date, payWay)
+		//插入订单表
+		mog_id := public.MQFW.Save("subvip_select", map[string]interface{}{
+			"o_area":       area,     //地区(对象)
+			"a_industry":   industry, //行业(数组)
+			"s_userid":     userId,
+			"s_openid":     openId,
+			"i_cyclecount": date_count, //时长
+			"i_cycleunit":  date_unit,  //单位
+			"i_comeintime": time.Now().Unix(),
+		})
+		if mog_id == "" {
+			return false, "创建订单出错"
+		}
+		//计算价格
+		totalfee := 1
+		//创建订单
+		tradeno, ret := public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), "e", this.IP(), openId, "", totalfee)
+		if ret == nil {
+			return false, "创建微信订单出错"
+		}
+		log.Println(tradeno, ret)
+		//存入订单表
+
+		//返回订单支付字符串
+		return true, ""
+	}()
+
+	this.ServeJson(map[string]interface{}{
+		"success": ok,
+		"Str":     str,
+	})
+}
+
+//查询订单是否支付
+func (this *Order) IsPaySuccess() {
+
+}
+
+//cycleunit(1:年 2:月)
+//cyclecount 数字长度
+func checkReqDate(dateStr string) (cyclecount, cycleunit int, err error) {
+	if strings.HasSuffix(dateStr, "年") {
+		cycleunit = 1
+		dateStr = strings.Replace(dateStr, "年", "", -1)
+		cyclecount, err = strconv.Atoi(dateStr)
+		if cyclecount > 3 && err == nil {
+			err = errors.New(fmt.Sprintf("日期%s返回超出最大值", dateStr))
+		}
+		return
+	} else if strings.HasSuffix(dateStr, "月") {
+		cycleunit = 1
+		dateStr = strings.Replace(dateStr, "个月", "", -1)
+		cyclecount, err = strconv.Atoi(dateStr)
+		if cyclecount > 12 && err == nil {
+			err = errors.New(fmt.Sprintf("日期%s范围超出最大值", dateStr))
+		}
+		return
+	}
+	return -1, -1, errors.New(fmt.Sprintf("日期%s格式化出错", dateStr))
+}

+ 10 - 0
src/jfw/public/dataexport.go

@@ -71,6 +71,7 @@ type WeixinStruct struct {
 	Sjdc_bodymsg      string
 	Sjdc_detailmsg    string
 	Sjbg_msg          string
+	Subvip_msg        string
 	OpenidSwitch      *map[string]interface{}
 }
 
@@ -102,6 +103,15 @@ func (w *WeixinStruct) CreatePrepayOrder(weixinrpc, tradeno, ip, openid, detailm
 			tradeType = "APP"
 			notifyUrl = config.Sysconfig["webdomain"].(string) + "/jyapp/dataReport/wxpay/callback"
 		}
+	} else if tradeno == "e" || tradeno == "E" { //vip订阅
+		attachmsg, bodymsg, detailmsg = w.Subvip_msg, w.Subvip_msg, w.Subvip_msg
+		if tradeno == "e" {
+			tradeType = "JSAPI"
+			notifyUrl = config.Sysconfig["webdomain"].(string) + "/weixin/pay/callback"
+		} else if tradeno == "E" {
+			tradeType = "APP"
+			notifyUrl = config.Sysconfig["webdomain"].(string) + "/jyapp/dataReport/wxpay/callback"
+		}
 	}
 	tradeno = w.GetTradeno(tradeno)
 	//测试环境微信支付需要转换对应的正式环境的openid

+ 1 - 1
src/web/templates/weixin/vipsubscribe/vip_purchase.html

@@ -489,7 +489,7 @@
                 var time=$(".info:eq(2)").val().trim();
 
                 console.log(area,industry,time,payWay)
-                $DoPost("/subscribepay/order/toPay",{"area":area,"industry":industry,"time":time,"payWay":payWay},function(r){
+                $DoPost("/subscribepay/order/toPay",{"area":area,"industry":industry.join(","),"time":time,"payWay":payWay},function(r){
                   if(r.success){
                     $(".phone").val(r.phoneNum);
                     check_tel($('.phone'),$('.code_btn'),false);