Exemple #1
0
        public static void RefundFullExplicit(PaySession sess)
        {
            var charge = sess.Charge(FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT, Account.EmptyInstance,
                                     new NFX.Financial.Amount("usd", 20.00M), true, "Refund Full Explicit Charge");

            sess.Refund(charge, 20.00M);
        }
Exemple #2
0
        /// <summary>
        /// Charges funds from credit card to current stripe account.
        /// Parameter "to" is unused in stripe provider.
        /// </summary>
        public override Transaction Charge(PaySession session, ITransactionContext context, Account from, Account to, Amount amount, bool capture = true, string description = null, object extraData = null)
        {
            var stripeSession = (StripeSession)session;
            var ta            = Charge(stripeSession, context, from, to, amount, capture, description, extraData);

            return(ta);
        }
Exemple #3
0
        public static void RefundDifferentCurrency(PaySession sess)
        {
            var chargeTA = sess.Charge(null, FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT, Account.EmptyInstance,
                                       new NFX.Financial.Amount("usd", 20.00M), true, "Refund Full Explicit Charge");

            var refundTA = chargeTA.Refund(null, new NFX.Financial.Amount("eur", 15.00M), "duplicate");
        }
Exemple #4
0
        private bool LogOUT()
        {
            Thread t = new Thread(() =>
            {
                try
                {
                    // create/read configuration from a configuration file
                    PayConfiguration config = createConfigFromFile(mPfad);

                    // start a new session
                    PaySession session = new PaySession();

                    // we define a message listener for events (optional)
                    MyMessageListener msgList = new MyMessageListener(lbl_Status, btn_OK);

                    session.setListener(msgList);

                    // login (this is always the first communication to the EFT)
                    mTerminal = session.login(config);

                    // logout at last
                    session.logout();
                }
                catch (PayException x)
                {
                    // catch all PayExceptions and write to console
                    Console.WriteLine(x.toString());
                }
            });

            t.Start();
            return(true);
        }
Exemple #5
0
        public static void TransferToCard(PaySession sess)
        {
            var transferTA = sess.Transfer(null, Account.EmptyInstance, FakePaySystemHost.CARD_DEBIT_ACCOUNT_STRIPE_CORRECT,
                                           new NFX.Financial.Amount("usd", 27.00M));

            Assert.IsNotNull(transferTA);
        }
Exemple #6
0
        public static void TransferToCardWithBillingAddressInfo(PaySession sess)
        {
            var transferTA = sess.Transfer(null, Account.EmptyInstance, FakePaySystemHost.CARD_DEBIT_ACCOUNT_STRIPE_CORRECT_WITH_ADDRESS,
                                           new NFX.Financial.Amount("usd", 55.00M));

            Assert.IsNotNull(transferTA);
        }
Exemple #7
0
        protected internal override bool DoRefresh(PaySession session, Transaction transaction, object extraData = null)
        {
            var  ps    = (PayPalSession)session;
            bool retry = true;

            while (true)
            {
                try
                {
                    var authToken = ps.AuthorizationToken;
                    if (transaction.Status == TransactionStatus.Promised)
                    {
                        return(doTransfer(ps, authToken, transaction, extraData));
                    }
                    return(doRefresh(ps, authToken, transaction, extraData));
                }
                catch (System.Net.WebException ex)
                {
                    var status = ((HttpWebResponse)ex.Response).StatusCode;
                    if (status == HttpStatusCode.Unauthorized && retry)
                    {
                        Log(MessageType.Warning, "DoRefresh()", "Unauthorized payment. Trying to refresh OAuth token.");
                        retry = false;
                        ps.ResetAuthorizationToken();
                        continue;
                    }
                    throw;
                }
            }
        }
Exemple #8
0
        private Transaction createPayoutTransaction(PaySession session, ITransactionContext context, JSONDataMap response, Account to, Amount amount, string description = null)
        {
            var    batchID = response.GetNodeByPath(RESPONSE_BATCH_HEADER, RESPONSE_BATCH_ID);
            object itemID  = null;
            var    items   = response.GetNodeByPath(RESPONSE_ITEMS) as JSONDataArray;

            if (items != null && items.Count > 0)
            {
                // for the moment there is only one possible payment in a batch
                itemID = ((JSONDataMap)items[0]).GetNodeByPath(RESPONSE_ITEMS_ITEMID);
            }

            var processorToken  = new { batchID = batchID.AsString(), itemID = itemID.AsString() };
            var transactionDate = response.GetNodeByPath(RESPONSE_BATCH_HEADER, RESPONSE_TIME_COMPLETED)
                                  .AsDateTime(App.TimeSource.UTCNow);

            var transactionID = PaySystemHost.GenerateTransactionID(session, context, TransactionType.Transfer);

            return(new Transaction(transactionID,
                                   TransactionType.Transfer,
                                   this.Name, processorToken,
                                   Account.EmptyInstance,
                                   to,
                                   amount,
                                   transactionDate,
                                   description));
        }
