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")); }
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)); }