Beispiel #1
0
        public async Task <IActionResult> PayNotify()
        {
            if (!Request.HasFormContentType)
            {
                return(BadRequest("参数错误"));
            }

            var formCollection = await Request.ReadFormAsync();

            if (formCollection == null || formCollection.Count <= 0)
            {
                throw new Exception("未解析到callback信息");
            }
            var sign = formCollection["sign"].ToString();

            var dict = new UmsPayDictionary();

            foreach (var key in formCollection.Keys)
            {
                if (key != "sign")
                {
                    dict.Add(key, formCollection[key]);
                }
            }

            // sign validation
            if (!UmsPay.Utility.UmsSignature.Validate(dict, sign, _options.SecretKey))
            {
                throw new Exception("签名校验失败");
            }

            // TODO: check if it is an repeat request and if is repeat we should return SUCCESS OR FAILED to terminate.
            var billPayment = dict["billPayment"];
            var str         = JsonConvert.SerializeObject(dict);
            var payResult   = JsonConvert.DeserializeObject <PayResultNotify>(str);

            payResult.Body           = str;
            payResult.BillPaymentObj = JsonConvert.DeserializeObject <BillPayment>(billPayment);

            if (payResult.BillStatus != BillStatus.Paid)
            {
                return(Content("FAILED"));
            }

            var billQuery = new BillQueryRequest
            {
                BillDate         = payResult.BillDate,
                BillNo           = payResult.BillNo,
                RequestTimestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
            };

            var res = await _client.ExecuteAsync(billQuery);

            if (res.BillStatus != BillStatus.Paid)
            {
                return(Content("FAILED"));
            }

            return(Content("SUCCESS"));
        }
Beispiel #2
0
        public async Task <IActionResult> About(BillQueryViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var req = new BillQueryRequest()
            {
                BillDate         = model.billDate,
                BillNo           = model.billNo,
                RequestTimestamp = model.requestTimestamp
            };
            var res = await _client.ExecuteAsync(req);

            return(Ok(res));
        }