Exemple #9
0
        public static void RefundFullTwoParts(PaySession sess)
        {
            var charge = sess.Charge(FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT, Account.EmptyInstance,
                                     new NFX.Financial.Amount("usd", 20.00M), true, "Refund Full Explicit Charge");

            sess.Refund(charge, 15.00M, "fraudulent");
            sess.Refund(charge, 5.00M, "requested_by_customer");
        }
Exemple #10
0
 protected override void DoStoreAccountData(PaySession session, IActualAccountData accoundData)
 {
     lock (s_MockActualAccountDatas)
     {
         s_MockActualAccountDatas.RemoveAll(ad => ad.Account == accoundData.Account);
         s_MockActualAccountDatas.Add(accoundData);
     }
 }
Exemple #11
0
 protected override void DoStoreTransaction(PaySession session, Transaction tran)
 {
     lock (s_TransactionList)
     {
         s_TransactionList.RemoveAll(tr => tr.ID.Equals(tran.ID));
         s_TransactionList.Add(tran);
     }
 }
Exemple #12
0
        private bool ONLine()
        {
            Thread t = new Thread(() =>
            {
                try
                {
                    //--------------
                    // create/read configuration from a configuration file
                    PayConfiguration config = createConfigFromFile(mPfad);

                    // start a new session
                    PaySession session = new PaySession();

                    // we define a message listener for events (optional)
                    MyMessageListener msgList = new MyMessageListener(lbl_Status, btn_OK);

                    session.setListener(msgList);

                    if (!session.isLoggedIn())
                    {
                        // login (this is always the first communication to the EFT)
                        mTerminal = session.login(config);
                    }


                    try
                    {
                        // Now we start a payment of 1 cent

                        // First we create the result object PayMedia
                        PayMedia media = new PayMedia();

                        // Then we start the authorisation of the card

                        short payType = PayTerminal.__Fields.PAY_TYPE_AUTOMATIC;
                        PayTransaction transaction = mTerminal.payment(mBetrag, payType, media);

                        // When we are here, the given card was accepted. We commit the transaction.
                        // If transaction is null, the device doesn't support commit and we are finished.
                        if (transaction != null)
                        {
                            transaction.commit(media);
                        }
                    }
                    finally
                    {
                    }
                }
                catch (PayException x)
                {
                    // catch all PayExceptions and write to console
                    Console.WriteLine(x.toString());
                }
            });

            t.Start();
            return(true);
        }
Exemple #13
0
        public static void ChargeWithBillingAddressInfo(PaySession sess)
        {
            Assert.IsNotNull(sess);

            var ta = sess.Charge(null, FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT_WITH_ADDRESS, Account.EmptyInstance,
                                 new NFX.Financial.Amount("usd", 15.75M), true, "test payment");

            Assert.IsNotNull(ta);
        }
Exemple #14
0
        public static void ChargeCommon(PaySession sess)
        {
            Assert.IsNotNull(sess);

            var ta = sess.Charge(FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT, Account.EmptyInstance,
                                 new NFX.Financial.Amount("usd", 15.75M), true, "test payment");

            Assert.IsNotNull(ta);
        }
Exemple #15
0
        public static void RefundFullExplicit(PaySession sess)
        {
            var charge = sess.Charge(null, FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT, Account.EmptyInstance,
                                     new NFX.Financial.Amount("usd", 20.00M), true, "Refund Full Explicit Charge");

            FakePaySystemHost.Instance.SaveTransaction(charge);

            var refundTA = charge.Refund(null, new NFX.Financial.Amount("usd", 20.00M));

            Assert.IsNotNull(refundTA);
        }
Exemple #16
0
        public static void CaptureImplicitTotal(PaySession sess)
        {
            var charge = sess.Charge(null, FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT, FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT,
                                     new Financial.Amount("usd", 17.25M), false, "test payment");

            Assert.IsFalse(charge.IsCaptured);

            charge.Capture(null);

            Assert.IsTrue(charge.IsCaptured);
        }
Exemple #17
0
        protected internal override Transaction DoTransfer(PaySession session, Account from, Account to, Amount amount, string description = null, object extraData = null)
        {
            if (description.IsNullOrWhiteSpace())
            {
                description = m_PayoutNote;
            }

            return(new Transaction(
                       session.GenerateTransactionID(TransactionType.Transfer), TransactionType.Transfer, TransactionStatus.Promised,
                       from, to, Name, null, App.TimeSource.UTCNow, amount, description: description, extraData: extraData));
        }
