/// <summary>
        ///     Führt eine Statusanfrage am Gateway durch.
        ///     Kommuniaktion erfolgt im JSON Format
        /// </summary>
        private void RunPaymentStatus(PaySecupayStatus secupayStatus)
        {
            // Die Statusanfrage wird in ein Data Transport Objekte gewandelt, das als JSON seralisiert werden kann
            StatusRequestDtoRoot dto = TDtoFactory.CreateStatusRequestDtoRoot(secupayStatus);

            secupayStatus.ApiUrl  = string.Format("{0}/payment/status", secupayStatus.ApiUrl);
            secupayStatus.JsonOut = dto.ToJsonString();

            // Anfrage vorab in DB speichern
            Context.SaveChanges();

            // Anfrage am Gateway synchron durchführen und Antwort speichern
            secupayStatus.JsonIn = RunWebRequest(secupayStatus.ApiUrl, secupayStatus.JsonOut);
            Context.SaveChanges();

            // Die JSON Antwort in ein Data Transport Objekt deserialisieren
            var response = secupayStatus.JsonIn.FromJsonToObject <StatusResponseDtoRoot>();

            // Einzelne Wert in Objekt übernehmen
            secupayStatus.ResponseHash          = response.Data.Hash;
            secupayStatus.ResponsePaymentStatus = response.Data.PaymentStatus;
            secupayStatus.ResponseStatus        = response.Data.Status;
            secupayStatus.ResponseCreated       = response.Data.Created.FromJsonToDateTime();
            secupayStatus.ResponseDemo          = response.Data.Demo;
            secupayStatus.ResponseTransId       = response.Data.TransId;
            secupayStatus.ResponseAmount        = response.Data.Amount;
            secupayStatus.ResponseOpt           = "";//response.Data.Opt;

            secupayStatus.Status = response.Status;
            secupayStatus.Errors = response.Errors;

            // Antwort in DB sichern
            Context.SaveChanges();
        }
        /// <summary>
        ///     Es wird eine Statusanfrage zu eine Transaktion am Gateway durchgeführt
        /// </summary>
        /// <param name="secupayStatus"></param>
        public void StatusPayment(PaySecupayStatus secupayStatus)
        {
            // Statusanfrage in DB sichern
            Context.PaySecupayStatus.Add(secupayStatus);
            Context.SaveChanges();

            RunPaymentStatus(secupayStatus);
        }
Exemple #3
0
        /// <summary>
        ///     Erzeugt eine SecuPay Statusanfrage
        ///     Als Schlüssel dient der Hashkey, der während der Init Phase vom Gateway gesendet wurde
        ///     ApiKey und Gateway Url werden aus der config entnommen
        /// </summary>
        public PaySecupayStatus CreateSecupayStatus(string hash)
        {
            PaySecupayStatus paySecupayStatus = new PaySecupayStatus
            {
                ApiKey = Config.ApiKey,
                ApiUrl = Config.SecupayUrl,
                Hash   = hash
            }.SetNew(Config.Username);

            return(paySecupayStatus);
        }
Exemple #4
0
        internal static StatusRequestDtoRoot CreateStatusRequestDtoRoot(PaySecupayStatus secupayStatus)
        {
            StatusRequestDtoRoot root = new StatusRequestDtoRoot
            {
                Data = new StatusRequestDtoData
                {
                    ApiKey = secupayStatus.ApiKey,
                    Hash   = secupayStatus.Hash
                }
            };

            return(root);
        }
Exemple #5
0
 internal static StatusRequestDtoRoot CreateStatusRequestDtoRoot(PaySecupayStatus secupayStatus)
 {
     StatusRequestDtoRoot root = new StatusRequestDtoRoot
     {
         Data = new StatusRequestDtoData
         {
             ApiKey = secupayStatus.ApiKey,
             Hash = secupayStatus.Hash
         }
     };
     return root;
 }