示例#1
0
        /// <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();
        }