Exemple #18
0
        protected override object DoGenerateTransactionID(PaySession session, TransactionType type)
        {
            if (m_NextTransactionID != null)
            {
                var id = m_NextTransactionID;
                m_NextTransactionID = null;
                return(id);
            }
            var eLink = new ELink((((ulong)ExternalRandomGenerator.Instance.NextRandomInteger) << 32) + ((ulong)ExternalRandomGenerator.Instance.NextRandomInteger), null);

            return(eLink.Link);
        }
Exemple #19
0
        public static void CaptureExplicitTotal(PaySession sess)
        {
            var amount = new NFX.Financial.Amount("usd", 17.25M);

            var charge = sess.Charge(null, FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT, FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT, amount, false, "test payment");

            Assert.AreEqual(new NFX.Financial.Amount("usd", .0M), charge.AmountCaptured);

            charge.Capture(null, amount);

            Assert.AreEqual(amount, charge.AmountCaptured);
        }
Exemple #20
0
        /// <summary>
        /// In this implementation returns transaction from memory list by id
        /// </summary>
        protected override Transaction DoFetchTransaction(PaySession session, object id)
        {
            byte[] buf;
            if (!m_Transactions.TryGetValue(id, out buf))
            {
                throw new NFXException("Couldn't find transaction by id '{0}'".Args(id));
            }

            var ta = deserializeTransaction(buf);

            return(ta);
        }
Exemple #21
0
        public override Transaction Refund(PaySession session, ITransactionContext context, ref Transaction charge, Financial.Amount?amount = null, string description = null, object extraData = null)
        {
            var refundAmount = amount ?? charge.Amount;

            var created = DateTime.UtcNow;

            var taId = PaySystemHost.GenerateTransactionID(session, context, TransactionType.Refund);

            var refundTA = Transaction.Refund(taId, this.Name, taId, Account.EmptyInstance, charge.From, refundAmount, created, description, relatedTransactionID: charge.ID);

            StatRefund(charge, amount);

            return(refundTA);
        }
Exemple #22
0
        public static void RefundFullImplicit(PaySession sess)
        {
            var amountToRefund = new NFX.Financial.Amount("usd", 17.25M);

            var charge = sess.Charge(FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT, Account.EmptyInstance, amountToRefund, true, "test payment");

            Assert.AreEqual(new NFX.Financial.Amount("usd", .0M), charge.AmountRefunded);

            sess.StoreTransaction(charge);

            sess.Refund(charge);

            Assert.AreEqual(amountToRefund, charge.AmountRefunded);
        }
Exemple #23
0
        public static void RefundFullImplicit(PaySession sess)
        {
            var charge = sess.Charge(null, FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT, Account.EmptyInstance,
                                     new Financial.Amount("usd", 17.25M), true, "test payment");

            Assert.IsFalse(charge.IsRefunded);

            FakePaySystemHost.Instance.SaveTransaction(charge);

            var refund = charge.Refund(null);

            Assert.IsTrue(charge.IsRefunded);
            Assert.AreEqual(charge.ID, refund.ParentTransactionID);
        }
Exemple #24
0
        public static void CapturePartial(PaySession sess)
        {
            var chargeAmount = new NFX.Financial.Amount("usd", 17.25M);

            var charge = sess.Charge(FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT, FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT,
                                     chargeAmount, false, "test payment");

            Assert.AreEqual(new NFX.Financial.Amount("usd", .0M), charge.AmountCaptured);

            var captureAmount = 10.00M;

            sess.Capture(charge, amount: captureAmount);

            Assert.AreEqual(captureAmount, charge.AmountCaptured);
        }
