public BookingPayment GetBookingPayment(int bookingId)
 {
     try
     {
         var booking = _bookingPaymentRepository.GetBookingPayment(bookingId);
         return(booking);
     }
     catch (Exception)
     {
         // Do nothing.
     }
     return(null);
 }
Exemple #2
0
        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);
            }
        }