示例#1
0
        /// <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()));
            }
        }