Exemple #25
0
        private Transaction doTransfer(PaySession session, ITransactionContext context, Account from, Account to, Amount amount, string description = null, object extraData = null)
        {
            var id = Log(MessageType.Info, "doTransfer()", StringConsts.PAYPAL_PAYOUT_MESSAGE.Args(to, amount));

            try
            {
                var payPalSession     = session as PayPalSession;
                var actualAccountData = PaySystemHost.AccountToActualData(context, to);

                var request = new WebClient.RequestParams
                {
                    Caller          = this,
                    Uri             = new Uri(m_ApiUri + URI_PAYOUTS),
                    QueryParameters = new Dictionary <string, string>
                    {
                        { PRM_SYNC_MODE, m_SyncMode.AsString() }
                    },
                    Method      = HTTPRequestMethod.POST,
                    ContentType = ContentType.JSON,
                    Headers     = new Dictionary <string, string>
                    {
                        { HDR_AUTHORIZATION, HDR_AUTHORIZATION_OAUTH.Args(payPalSession.AuthorizationToken.AccessToken) },
                    },
                    Body = getPayoutJSONBody(actualAccountData, amount, description)
                };

                var response = WebClient.GetJson(request);
                Log(MessageType.Info, "doTransfer()", response.ToJSON(), null, id);

                checkPayoutStatus(response, payPalSession);

                var transaction = createPayoutTransaction(session, context, response, to, amount, description);

                StatTransfer(amount);

                return(transaction);
            }
            catch (Exception ex)
            {
                StatTransferError();

                var message = StringConsts.PAYPAL_PAYOUT_ERROR.Args(to, amount, ex.ToMessageWithType());
                var error   = PayPalPaymentException.ComposeError(message, ex);
                Log(MessageType.Error, "doTransfer()", error.Message, ex, id);

                throw error;
            }
        }
Exemple #26
0
        /// <summary>
        /// Transfers funds from current Stripe account to user account supplied in "to" parameter
        /// ("from" parameter is not used in Stripe implementation
        /// </summary>
        public override Transaction Transfer(PaySession session, ITransactionContext context, Account from, Account to, Amount amount, string description = null, object extraData = null)
        {
            var stripeSession = (StripeSession)session;

            var recipientID = createRecipient(stripeSession, context, to, description);

            try
            {
                var payment = transfer(stripeSession, context, recipientID, to, amount, description);

                return(payment);
            }
            finally
            {
                deleteRecipient(stripeSession, recipientID);
            }
        }
Exemple #27
0
        /// <summary>
        /// Transfers funds from current Stripe account to user account supplied in "to" parameter
        /// ("from" parameter is not used in Stripe implementation
        /// </summary>
        protected internal override Transaction DoTransfer(PaySession session, Account from, Account to, Amount amount, string description = null, object extraData = null)
        {
            var stripeSession = (StripeSession)session;

            var recipientID = createRecipient(stripeSession, to, description);

            try
            {
                var payment = doTransfer(stripeSession, recipientID, to, amount, description, extraData);

                return(payment);
            }
            finally
            {
                deleteRecipient(stripeSession, recipientID);
            }
        }
Exemple #28
0
        /// <summary>
        /// Transfers funds from current application's business account to PayPal user account.
        /// 'from' account isn't used as current application's business account is used instead.
        /// </summary>
        public override Transaction Transfer(PaySession session, ITransactionContext context, Account from, Account to, Amount amount, string description = null, object extraData = null)
        {
            try
            {
                return(doTransfer(session, context, from, to, amount, description, extraData));
            }
            catch (System.Net.WebException ex)
            {
                var status = ((HttpWebResponse)ex.Response).StatusCode;
                if (status == HttpStatusCode.Unauthorized)
                {
                    Log(MessageType.Error, "Transfer()", StringConsts.PAYPAL_UNAUTHORIZED_MESSAGE);
                    refreshOAuthToken(((PayPalSession)session).ConnectionParameters);
                }

                return(doTransfer(session, context, from, to, amount, description, extraData));
            }
        }
Exemple #29
0
        public static void RefundFullTwoParts(PaySession sess)
        {
            var charge = sess.Charge(null, FakePaySystemHost.CARD_ACCOUNT_STRIPE_CORRECT, Account.EmptyInstance,
                                     new NFX.Financial.Amount("usd", 20.00M), true, "Refund Full Explicit Charge");

            FakePaySystemHost.Instance.SaveTransaction(charge);

            var refund1 = charge.Refund(null, new NFX.Financial.Amount("usd", 15.00M), "fraudulent");

            Assert.IsNotNull(refund1);
            Assert.AreEqual(charge.ID, refund1.ParentTransactionID);

            FakePaySystemHost.Instance.SaveTransaction(refund1);

            var refund2 = charge.Refund(null, new NFX.Financial.Amount("usd", 5.00M), "requested_by_customer");

            Assert.IsNotNull(refund2);
            Assert.AreEqual(refund2.ParentTransactionID, charge.ID);
        }
Exemple #30
0
 /// <summary>
 /// The operation is not supported in PayPal payout action.
 /// </summary>
 public override Transaction Charge(PaySession session, ITransactionContext context, Account from, Account to, Amount amount, bool capture = true, string description = null, object extraData = null)
 {                                       
     throw new NotSupportedException();
 }
Exemple #31
0
 public override void Capture(PaySession session, ITransactionContext context, ref Transaction charge, Financial.Amount? amount = null, string description = null, object extraData = null)
 {
   StatCapture(charge, amount);
 }
