static StripeDisputeTransaction DisputesResponseToStripeDisputes(StripeDispute d)
        {
            var disp = new StripeDisputeTransaction()
            {
                DisputeId          = d.Id,
                TransactionType    = d.Object,
                Reason             = d.Reason,
                Status             = d.Status,
                ChargeId           = d.ChargeId,
                BalanceTransaction = JsonConvert.SerializeObject(d.BalanceTransactions),
                CreatedTime        = d.Created,
                Amount             = (-1) * d.Amount / 100m,
                Currency           = d.Currency,
                Evidence           = JsonConvert.SerializeObject(d.Evidence),
                EvidenceDetails    = JsonConvert.SerializeObject(d.EvidenceDetails),
                IsChargeRefundable = d.IsChargeRefundable,
                LiveMode           = d.LiveMode,
                Metadata           = JsonConvert.SerializeObject(d.Metadata)
            };

            return(disp);
        }
        public static void UpsertStripeDispute(StripeDisputeTransaction disputes, TraceWriter log)
        {
            try
            {
                var cnnString = ConfigurationManager.ConnectionStrings["PP_ConnectionString"].ConnectionString;

                using (var connection = new SqlConnection(cnnString))
                {
                    connection.Open();


                    using (SqlCommand cmd = new SqlCommand(upsertCommand, connection))
                    {
                        cmd.Parameters.Add("@DisputeID", SqlDbType.NVarChar, 50).Value       = disputes.DisputeId ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@TransactionType", SqlDbType.NVarChar, 25).Value = disputes.TransactionType ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@Reason", SqlDbType.NVarChar, 255).Value         = disputes.Reason ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@Status", SqlDbType.NVarChar, 255).Value         = disputes.Status ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@BalanceTransaction", SqlDbType.NVarChar).Value  = disputes.BalanceTransaction ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@ChargeID", SqlDbType.NVarChar, 50).Value        = disputes.ChargeId ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@CreatedTime", SqlDbType.DateTime2).Value        = disputes.CreatedTime ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@Amount", SqlDbType.Decimal).Value            = disputes.Amount ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@Currency", SqlDbType.NVarChar, 10).Value     = disputes.Currency ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@Evidence", SqlDbType.NVarChar).Value         = disputes.Evidence ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@EvidenceDetails ", SqlDbType.NVarChar).Value = disputes.EvidenceDetails ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@IsChargeRefundable ", SqlDbType.Bit).Value   = disputes.IsChargeRefundable ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@LiveMode", SqlDbType.Bit).Value      = disputes.LiveMode ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@Metadata", SqlDbType.NVarChar).Value = disputes.Metadata ?? (object)DBNull.Value;
                        cmd.Parameters.Add("@RecordUpdatedDate", SqlDbType.DateTime2, 50).Value = DateTime.UtcNow;
                        var resultCount = cmd.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error("InsertStripeTransaction error", ex);
            }
        }