public WeixinTradeService() { string certPath = HttpRuntime.AppDomainAppPath.ToString() + WeixinConfig.SSLCERT_PATH; weixinPayApi = new WeixinPayApi(WeixinConfig.IP, WeixinConfig.APPID, WeixinConfig.MCHID, certPath, WeixinConfig.SSLCERT_PASSWORD, WeixinConfig.KEY, WeixinConfig.REPORT_LEVENL); _weixinKey = WeixinConfig.KEY; }
/// <summary> /// 确认结算 /// </summary> /// <param name="orderId"></param> /// <returns></returns> public JsonResult ConfirmOrderPayReturn(long orderId, int userId, int pageIndex, int pageSize) { var status = OrderStatus.Complete.GetHashCode(); var order = OrderService.GetOrder(userId, orderId); var user = UserService.GetUserByUserId(userId); var product = ProductService.GetProductById(order.ProductId); Result <DotNet.Common.Collections.PagedList <OrderManageViewModel> > orderList = new Result <Common.Collections.PagedList <OrderManageViewModel> >(); var isSuccess = false; var msg = ""; if (order.Status == OrderStatus.WaitingConfirm.GetHashCode() && product.EndTime.AddDays(product.EarningDay) < DateTime.Now) { if (order.PayType == 0) { //调取微信企业支付接口 var refundPrincipal = order.Price * order.ProductCount; //购买本金 var descPrincipal = string.Format("羊客【{0}】结算本金", product.Name); var payResult = WeixinPayApi.QYPaySplit(user.WxOpenId, orderId, refundPrincipal, descPrincipal, payUpperLimit); var refundBonus = product.Earning * order.ProductCount; var descBonus = string.Format("羊客【{0}】结算收益", product.Name); var payResultBonus = WeixinPayApi.QYPaySplit(user.WxOpenId, orderId, refundBonus, descBonus, payUpperLimit); if (payResult && payResultBonus) { isSuccess = true; } else { msg = "微信企业支付接口出现异常"; } orderList = ChangeOrderStatus(orderId, userId, pageIndex, pageSize, status); } else { //线下支付,直接修改订单状态 orderList = ChangeOrderStatus(orderId, userId, pageIndex, pageSize, status); isSuccess = true; } } else { msg = "订单状态不是【待确认结算】或订单尚未达到结算期"; orderList = OrderService.GetOrderList(pageIndex, pageSize); } var result = new { IsSuccess = isSuccess, Message = msg, PageIndex = orderList.Data.PageIndex, PageSize = orderList.Data.PageSize, List = orderList.Data.ToList(), Count = orderList.Data.TotalCount, PageNo = orderList.Data.TotalCount % orderList.Data.PageSize != 0 ? (orderList.Data.TotalCount / orderList.Data.PageSize) + 1 : orderList.Data.TotalCount / orderList.Data.PageSize }; return(Json(result, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 确认结算AJAX /// </summary> /// <param name="id"></param> /// <returns></returns> public JsonResult ConfirmOrderRefund(int id, int userId) { var success = true; var msg = ""; var paylog = WeiXinService.GetPayLogById(id); if (paylog.Id > 0) { //企业支付 var payCode = paylog.OrderId.ToString() + paylog.Id.ToString(); var payResultMsg = ""; var payResult = WeixinPayApi.QYPay(paylog.WxOpenId, payCode, paylog.Amount, paylog.Description, out payResultMsg); if (payResult == "SUCCESS") { success = true; //更新paylog状态 WeiXinService.WeixinPayLogUpdateStatus(id, 1); //确认是否都处于结算完成状态 var hasUnRefund = WeiXinService.WeixinPayLogCheckStatus(paylog.OrderId, 0);//返回是否还有状态为0的数据 //如果没有状态为0的数据,修改订单状态为已完成 if (!hasUnRefund) { var orderStatus = OrderStatus.Complete.GetHashCode(); OrderService.UpdateOrderStatus(userId, paylog.OrderId, orderStatus); } } else { success = false; msg = "企业支付接口调取失败,请稍后重试。原因:" + payResultMsg; } } else { success = false; msg = "结算记录不存在"; } var result = new { IsSuccess = success, Message = msg }; return(Json(result)); }