Exemple #32
0
      public override Transaction Charge(PaySession session, ITransactionContext context, Account from, Account to, Financial.Amount amount, bool capture = true, string description = null, object extraData = null)
      {
        var fromActualData = PaySystemHost.AccountToActualData(context, from);

        if (fromActualData == null)
        {
          StatChargeError();
          throw new PaymentMockException(StringConsts.PAYMENT_UNKNOWN_ACCOUNT_ERROR.Args(from) + this.GetType().Name + ".Charge");
        }

        if (m_Accounts.CreditCardDeclined.Any(c => c.AccountNumber == fromActualData.AccountNumber))
        {
          StatChargeError();
          throw new PaymentMockException(this.GetType().Name + ".Charge: card '{0}' declined".Args(fromActualData));
        }

        if (m_Accounts.CreditCardLuhnError.Any(c => c.AccountNumber == fromActualData.AccountNumber))
        {
          StatChargeError();
          throw new PaymentMockException(this.GetType().Name + ".Charge: card number '{0}' is incorrect".Args(fromActualData));
        }


        AccountData foundAccount = null;

        foundAccount = m_Accounts.CreditCardsCorrect.FirstOrDefault(c => c.AccountNumber == fromActualData.AccountNumber);

        if (foundAccount != null)
        {
          if (foundAccount.CardExpirationYear != fromActualData.CardExpirationYear)
          {
            StatChargeError();
            throw new PaymentMockException(StringConsts.PAYMENT_INVALID_EXPIRATION_DATE_ERROR
              .Args(fromActualData.CardExpirationYear, fromActualData.CardExpirationMonth) + this.GetType().Name + ".Charge");
          }

          if (foundAccount.CardExpirationMonth != fromActualData.CardExpirationMonth)
          {
            StatChargeError();
            throw new PaymentMockException(StringConsts.PAYMENT_INVALID_EXPIRATION_DATE_ERROR
              .Args(fromActualData.CardExpirationYear, fromActualData.CardExpirationMonth) + this.GetType().Name + ".Charge");
          }

          if (foundAccount.CardVC != fromActualData.CardVC)
          {
            StatChargeError();
            throw new PaymentMockException(StringConsts.PAYMENT_INVALID_CVC_ERROR + this.GetType().Name + ".Charge");
          }

          var created = DateTime.UtcNow;

          var taId = PaySystemHost.GenerateTransactionID(session, context, TransactionType.Charge);

          var ta = Transaction.Charge(taId, this.Name, taId, from, to, amount, created, description);

          StatCharge(amount);

          return ta;
        }

        foundAccount = m_Accounts.CreditCardCorrectWithAddr.FirstOrDefault(c => c.AccountNumber == fromActualData.AccountNumber);

        if (foundAccount != null)
        {
          if (foundAccount.CardExpirationYear != fromActualData.CardExpirationYear)
          {
            StatChargeError();
            throw new PaymentMockException(StringConsts.PAYMENT_INVALID_EXPIRATION_DATE_ERROR
              .Args(fromActualData.CardExpirationYear, fromActualData.CardExpirationMonth) + this.GetType().Name + ".Charge");
          }

          if (foundAccount.CardExpirationMonth != fromActualData.CardExpirationMonth)
          {
            StatChargeError();
            throw new PaymentMockException(StringConsts.PAYMENT_INVALID_EXPIRATION_DATE_ERROR
              .Args(fromActualData.CardExpirationYear, fromActualData.CardExpirationMonth) + this.GetType().Name + ".Charge");
          }

          if (foundAccount.CardVC != fromActualData.CardVC)
          {
            StatChargeError();
            throw new PaymentMockException(StringConsts.PAYMENT_INVALID_CVC_ERROR.Args(fromActualData.CardVC) + this.GetType().Name + ".Charge");
          }

          if (foundAccount.BillingAddress1 != fromActualData.BillingAddress1 ||
              foundAccount.BillingAddress2 != fromActualData.BillingAddress2 ||
              foundAccount.BillingCountry != fromActualData.BillingCountry ||
              foundAccount.BillingCity != fromActualData.BillingCity ||
              foundAccount.BillingPostalCode != fromActualData.BillingPostalCode ||
              foundAccount.BillingRegion != fromActualData.BillingRegion ||
              foundAccount.BillingEmail != fromActualData.BillingEmail ||
              foundAccount.BillingPhone != fromActualData.BillingPhone)
          {
            StatChargeError();
            throw new PaymentMockException(StringConsts.PAYMENT_INVALID_ADDR_ERROR + this.GetType().Name + ".Charge");
          }

          var created = DateTime.UtcNow;

          var taId = PaySystemHost.GenerateTransactionID(session, context, TransactionType.Charge);

          var ta = Transaction.Charge(taId, this.Name, taId, from, to, amount, created, description);

          StatCharge(amount);

          return ta;
        }

        throw new PaymentException(StringConsts.PAYMENT_INVALID_CARD_NUMBER_ERROR + this.GetType().Name + ".Charge");
      }
