示例#1
0
        //api.itorm.com/itapi/server/receiveApiNotice?requestId=100000029&amount=100
        public string receiveApiNotice()
        {
            string result               = "fail";
            bool   flag                 = false;
            string requestId            = TQuery.GetInput("requestId");
            noticeReceiveApiModel model = new noticeReceiveApiModel();

            model.code           = "0000";
            model.message        = "支付成功";
            model.amount         = TQuery.GetDecimal("amount", 0m).ToString("F2");
            model.fee            = (TQuery.GetDecimal("amount", 0m) * 0.002m).ToString("F2");
            model.externalld     = DateTime.Now.ToString("yyyyMMddHHmmssfff");
            model.payerPhone     = "15110167786";
            model.payerName      = "陈鑫";
            model.payTime        = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            model.requestId      = requestId;
            model.src            = "B";
            model.status         = "SUCCESS";
            model.lastNo         = "0239";
            model.bankCode       = "icbc";
            model.busiType       = "COMMON";
            model.customerNumber = "123456";

            //返回后日志记录
            Logs.WriteLog("回调参数:" + JsonConvert.SerializeObject(model), "d:\\Log\\Yeepay", "ReceiveApi");
            yeepayLogParasDao.Init(Convert.ToInt32(requestId), JsonConvert.SerializeObject(model), 2);

            //更新
            yeepayLogDao.UpdateState(Convert.ToInt32(requestId), model.code, model.message, (model.backState == 0 && model.status == "SUCCESS") ? 10 : -1);

            if (model.backState == 0 && model.status == "SUCCESS")//成功
            {
                var yeepayLog = yeepayLogDao.Single(Convert.ToInt32(requestId));
                var payRecord = payRecordDao.Single(yeepayLog.KeyId);
                if (payRecord.State == 1)
                {
                    result = "SUCCESS";
                    return(result);
                }
                //修改订单信息
                payRecord.PayTime    = Convert.ToDateTime(model.payTime);
                payRecord.State      = 1;
                payRecord.PayerPhone = model.payerPhone;
                payRecord.PayerName  = model.payerName;
                payRecord.LastNo     = model.lastNo;
                payRecord.Message    = model.message;
                payRecord.BankCode   = model.bankCode;
                payRecord.Fee        = Convert.ToDecimal(model.fee);
                payRecord.Src        = model.src;
                flag = payRecordDao.Update(payRecord);
                //添加支付银行卡
                int ubkCnt = userBankCardDao.Count(" UserId=@UserId and TypeId=0 and State=1 and  BankCard=@BankCard ", new { payRecord.UserId, payRecord.BankCard });
                if (ubkCnt == 0)
                {
                    UserBankCard ubk = new UserBankCard();
                    ubk.BankCard = payRecord.BankCard;
                    ubk.TypeId   = 1;
                    ubk.State    = 1;
                    ubk.UserId   = payRecord.UserId;
                    ubk.Mobile   = model.payerPhone;
                    ubk.IP       = ITOrm.Utility.Client.Ip.GetClientIp();
                    ubk.Platform = 1;
                    ubk.BankCode = model.bankCode;
                    userBankCardDao.Insert(ubk);
                }

                if (flag)
                {
                    result = "SUCCESS";
                }
            }
            return(result);
        }
