/// <summary> /// Erzeugt eine neues Initialisierungs Objekte für den angegebenen Betrag. /// Grundlegenden Parameter werden aus der Config entnommen /// </summary> public PaySecupayInit CreateSecupayInit(decimal amount) { PaySecupayInit paySecupayInit = new PaySecupayInit { ApiKey = Config.ApiKey, ApiVersion = Config.ApiVersion, Amount = (int) Math.Abs(amount*100m), Currency = "EUR", ApiUrl = Config.SecupayUrl, UrlSuccess = Config.UrlSuccess, UrlFailure = Config.UrlFailure, UrlPush = Config.UrlPush, Langauge = "de_DE", Shop = Config.Shop, ShopVersion = Config.Shop + " " + Assembly.GetExecutingAssembly().GetName().Version, ModulVersion = Config.Shop + " " + Assembly.GetExecutingAssembly().GetName().Version }.SetNew(Config.Username); return paySecupayInit; }
/// <summary> /// Zahlung initialisieren /// </summary> public void InitPayment(PaySecupayInit secupayInit) { // Anfrage in DB sichern Context.PaySecupayInit.Add(secupayInit); Context.SaveChanges(); // Anfrage am Gateway durchführen RunPaymentInit(secupayInit); }
/// <summary> /// Führt eine Initalisierung am Gateway durch. /// Kommuniaktion erfolgt im JSON Format /// </summary> private void RunPaymentInit(PaySecupayInit secupayInit) { // Die Initialisierung wird in ein Data Transport Objekte gewandelt, das als JSON seralisiert werden kann InitRequestDtoRoot dto = TDtoFactory.CreateInitRequestDtoRoot(secupayInit, Config); secupayInit.ApiUrl = string.Format("{0}/payment/init", secupayInit.ApiUrl); secupayInit.JsonOut = dto.ToJsonString(); // Anfrage vorab in DB speichern Context.SaveChanges(); // Anfrage am Gateway synchron durchführen und Antwort speichern secupayInit.JsonIn = RunWebRequest(secupayInit.ApiUrl, secupayInit.JsonOut); Context.SaveChanges(); // Die JSON Antwort in ein Data Transport Objekt deserialisieren var response = secupayInit.JsonIn.FromJsonToObject<InitResponseDtoRoot>(); // Einzelne Wert in Objekt übernehmen secupayInit.ResponseStatus = response.Status; secupayInit.ResponseIFrameUrl = response.Data.IFrameUrl; secupayInit.ResponseHash = response.Data.Hash; secupayInit.ResponseErrors = response.Errors; // Antwort in DB sichern Context.SaveChanges(); }