Exemple #33
0
      /// <summary>
      /// Transfers funds from current Stripe account to user account supplied in "to" parameter
      /// ("from" parameter is not used in Stripe implementation
      /// </summary>
      public override Transaction Transfer(PaySession session, ITransactionContext context, Account from, Account to, Amount amount, string description = null, object extraData = null)
      {
        var stripeSession = (StripeSession)session;

        var recipientID = createRecipient(stripeSession, context, to, description);
        try
        {
          var payment = transfer(stripeSession, context, recipientID, to, amount, description);

          return payment;
        }
        finally
        {
          deleteRecipient(stripeSession, recipientID);
        }
      }
Exemple #34
0
 public override Transaction Charge(PaySession session, ITransactionContext context, Account from, Account to, Amount amount, bool capture = true, string description = null, object extraData = null)
 {
     return Charge((BraintreeSession)session, context, from, to, amount, capture, description, extraData);
 }
Exemple #35
0
 /// <summary>
 /// Captures the payment of this, uncaptured, charge.
 /// This is the second half og the two-step payment flow, where first you created a charge 
 /// with the capture option set to false.
 /// Uncaptured payment expires exactly seven days after it is created.
 /// If a payment is not captured by that pooint of time, it will be marked as refunded and will no longer be capturable.
 /// If set the amount of capture must be less than or equal to the original amount.
 /// Developers, don't call this method directly. Call Transaction.Capture instead.
 /// </summary>
 public override void Capture(PaySession session, ITransactionContext context, ref Transaction charge, Amount? amount = null, string description = null, object extraData = null)
 {
   Capture((StripeSession)session, context, ref charge, amount, description, extraData);
 }
Exemple #36
0
          private Transaction createPayoutTransaction(PaySession session, ITransactionContext context, JSONDataMap response, Account to, Amount amount, string description = null)
          {                                                             
              var batchID = response.GetNodeByPath(RESPONSE_BATCH_HEADER, RESPONSE_BATCH_ID);
              object itemID = null;
              var items = response.GetNodeByPath(RESPONSE_ITEMS) as JSONDataArray;
              if (items != null && items.Count > 0)
              {
                  // for the moment there is only one possible payment in a batch
                  itemID = ((JSONDataMap)items[0]).GetNodeByPath(RESPONSE_ITEMS_ITEMID);
              }

              var processorToken = new { batchID = batchID.AsString(), itemID = itemID.AsString() };
              var transactionDate = response.GetNodeByPath(RESPONSE_BATCH_HEADER, RESPONSE_TIME_COMPLETED)
                                            .AsDateTime(App.TimeSource.UTCNow);

              var transactionID = PaySystemHost.GenerateTransactionID(session, context, TransactionType.Transfer);
              
              return new Transaction(transactionID, 
                                     TransactionType.Transfer, 
                                     this.Name, processorToken, 
                                     Account.EmptyInstance, 
                                     to, 
                                     amount, 
                                     transactionDate, 
                                     description);
          }
Exemple #37
0
          private Transaction doTransfer(PaySession session, ITransactionContext context, Account from, Account to, Amount amount, string description = null, object extraData = null)
          {     
              var id = Log(MessageType.Info, "doTransfer()", StringConsts.PAYPAL_PAYOUT_MESSAGE.Args(to, amount));

              try
              {
                  var payPalSession = session as PayPalSession;
                  var actualAccountData = PaySystemHost.AccountToActualData(context, to);

                  var request = new WebClient.RequestParams
                  {
                      Caller = this,
                      Uri = new Uri(m_ApiUri + URI_PAYOUTS),
                      QueryParameters = new Dictionary<string, string> 
                          { 
                              { PRM_SYNC_MODE, m_SyncMode.AsString() } 
                          },
                      Method = HTTPRequestMethod.POST,
                      ContentType = ContentType.JSON,
                      Headers = new Dictionary<string, string>
                          { 
                              { HDR_AUTHORIZATION, HDR_AUTHORIZATION_OAUTH.Args(payPalSession.AuthorizationToken.AccessToken) },
                          },
                      Body = getPayoutJSONBody(actualAccountData, amount, description)
                  };
                  
                  var response = WebClient.GetJson(request);
                  Log(MessageType.Info, "doTransfer()", response.ToJSON(), null, id);
                  checkPayoutStatus(response);

                  var transaction = createPayoutTransaction(session, context, response, to, amount, description);
                  
                  StatTransfer(amount);
                  
                  return transaction;
              }
              catch (Exception ex)
              {
                  StatTransferError();

                  var message = StringConsts.PAYPAL_PAYOUT_ERROR.Args(to, amount, ex.ToMessageWithType());
                  var error = PayPalPaymentException.ComposeError(message, ex);
                  Log(MessageType.Error, "doTransfer()", error.Message, ex, id);
                  
                  throw error;
              }
          }