示例#2
0
        //易宝收款回调
        public string receiveApi()
        {
            string[] paramtersKey       = System.Web.HttpContext.Current.Request.Form.AllKeys;
            var      sortedParamtersKey = from s in paramtersKey
                                          orderby s ascending
                                          select s;
            StringBuilder str = new StringBuilder();

            str.Append("{");
            foreach (string key in sortedParamtersKey)
            {
                str.AppendFormat("\"{0}\":\"{1}\",", key, System.Web.HttpContext.Current.Request.Form[key].Trim());
            }
            if (str.Length > 0)
            {
                str.Remove(str.Length - 1, 1);//移除最后一个逗号
            }
            str.Append("}");

            //返回后日志记录
            Logs.WriteLog("页面首次记录:" + str.ToString(), "d:\\Log\\Yeepay", "ReceiveApiNotice");
            noticeReceiveApiModel model = new noticeReceiveApiModel();

            model.code           = TQuery.GetString("code");
            model.message        = TQuery.GetString("message");
            model.amount         = TQuery.GetString("amount");
            model.fee            = TQuery.GetString("fee");
            model.externalld     = TQuery.GetString("externalld");
            model.payerPhone     = TQuery.GetString("payerPhone");
            model.payerName      = TQuery.GetString("payerName");
            model.payTime        = TQuery.GetString("payTime");
            model.requestId      = TQuery.GetString("requestId");
            model.src            = TQuery.GetString("src");
            model.status         = TQuery.GetString("status");
            model.lastNo         = TQuery.GetString("lastNo");
            model.bankCode       = TQuery.GetString("bankCode");
            model.busiType       = TQuery.GetString("busiType");
            model.customerNumber = TQuery.GetString("customerNumber");
            model.createTime     = TQuery.GetString("createTime");
            model.hmac           = TQuery.GetString("hmac");
            //string json = "{\"requestId\":\"100000091\",\"customerNumber\":\"10019321635\",\"externalld\":\"661461948596449280\",\"createTime\":\"2018-02-24 15:49:19\",\"payTime\":\"2018-02-24 16:17:55\",\"amount\":\"100\",\"fee\":\"0.43\",\"status\":\"SUCCESS\",\"busiType\":\"COMMON\",\"bankCode\":\"CCB\",\"payerName\":\"刘*敏\",\"payerPhone\":\"185****6235\",\"lastNo\":\"625362******0286\",\"src\":\"B\",\"mainCustomerNumber\":null,\"hmac\":\"54a4145327a2db38e2ab7f0146eb2cea\",\"code\":\"0000\",\"message\":\"成功\",\"backState\":0}";
            //model = JsonConvert.DeserializeObject<noticeReceiveApiModel>(json);
            lock (lockReceiveApi)
            {
                string result = "fail";
                bool   flag   = false;
                //返回后日志记录
                Logs.WriteLog("回调参数:" + JsonConvert.SerializeObject(model), "d:\\Log\\Yeepay", "ReceiveApiNotice");
                yeepayLogParasDao.Init(Convert.ToInt32(model.requestId), JsonConvert.SerializeObject(model), 2);


                //签名验证
                StringBuilder sb = new StringBuilder();
                sb.Append(model.code);
                sb.Append(model.message);
                sb.Append(model.requestId);
                sb.Append(model.customerNumber);
                sb.Append(model.externalld);
                sb.Append(model.createTime);
                sb.Append(model.payTime);
                sb.Append(model.amount);
                sb.Append(model.fee);
                sb.Append(model.status);
                sb.Append(model.busiType);
                sb.Append(model.bankCode);
                sb.Append(model.payerName);
                sb.Append(model.payerPhone);
                sb.Append(model.lastNo);
                sb.Append(model.src);

                string sign = ITOrm.Utility.Encryption.EncryptionHelper.HMACMD5(ITOrm.Payment.Yeepay.YeepayDepository.YeepayHmacKey, sb.ToString());
                if (model.hmac != sign)
                {
                    Logs.WriteLog($"签名比对失败:mac:{model.hmac},sign:{sign}", "d:\\Log\\Yeepay", "ReceiveApiNotice");
                    return(result);
                }
                //更新
                yeepayLogDao.UpdateState(Convert.ToInt32(model.requestId), model.code, model.message, (model.backState == 0 && model.status == "SUCCESS") ? 10 : -1);

                if (model.backState == 0 && model.status == "SUCCESS")//成功
                {
                    var yeepayLog = yeepayLogDao.Single(Convert.ToInt32(model.requestId));
                    var payRecord = payRecordDao.Single(yeepayLog.KeyId);
                    if (payRecord.State == 10)
                    {
                        result = "SUCCESS";
                        Logs.WriteLog($"重复处理:{result},payRecord.State == 10", "d:\\Log\\Yeepay", "ReceiveApiNotice");
                        return(result);
                    }
                    //修改订单信息
                    payRecord.PayTime = Convert.ToDateTime(model.payTime);
                    payRecord.State   = 10;
                    //payRecord.PayerPhone = model.payerPhone;
                    //payRecord.PayerName = model.payerName;
                    payRecord.LastNo  = model.lastNo;
                    payRecord.Message = model.message;
                    payRecord.Fee     = Convert.ToDecimal(model.fee);
                    payRecord.Src     = model.src;
                    flag = payRecordDao.Update(payRecord);
                    Logs.WriteLog($"修改订单信息:flag={flag}", "d:\\Log\\Yeepay", "ReceiveApiNotice");
                    ////添加支付银行卡
                    //int ubkCnt = userBankCardDao.Count(" UserId=@UserId and TypeId=1 and State=1 and  BankCard=@BankCard ", new { payRecord.UserId, payRecord.BankCard });
                    //Logs.WriteLog($"支付银行卡个数:ubkCnt:{ubkCnt}", "d:\\Log\\Yeepay", "ReceiveApiNotice");
                    //if (ubkCnt == 0)
                    //{
                    //    UserBankCard ubk = new UserBankCard();
                    //    ubk.BankCard = payRecord.BankCard;
                    //    ubk.TypeId = 1;
                    //    ubk.State = 1;
                    //    ubk.UserId = payRecord.UserId;
                    //    ubk.Mobile = model.payerPhone;
                    //    ubk.IP = ITOrm.Utility.Client.Ip.GetClientIp();
                    //    ubk.Platform = 1;
                    //    ubk.BankCode = model.bankCode;
                    //    int ubkId= userBankCardDao.Insert(ubk);
                    //    Logs.WriteLog($"支付银行卡添加Id:ubkId:{ubkId}", "d:\\Log\\Yeepay", "ReceiveApiNotice");
                    //}
                    if (flag)
                    {
                        result = "SUCCESS";
                    }
                }
                Logs.WriteLog($"返回结果:{result}", "d:\\Log\\Yeepay", "ReceiveApiNotice");
                return(result);
            }
        }