public ActionResult JsApiPayment(FormCollection form) { var model = new JsPayViewModel(); var error = new WeiXinPaymentErrorModel(); var processor = _paymentService.LoadPaymentMethodBySystemName("Payments.WeiXin") as WeiXinPaymentProcessor; if (processor == null || !processor.IsPaymentMethodActive(_paymentSettings) || !processor.PluginDescriptor.Installed) { error.Message = "微信支付服务终止"; } else { try { var appId = form["appId"]; var timeStamp = form["timeStamp"]; var nonceStr = form["nonceStr"]; var package = form["package"]; var signType = form["signType"]; var paySign = form["paySign"]; var orderId = form["orderid"]; var total = form["total"]; if (string.IsNullOrWhiteSpace(appId) || string.IsNullOrWhiteSpace(timeStamp) || string.IsNullOrWhiteSpace(nonceStr) || string.IsNullOrWhiteSpace(package) || string.IsNullOrWhiteSpace(signType) || string.IsNullOrWhiteSpace(paySign) || string.IsNullOrWhiteSpace(orderId) || string.IsNullOrWhiteSpace(total)) { error.Message = "页面传参出错,请返回重试"; } else { model.AppId = appId; model.TimeStamp = timeStamp; model.NonceStr = nonceStr; model.Package = package; model.SignType = signType; model.PaySign = paySign; model.OrderId = orderId; model.Total = total; } } catch (NopException ex) { error.Message = ex.Message; } } if (error.HasError) { return(View("~/Plugins/Payments.WeiXin/Views/PaymentWeiXin/Error.cshtml", error)); } return(View("~/Plugins/Payments.WeiXin/Views/PaymentWeiXin/JsApiPayment.cshtml", model)); }
public ActionResult ProcessPayment(FormCollection form) { var model = new WeiXinPaymentModel(Path.Combine(_webHelper.GetStoreHost(_webHelper.IsCurrentConnectionSecured()), "Plugins/PaymentWeiXin/QueryOrder")); var error = new WeiXinPaymentErrorModel(); var processor = _paymentService.LoadPaymentMethodBySystemName("Payments.WeiXin") as WeiXinPaymentProcessor; if (processor == null || !processor.IsPaymentMethodActive(_paymentSettings) || !processor.PluginDescriptor.Installed) { error.Message = "微信支付服务终止"; } else { try { if (form.HasKeys()) { if (!string.IsNullOrWhiteSpace(form["result"])) { var wxModel = new WxPayData(); wxModel.FromXml(HttpUtility.HtmlDecode(form["result"]), _weiXinPaymentSettings.AppSecret); if (wxModel.IsSet("code_url")) { model.QRCode = processor.GetQrCode(wxModel.GetValue("code_url").ToString()); if (!string.IsNullOrWhiteSpace(form["orderid"])) { int orderId; if (int.TryParse(form["orderid"], out orderId)) { var order = _orderService.GetOrderById(orderId); if (order != null) { if (order.Customer.Id == _workContext.CurrentCustomer.Id) { if (_orderProcessingService.CanMarkOrderAsPaid(order)) { if (!string.IsNullOrWhiteSpace(form["total"]) && form["total"] == order.OrderTotal.ToString("0.00")) { model.OrderId = order.Id.ToString(CultureInfo.InvariantCulture); model.Total = order.OrderTotal.ToString("¥0.00"); } else { error.Message = "价格不匹配"; } } else { if (order.PaymentStatus == PaymentStatus.Paid) { error.Message = "您已付款,请勿重复提交"; } else { error.Message = "订单状态错误"; } } } else { error.Message = "用户不匹配"; } } else { error.Message = "订单号不存在"; } } else { error.Message = "无法读取订单号"; } } else { error.Message = "订单号丢失"; } } else { error.Message = "无法读取二维码"; } } else if (!string.IsNullOrWhiteSpace(form["nativeUrl"])) { model.QRCode = processor.GetQrCode(form["nativeUrl"]); if (!string.IsNullOrWhiteSpace(form["orderid"])) { int orderId; if (int.TryParse(form["orderid"], out orderId)) { var order = _orderService.GetOrderById(orderId); if (order != null) { if (order.Customer.Id == _workContext.CurrentCustomer.Id) { if (_orderProcessingService.CanMarkOrderAsPaid(order)) { if (!string.IsNullOrWhiteSpace(form["total"]) && form["total"] == order.OrderTotal.ToString("0.00")) { model.OrderId = order.Id.ToString(CultureInfo.InvariantCulture); model.Total = order.OrderTotal.ToString("¥0.00"); } else { error.Message = "价格不匹配"; } } else { if (order.PaymentStatus == PaymentStatus.Paid) { error.Message = "您已付款,请勿重复提交"; } else { error.Message = "订单状态错误"; } } } else { error.Message = "用户不匹配"; } } else { error.Message = "订单号不存在"; } } else { error.Message = "无法读取订单号"; } } else { error.Message = "订单号丢失"; } } else { error.Message = "参数错误"; } } else { error.Message = "没有参数"; } } catch (NopException ex) { error.Message = ex.Message; } } if (error.HasError) { return(View("~/Plugins/Payments.WeiXin/Views/PaymentWeiXin/Error.cshtml", error)); } return(View("~/Plugins/Payments.WeiXin/Views/PaymentWeiXin/ProcessPayment.cshtml", model)); }