Exemple #38
0
          /// <summary>
          /// Transfers funds from current application's business account to PayPal user account.
          /// 'from' account isn't used as current application's business account is used instead.
          /// </summary>
          public override Transaction Transfer(PaySession session, ITransactionContext context, Account from, Account to, Amount amount, string description = null, object extraData = null)
          {   
              try
              {
                  return doTransfer(session, context, from, to, amount, description, extraData);
              }
              catch (System.Net.WebException ex)
              { 
                  var status = ((HttpWebResponse)ex.Response).StatusCode;
                  if (status == HttpStatusCode.Unauthorized)
                  {
                      Log(MessageType.Error, "Transfer()", StringConsts.PAYPAL_UNAUTHORIZED_MESSAGE);
                      refreshOAuthToken(((PayPalSession)session).ConnectionParameters);
                  }

                  return doTransfer(session, context, from, to, amount, description, extraData);
              }
          }
Exemple #39
0
      public override Transaction Refund(PaySession session, ITransactionContext context, ref Transaction charge, Financial.Amount? amount = null, string description = null, object extraData = null)
      {
        var refundAmount = amount ?? charge.Amount;

        var created = DateTime.UtcNow;

        var taId = PaySystemHost.GenerateTransactionID(session, context, TransactionType.Refund);

        var refundTA = new Transaction(taId, TransactionType.Refund, this.Name, taId, Account.EmptyInstance, charge.From, refundAmount, created, description, relatedTransactionID: charge.ID, canRefund: false);

        StatRefund(charge, amount);

        return refundTA;
      }
Exemple #40
0
      /// <summary>
      /// Charges funds from credit card to current stripe account.
      /// Parameter "to" is unused in stripe provider.
      /// </summary>
      public override Transaction Charge(PaySession session, ITransactionContext context, Account from, Account to, Amount amount, bool capture = true, string description = null, object extraData = null)
      {
        var stripeSession = (StripeSession)session;
        var ta = Charge(stripeSession, context, from, to, amount, capture, description, extraData);

        return ta;
      }
Exemple #41
0
 public override Transaction Transfer(PaySession session, ITransactionContext context, Account from, Account to, Amount amount, string description = null, object extraData = null)
 {
     throw new NotImplementedException();
 }
Exemple #42
0
 /// <summary>
 /// The operation is not supported in PayPal payout action.
 /// </summary>
 public override Transaction Refund(PaySession session, ITransactionContext context, ref Transaction charge, Amount? amount = default(Amount?), string description = null, object extraData = null)
 {                                       
     throw new NotSupportedException();
 } 
Exemple #43
0
 /// <summary>
 /// The operation is not supported in PayPal payout action.
 /// </summary>
 public override PaymentException VerifyPotentialTransaction(PaySession session, ITransactionContext context, bool transfer, IActualAccountData from, IActualAccountData to, Amount amount)
 {                                                      
     throw new NotSupportedException();
 }
Exemple #44
0
 public object GenerateClientToken(PaySession session)
 {
     return GenerateClientToken((BraintreeSession)session);
 }
