public BookingPayment GetBookingPayment(int bookingId) { try { var booking = _bookingPaymentRepository.GetBookingPayment(bookingId); return(booking); } catch (Exception) { // Do nothing. } return(null); }
public async Task UpdateDanceCampBookingPaymentStatus(string transactionId, bool success) { try { _logger.Information($"transactionID: {transactionId}"); var booking = _bookingPaymentRepository.GetBookingPayment(transactionId); _logger.Information($"booking ID is: {booking.BookingId}"); byte[] secretKeyByteArray = Base32Encoding.ToBytes(_danceCampOptions.SecretKey); var totp = new Totp(secretKeyByteArray, 30, OtpHashMode.Sha1, 6); var totpCode = totp.ComputeTotp(); string status = success ? "Completed" : "Payment Failed"; var formContent = new FormUrlEncodedContent( new[] { new KeyValuePair <string, string>("BookingID", booking.BookingId.ToString()), new KeyValuePair <string, string>("APIToken", _danceCampOptions.ApiToken), new KeyValuePair <string, string>("Token", totpCode), new KeyValuePair <string, string>("Status", status), new KeyValuePair <string, string>("Amount", booking.Amount.ToString("F02", CultureInfo.InvariantCulture)), new KeyValuePair <string, string>("Currency", "EUR"), new KeyValuePair <string, string>("TxnID", transactionId), new KeyValuePair <string, string>("FeeAmount", "0"), new KeyValuePair <string, string>("Notes", ""), new KeyValuePair <string, string>("EmailNotes", "") }); var response = await _httpClient.PostAsync(_danceCampOptions.PaymentReceiveDanceCampUrl, formContent); if (response.StatusCode == HttpStatusCode.OK) { var stringContent = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject <DanceCampResponse>(stringContent); if (result.Status != "success") { //TODO: discuss notification options. //There is a chance that mollie payment is successful but update to dancecamp system failed //Generate notification email? _logger.Error($"Request to Dance Camp was not successfull, transaction id {transactionId}", response); } } else { _logger.Error($"Request to Dance Camp was not successfull, transaction id {transactionId}", response); } } catch (Exception e) { //TODO: discuss notification options. //There is a chance that mollie payment is successful but update to dancecamp system failed //Generate notification email? _logger.Error($"Error occured while sending Payment Receive to Dance Camp for transaction {transactionId}. Error: {e.Message}", e); } }