/// <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; }
/// <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); }
/// <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(); }