Exemple #45
0
      public override Transaction Transfer(PaySession session, ITransactionContext context, Account from, Account to, Financial.Amount amount, string description = null, object extraData = null)
      {
        var actualAccountData = PaySystemHost.AccountToActualData(context, to);

        if (actualAccountData == null)
        {
          StatTransferError();
          throw new PaymentMockException(StringConsts.PAYMENT_UNKNOWN_ACCOUNT_ERROR.Args(from) + this.GetType().Name + ".Transfer");
        }

        AccountData accountData = null;

        accountData = m_Accounts.DebitBankCorrect.FirstOrDefault(c => c.AccountNumber == actualAccountData.AccountNumber 
                                                && c.CardExpirationYear == actualAccountData.CardExpirationYear
                                                && c.CardExpirationMonth == actualAccountData.CardExpirationMonth
                                                && c.CardVC == actualAccountData.CardVC);

        if (accountData != null)
        {
          var created = DateTime.Now;

          var taId = PaySystemHost.GenerateTransactionID(session, context, TransactionType.Transfer);

          var ta = Transaction.Transfer(taId, this.Name, taId, Account.EmptyInstance, to, amount, created, description, extraData);

          StatTransfer(amount);

          return ta;
        }

        accountData = m_Accounts.DebitCardCorrect.FirstOrDefault(c => c.AccountNumber == actualAccountData.AccountNumber 
                                                && c.CardExpirationYear == actualAccountData.CardExpirationYear
                                                && c.CardExpirationMonth == actualAccountData.CardExpirationMonth
                                                && c.CardVC == actualAccountData.CardVC);

        if (accountData != null)
        {
          var created = DateTime.Now;

          var taId = PaySystemHost.GenerateTransactionID(session, context, TransactionType.Transfer);

          var ta = Transaction.Transfer(taId, this.Name, taId, Account.EmptyInstance, to, amount, created, description, extraData);

          StatTransfer(amount);

          return ta;
        }

        accountData = m_Accounts.DebitCardCorrectWithAddr.FirstOrDefault(c => c.AccountNumber == actualAccountData.AccountNumber 
                                                && c.CardExpirationYear == actualAccountData.CardExpirationYear
                                                && c.CardExpirationMonth == actualAccountData.CardExpirationMonth
                                                && c.CardVC == actualAccountData.CardVC
                                                && c.BillingAddress1 != actualAccountData.BillingAddress1
                                                && c.BillingAddress2 != actualAccountData.BillingAddress2
                                                && c.BillingCountry != actualAccountData.BillingCountry
                                                && c.BillingCity != actualAccountData.BillingCity
                                                && c.BillingPostalCode != actualAccountData.BillingPostalCode
                                                && c.BillingRegion != actualAccountData.BillingRegion
                                                && c.BillingEmail != actualAccountData.BillingEmail
                                                && c.BillingPhone != actualAccountData.BillingPhone);

        if (accountData != null)
        {
          var created = DateTime.Now;

          var taId = PaySystemHost.GenerateTransactionID(session, context, TransactionType.Transfer);

          var ta = Transaction.Transfer(taId, this.Name, taId, Account.EmptyInstance, to, amount, created, description, extraData);

          StatTransfer(amount);

          return ta;
        }

        StatTransferError();
        throw new PaymentException(StringConsts.PAYMENT_INVALID_CARD_NUMBER_ERROR + this.GetType().Name + ".Transfer");
      }
Exemple #46
0
        static void Main(string[] args)
        {
            try
            {
                // create/read configuration from a configuration file
                PayConfiguration config = createConfigFromFile("../../etc/zvt.cfg");

                // start a new session
                PaySession session = new PaySession();

                // we define a message listener for events (optional)
                session.setListener(new MyMessageListener());

                // get the software version of LUIS ePayment
                Console.WriteLine("Version=" + session.getVersion());

                // login (this is always the first communication to the EFT)
                PayTerminal terminal = session.login(config);

                try
                {
                    // let's have a look at the settings within the EFT
                    PayResult result = terminal.settings();
                    Console.WriteLine(result.toString());

                    // do some selftest
                    result = terminal.selftest();
                    Console.WriteLine(result.toString());


                    // try to connect the network provider and get the limits for a payment
                    result = terminal.diagnose(PayTerminal.__Fields.DIAGNOSE_EXTENDED);
                    Console.WriteLine(result.toString());


                    // Now we start a payment of 1 cent

                    // First we create the result object PayMedia
                    PayMedia media = new PayMedia();

                    // Then we start the authorisation of the card
                    int            cents       = 1;
                    short          payType     = PayTerminal.__Fields.PAY_TYPE_AUTOMATIC;
                    PayTransaction transaction = terminal.payment(cents, payType, media);
                    Console.WriteLine(media.toString());

                    // When we are here, the given card was accepted. We commit the transaction.
                    // If transaction is null, the device doesn't support commit and we are finished.
                    if (transaction != null)
                    {
                        transaction.commit(media);
                        Console.WriteLine(media.toString());
                    }
                }
                finally
                {
                    // logout at last
                    session.logout();
                }
            }
            catch (PayException x)
            {
                // catch all PayExceptions and write to console
                Console.WriteLine(x.toString());
            }
        }
Exemple #47
0
 public override Transaction Refund(PaySession session, ITransactionContext context, ref Transaction charge, Amount? amount = default(Amount?), string description = null, object extraData = null)
 {
     return Refund((BraintreeSession)session, context, ref charge, amount, description, extraData);
 }