public Task <Response <PlaceAnOrderInfoResponse> > StrokePay([FromBody] StrokePayRequest request) { return(this.strokeService.StrokePay(request)); }
/// <summary> /// 行程支付 /// </summary> /// <param name="request">The request.</param> /// <returns>Task<Response<PlaceAnOrderInfoResponse>>.</returns> /// <exception cref="NotImplementedException"></exception> public async Task <Response <PlaceAnOrderInfoResponse> > StrokePay(StrokePayRequest request) { var userId = contextAccessor.UserId(); var userInfo = await this.strokeContext.Users.FirstOrDefaultAsync(x => x.Id == userId); if (userInfo == null) { throw new Exception("获取用户信息失败"); } if (string.IsNullOrEmpty(userInfo.Cphone)) { return(new Response <PlaceAnOrderInfoResponse> { Code = 200, Message = "手机号未绑定" }); } var strokeInfo = await this.strokeContext.Strokes.FirstOrDefaultAsync(x => x.Id == request.StrokeId); if (strokeInfo == null) { throw new Exception("获取行程信息失败"); } #region 添加订单 long shareUser = 0; long.TryParse(request.ShareCode, out shareUser); long fromSource = 0; long.TryParse(request.From, out fromSource); Logger.LogDebug($"用户来源-from:{fromSource},分享用户:{shareUser}"); var orderInfo = this.strokeContext.Orders.Add(new Order { OrderNo = DateTime.Now.ToString("yyyyMMddHHmmssffff"), UserId = userId, StrokeId = strokeInfo.Id, Title = strokeInfo.Title, City = strokeInfo.City, Destination = strokeInfo.Destination, ImageUrl = strokeInfo.ImageUrl, NumberDay = strokeInfo.NumberDay, From = (UserFrom)fromSource, ShareUser = shareUser, OrderStatus = OrderStatus.NoPaid, Price = strokeInfo.Price, TotalAmount = strokeInfo.SpecialPrice, Payment = PaymentType.WeChat, Remark = "", TotalCount = 1 }); #endregion this.strokeContext.SaveChanges(); //支付 var weChatPay = new WeChatPayRequest { Body = HttpUtility.UrlEncode(orderInfo.Entity.Title), TotalFee = orderInfo.Entity.TotalAmount, SuccessUrl = request.SuccessUrl, FailedUrl = request.FaildUrl, NotifyUrl = this.weChatOptions.HostUrl + "/api/Payment/WeChatpayNotify", SignType = "MD5", OrderIds = orderInfo.Entity.Id.ToString() }; //获取微信公众号中,微信js 支付信息 var result = GetJsPayRedirect(weChatPay, PaymentType.WeChat); Logger.LogDebug($"支付链接-----{result}"); return(new Response <PlaceAnOrderInfoResponse> { Data = new PlaceAnOrderInfoResponse { OutTradeNo = orderInfo.Entity.Id.ToString(), PaymentType = PaymentType.WeChat, WeChatAmount = orderInfo.Entity.TotalAmount, MwebUrl = result } }); }