예제 #1
0
        public async Task <object> PostShenJiaRecharge([FromBody] ShenJiaRechargeViewModel model)
        {
            MessageBase2      result = new MessageBase2();
            RechargeRecordDto dto    = new RechargeRecordDto()
            {
                UserId    = model.UserId,
                OrderNo   = SysHelper.GenerateTradeNo(),
                Money     = model.Money,
                WareDesc  = model.Type, //"身家充值",
                OrderName = model.Type, //"身家充值"
                Type      = model.Type
            };
            int id = await _rechargeRecordService.AddAsync(dto);

            string passbackParams = "merchantType=身家充值&id=" + id;

            if (model.PayType == "Ali")
            {
                result.Data = AliPaySdk.Signature(model.Type, model.Type, model.Money.ToString(CultureInfo.InvariantCulture), dto.OrderNo, passbackParams);
            }
            if (model.PayType == "Wx")
            {
                result.Data = WxPaySdk.UnifiedOrder(model.Type, model.Type, model.Money.ToString(CultureInfo.InvariantCulture), dto.OrderNo, HttpContext.GetUserIp(), passbackParams);
            }

            return(result);
        }
예제 #2
0
        public async Task <object> AlipayNotify()
        {
            IDictionary <string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                bool verifyResult = AliPaySdk.VerifySignature(sPara);

                if (verifyResult)                                                                                            //验证成功
                {
                    if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS") //在指定时间段内未支付时关闭的交易;在交易完成全额退款成功时关闭的交易。//交易成功,且可对该交易做操作,如:多级分润、退款等。
                    {
                        string passbackParams           = Request.Form["passback_params"];
                        IDictionary <string, string> ps = SysHelper.GetUrlParam(passbackParams);
                        int id = ps["id"].ToInt32(); //兑换事件Id
                        switch (ps["merchantType"])
                        {
                        case "身家充值":
                            await _rechargeRecordService.DealWithAsync(id);

                            break;

                        case "兑换租赁":
                            await _exchangeEventService.DealWithAsync(id, "Ali");

                            break;
                        }
                    }
                    else
                    {
                        LogHelper.WriteLog("错误:支付失败");
                    }

                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                    return("success");  //请不要修改或删除

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    LogHelper.WriteLog("错误:验证失败");
                    return("fail");
                }
            }
            else
            {
                LogHelper.WriteLog("错误:无通知参数");
                return("无通知参数");
            }
        }
예제 #3
0
        public IActionResult Refund(int id)
        {
            MessageBase result = new MessageBase();
            var         dto    = _refundService.Find(id);
            string      s      = AliPaySdk.FundTrans(dto.Account, dto.RealName, dto.Money.ToString(CultureInfo.InvariantCulture), dto.OutBizNo);

            if (s == "10000")
            {
                this._refundService.UpdateDeposit(id);
                result.Status = "true";
            }
            else
            {
                result.Status  = Permanent.FAILED;
                result.Message = s;
            }

            return(Json(result));
        }
예제 #4
0
        public async Task <object> Post([FromBody] ExchangeEventViewModel model)
        {
            MessageBase2 result = new MessageBase2();

            var dto = await _exchangeService.FindAsync(model.ExId);

            decimal postage = dto.Postage == 0 ? await _postageService.GetPostageAsync() : dto.Postage; //邮费

            string  totalAmount = "";                                                                   //金额
            string  outTradeNo  = SysHelper.GenerateTradeNo();
            int     dep         = 0;                                                                    //押金
            decimal shenJia     = 0;

            switch (model.Examine)
            {
            case "身家兑换":
                shenJia = dto.Official.ToDecimal();;
                if (shenJia - (await _memberService.FindAsync(model.UserId)).ShenJia > 0)
                {
                    result.Success  = Permanent.FAILED;
                    result.Error    = (int)StatusCodeEnum.FORBIDDEN;
                    result.ErrorMsg = "身家不足";
                    return(result);
                }
                totalAmount = postage.ToString(CultureInfo.InvariantCulture);      //邮费
                break;

            case "会员租赁":
                dep = await _memberService.GetDepositAsync(model.UserId, dto.Official.ToInt32()); //总押金

                totalAmount = (postage + dep).ToString("0.00");                                   //邮费+押金
                break;

            case "单次租赁":
                decimal price = dto.Rent == 0 ? 30 : dto.Rent;
                dep = await _memberService.GetDepositAsync(model.UserId, dto.Official.ToInt32()); //总押金

                totalAmount = (postage + dep + price).ToString("0.00");                           //邮费+押金+30
                break;

            case "兑换券":
                postage = 0;
                dep     = await _memberService.GetDepositAsync(model.UserId, dto.Official.ToInt32()); //总押金

                totalAmount = (postage + dep).ToString("0.00");                                       //邮费+押金
                break;
            }

            ExchangeEventDto eedto = new ExchangeEventDto()
            {
                Deposit   = dep,
                UserId    = model.UserId,
                OrderNo   = outTradeNo,
                Examine   = model.Examine,
                AddressId = model.AddressId,
                ExId      = model.ExId,
                VouId     = model.VoucherId,
                Postage   = postage.ToDecimal(),
                ShenJia   = shenJia
            };
            int eeId = await _exchangeEventService.AddAsync(eedto);

            string passbackParams = "merchantType=兑换租赁&id=" + eeId;

            if (model.PayType == "Ali")
            {
                result.Data = AliPaySdk.Signature(dto.Title, model.Examine, totalAmount, outTradeNo, passbackParams);
            }
            if (model.PayType == "Wx")
            {
                result.Data = WxPaySdk.UnifiedOrder(dto.Title, model.Examine, totalAmount, outTradeNo, HttpContext.GetUserIp(), passbackParams);
            }



            return(result);
            //页面输出的response.Body就是orderString 可以直接给客户端请求,无需再做处理。
        }