public static async Task <RegisterDOResponse> RegisterDO(RegisterDORequest request) { using (var client = new HttpClient()) { var serializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; var content = JsonConvert.DeserializeObject <Dictionary <string, string> >(JsonConvert.SerializeObject(request, serializerSettings)); var uri = new Uri(TestHost, "payment/rest/register.do"); var response = await client.PostAsync(uri, new FormUrlEncodedContent(content)); var responseContent = await response.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <RegisterDOResponse>(responseContent)); } }
public async Task <IActionResult> CreatePayment([FromBody] CreatePaymentRequest request) { var user = UserService.Get(long.Parse(User.Identity.Name)); if (user == null) { return(NotFound(new ResponseModel { Success = false, Message = "Пользователь не найден" })); } var wallet = UserWalletService.GetUserWallet(user); if (wallet == null) { return(NotFound(new ResponseModel { Success = false, Message = "Кошелек не найден" })); } var payment = new Payment { Wallet = wallet, Amount = request.Amount, Type = request.Type, Status = PaymentStatus.New }; PaymentService.Create(payment); var paymentRequest = new RegisterDORequest($"user#{user.ID}deposit#{payment.ID}_{DateTime.UtcNow.Millisecond}", (payment.Amount * 100)); if (request.SessionID != 0) { paymentRequest.SetSessionID(request.SessionID); } var paymentResponse = await SberbankAPI.RegisterDO(paymentRequest); if (paymentResponse.OrderId == null) { payment.Status = PaymentStatus.Canceled; PaymentService.Update(payment); return(BadRequest(new ResponseModel { Success = false, Message = $"{paymentResponse.ErrorMessage} Код ошибки: {paymentResponse.ErrorCode}" })); } payment.OrderID = paymentResponse.OrderId; PaymentService.Update(payment); return(Ok(new CreatePaymentResponse { RedirectUrl = paymentResponse.FormUrl })); }