/// <summary> /// 用户发起拼团支付 /// </summary> /// <param name="isstart">1开团 2参团</param> /// <param name="gid"></param> /// <param name="uid"></param> /// <returns></returns> public ResultModel PayGroup(int isstart, int gid, int uid, decimal totalfee) { try { using (brnshopEntities context = new brnshopEntities()) { if (isstart == 1) { var groupCount = context.bsp_groups.Where(t => t.startuid == uid & t.groupinfoid == gid).Count(); if (groupCount > 0) { return(ResultModel.Fail("您已参与过该团")); } } else { var groupCount = context.bsp_groupdetails.Where(t => t.uid == uid & t.groupid == gid).Count(); if (groupCount > 0) { return(ResultModel.Fail("您已参与过该团")); } } var user = context.bsp_users.SingleOrDefault(t => t.uid == uid); WXPayHelper wXPayHelper = new WXPayHelper(); var unifiedorderResult = wXPayHelper.unifiedorderForGroup(isstart, gid, uid, "拼团", user.openid, totalfee); if (!unifiedorderResult.Item1) { return(ResultModel.Fail("拼团支付调用微信下单接口失败,详情见日志")); } SortedDictionary <string, object> payDic = unifiedorderResult.Item2 as SortedDictionary <string, object>; var timestamp = WXPayHelper.GetTimeStamp(); string aSign = $@"appId={payDic["appid"]}&nonceStr={payDic["nonce_str"].ToString()}&package=prepay_id={payDic["prepay_id"].ToString()}&signType=MD5&timeStamp={timestamp}&key={WXPayHelper.apisecret}"; WxpayDataForApi model = new WxpayDataForApi(); model.appId = payDic["appid"].ToString(); model.nonceStr = payDic["nonce_str"].ToString(); model.package = $@"prepay_id={payDic["prepay_id"].ToString()}"; model.paySign = EncryptHelp.EncryptMD5(aSign); model.signType = WxPayAPI.WxPayData.SIGN_TYPE_MD5; model.timeStamp = timestamp; return(ResultModel.Success("", model)); } } catch (Exception ex) { Logger._.Error("PayGroup方法,", ex); return(ResultModel.Error(ex.ToString())); } }