示例#1
0
        private void ExPayInfo(SetPayInfoArgsModel args, ShopPayInfo model)
        {
            if (model == null)
            {
                ShopPayInfo shopPayInfo = new ShopPayInfo()
                {
                    ShopId    = args.shopid.Value,
                    MchId     = args.mchid,
                    SecretKey = args.secretkey,
                    PayWay    = args.payway,
                    IsEnable  = args.isenable
                };
                string shopFlag = db.Query <Shop>()
                                  .Where(m => !m.IsDel)
                                  .Where(m => m.Id == args.shopid.Value)
                                  .Select(m => m.Flag)
                                  .FirstOrDefault();

                string appid = db.Query <ShopWechatOpenAuthorizer>()
                               .Where(m => !m.IsDel)
                               .Where(m => m.ShopId == args.shopid.Value)
                               .Select(m => m.WechatOpenAuthorizer)
                               .Select(m => m.AuthorizerAppId)
                               .FirstOrDefault();

                if (string.IsNullOrEmpty(appid))
                {
                    throw new Exception("请先在商户后台进行授权");
                }

                shopPayInfo.ShopFlag = shopFlag;
                shopPayInfo.AppId    = appid;
                shopPayInfo.AddTime  = DateTime.Now;
                db.AddTo <ShopPayInfo>(shopPayInfo);
                db.SaveChanges();
            }
            else
            {
                model.PayWay   = args.payway;
                model.MchId    = args.mchid;
                model.IsEnable = args.isenable;        //args.isenable;
                string appid = db.Query <ShopWechatOpenAuthorizer>()
                               .Where(m => !m.IsDel)
                               .Where(m => m.ShopId == args.shopid.Value)
                               .Select(m => m.WechatOpenAuthorizer)
                               .Select(m => m.AuthorizerAppId)
                               .FirstOrDefault();
                model.AppId = appid;
                Regex regex = new Regex(@"^\*+$");
                if (!regex.IsMatch(args.secretkey))
                {
                    model.SecretKey = args.secretkey;
                }
            }
        }
示例#2
0
        public APIResult SetPayInfo([FromBody] SetPayInfoArgsModel args)
        {
            if (!args.shopid.HasValue)
            {
                throw new ArgumentNullException("shopid");
            }
            var model = db.Query <ShopPayInfo>()
                        .Where(m => !m.IsDel)
                        .Where(m => m.ShopId == args.shopid.Value && m.PayWay == args.payway)
                        .FirstOrDefault();

            var isenablecount = db.Query <ShopPayInfo>()
                                .Where(m => !m.IsDel)
                                .Where(m => m.ShopId == args.shopid.Value && m.IsEnable == true).FirstOrDefault();

            //PayWay payWay = Enum.Parse<PayWay>(args.payway.ToString());

            if (isenablecount != null)
            {
                if (isenablecount.PayWay != args.payway && args.isenable)
                {
                    throw new Exception("一个商户同时只能开启一个支付通道!");
                }
            }
            //微信支付
            if (args.payway == PayWay.Wechat)
            {
                if (string.IsNullOrEmpty(args.mchid))
                {
                    throw new ArgumentNullException("商户号");
                }
                if (string.IsNullOrEmpty(args.secretkey))
                {
                    throw new ArgumentNullException("密钥");
                }
                ExPayInfo(args, model);
            }
            else if (args.payway == PayWay.Swiftpass)
            {
                ExPayInfo(args, model);
                model = db.Query <ShopPayInfo>()
                        .Where(m => !m.IsDel)
                        .Where(m => m.ShopId == args.shopid.Value && m.PayWay == args.payway)
                        .FirstOrDefault();
                //中信支付
                var swifpasskey = db.SwiftpassKey.FirstOrDefault(r => r.ShopFlag == model.ShopFlag);
                if (swifpasskey == null)
                {
                    SwiftpassKey key = new SwiftpassKey()
                    {
                        ShopFlag   = model.ShopFlag,
                        ReqUrl     = args.reqUrl,
                        PublicKey  = args.publicKey,
                        PrviateKey = args.prviateKey,
                        Notify     = args.notify,
                        IsEnable   = args.isenable
                    };
                    db.Add(key);
                    db.SaveChanges();
                }
                else
                {
                    if (string.IsNullOrEmpty(args.reqUrl) || string.IsNullOrEmpty(args.publicKey) ||
                        string.IsNullOrEmpty(args.prviateKey) || string.IsNullOrEmpty(args.notify)
                        )
                    {
                        throw new Exception("配置信息必须全部配置");
                    }

                    swifpasskey.ShopFlag   = model.ShopFlag;
                    swifpasskey.ReqUrl     = args.reqUrl;
                    swifpasskey.PublicKey  = args.publicKey;
                    swifpasskey.PrviateKey = args.prviateKey;
                    swifpasskey.Notify     = args.notify;
                    swifpasskey.IsEnable   = args.isenable;
                    model.IsEnable         = args.isenable;
                    db.Update(swifpasskey);
                }
            }

            db.SaveChanges();
            return(Success());
        }