Пример #1
0
        public ReturnResult SimulationMTGetDeal(string url, MtpBalanceRequestBody body)
        {
            ReturnResult result = new ReturnResult
            {
                IsSuccess = false,
            };

            try
            {
                MtpBalanceRequest requestData = new MtpBalanceRequest
                {
                    partnerId = agentinfo.mt_partnerId.ConvertTo <int>(0),
                    body      = body
                };

                var responseStr = new MeiTuanInter(agentinfo.mt_partnerId, agentinfo.mt_secret, agentinfo.mt_client).DoRequest(url, JsonConvert.SerializeObject(requestData));
                if (string.IsNullOrEmpty(responseStr))
                {
                    result.Message = "返回数据为空";
                }
                else
                {
                    MtpBalanceResponse responseBody = (MtpBalanceResponse)JsonConvert.DeserializeObject(responseStr, typeof(MtpBalanceResponse));
                    if (responseBody.code == 200)
                    {
                        result.IsSuccess = true;
                        result.Message   = JsonConvert.SerializeObject(responseBody);
                    }
                    else
                    {
                        result.Message = responseBody.describe;
                    }
                }
            }
            catch (Exception ex)
            {
                result.Message = "异常" + ex.Message;
            }
            return(result);
        }
Пример #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            #region 记入日志表Meituan_reqlog
            string         reqip = CommonFunc.GetRealIP();
            Meituan_reqlog mlog  = new Meituan_reqlog
            {
                id                  = 0,
                reqstr              = _requestParam,
                subtime             = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                respstr             = "",
                resptime            = "",
                code                = "",
                describe            = "",
                req_type            = "",
                sendip              = reqip,
                stockagentcompanyid = 0
            };
            int logid = new Meituan_reqlogData().EditReqlog(mlog);
            mlog.id = logid;
            #endregion


            string date          = System.Web.HttpContext.Current.Request.Headers.Get("Date");
            string PartnerId     = System.Web.HttpContext.Current.Request.Headers.Get("PartnerId");
            string Authorization = System.Web.HttpContext.Current.Request.Headers.Get("Authorization");
            string requestMethod = System.Web.HttpContext.Current.Request.HttpMethod;
            string URI           = System.Web.HttpContext.Current.Request.CurrentExecutionFilePath;
            //authorization 形式: "MWS" + " " + client + ":" + sign;
            string mtSign = Authorization.Substring(Authorization.IndexOf(":") + 1);

            mlog.req_type = URI;

            agentinfo = new AgentCompanyData().GetAgentCompanyByMeituanPartnerId(PartnerId);
            #region 验证是否已经配置美团合作商信息
            if (agentinfo == null)
            {
                var response = new MtpBalanceResponse();
                response.partnerId = int.Parse(PartnerId);
                response.code      = 300;
                response.describe  = "分销尚未配置美团合作商信息(合作商PartnerId:" + PartnerId + ")";

                string json = JsonConvert.SerializeObject(response);

                //把处理结果录入日志
                mlog.respstr  = json;
                mlog.resptime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                mlog.code     = response.code.ToString();
                mlog.describe = response.describe;
                new Meituan_reqlogData().EditReqlog(mlog);

                LogHelper.RecordSelfLog("Error", "meituan", response.describe);

                Response.Write(json);
                return;
            }
            #endregion

            mlog.stockagentcompanyid = agentinfo.Id;

            #region 签名验证
            string beforeSign = requestMethod + " " + URI + "\n" + date;
            string afterSign  = new MeiTuanInter(agentinfo.mt_partnerId, agentinfo.mt_secret, agentinfo.mt_client).GetSign(beforeSign);
            //判断签名是否正确
            if (afterSign != mtSign)
            {
                var response = new MtpBalanceResponse();
                response.partnerId = int.Parse(PartnerId);
                response.code      = 300;
                response.describe  = "签名验证失败";

                string json = JsonConvert.SerializeObject(response);

                //把处理结果录入日志
                mlog.respstr  = json;
                mlog.resptime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                mlog.code     = response.code.ToString();
                mlog.describe = response.describe;
                new Meituan_reqlogData().EditReqlog(mlog);

                LogHelper.RecordSelfLog("Error", "meituan", "拉取产品 签名错误 mtSign-" + mtSign + "  meSign-" + afterSign);

                Response.Write(json);
                return;
            }
            #endregion

            string actionResult = GetBalance(mlog);

            Response.Write(actionResult);
        }
Пример #3
0
        private string GetBalance(Meituan_reqlog mlog)
        {
            var response = new MtpBalanceResponse();

            response.partnerId = agentinfo.mt_partnerId.ConvertTo <int>(0);
            var data = JsonConvert.DeserializeObject <MtpBalanceRequest>(_requestParam);

            if (data.partnerId == 0)
            {
                response.code     = 300;
                response.describe = "Body数据解析失败";
            }
            else
            {
                MtpBalanceRequestBody body = data.body;
                //因为我们系统没有给单个产品授权过额度,所以接收的请求body中产品id不用处理

                //得到分销的授权信息
                List <Agent_warrant> warrantinfolist = new AgentCompanyData().GetAgentWarrantList(agentinfo.Id, "1");
                if (warrantinfolist.Count == 1)
                {
                    //预付款账户余额	单位为分, 非预付款商家, 此值返回-1不要传0
                    int prepaidAccountBalance = -1;
                    //授信账户余额	    单位为分, 无授信账户, 此值返回-1不要传0
                    int creditAccountBalance = -1;
                    foreach (Agent_warrant rinfo in warrantinfolist)
                    {
                        prepaidAccountBalance = int.Parse(rinfo.Imprest.ToString("f0")) == 0 ? -1 : int.Parse(rinfo.Imprest.ToString("f0"));

                        creditAccountBalance = int.Parse(rinfo.Credit.ToString("f0")) == 0 ? -1 : int.Parse(rinfo.Credit.ToString("f0"));
                    }


                    List <MtpBalanceResponseBody> blist = new List <MtpBalanceResponseBody>();
                    if (data.body.partnerDealIds.Length > 0)
                    {
                        foreach (string dealid in data.body.partnerDealIds)
                        {
                            if (dealid != "")
                            {
                                blist.Add(new MtpBalanceResponseBody
                                {
                                    prepaidAccountBalance = prepaidAccountBalance,
                                    creditAccountBalance  = creditAccountBalance,
                                    partnerDealId         = dealid
                                });
                            }
                        }
                    }
                    else
                    {
                        blist.Add(new MtpBalanceResponseBody
                        {
                            prepaidAccountBalance = prepaidAccountBalance,
                            creditAccountBalance  = creditAccountBalance,
                            partnerDealId         = ""
                        });
                    }


                    response.code      = 200;
                    response.describe  = "successful";
                    response.partnerId = int.Parse(agentinfo.mt_partnerId);
                    response.body      = blist;
                }
                else
                {
                    response.code     = 300;
                    response.describe = "分销授权信息有误";
                }
            }

            string json = JsonConvert.SerializeObject(response);

            #region 把处理结果录入数据库
            mlog.respstr  = json;
            mlog.resptime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            mlog.code     = response.code.ToString();
            mlog.describe = response.describe;
            new Meituan_reqlogData().EditReqlog(mlog);
            #endregion

            return(json);
        }