コード例 #1
0
ファイル: TPayFactory.cs プロジェクト: karlhaak/pay.secupay
        /// <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;
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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();
        }