Esempio n. 1
0
        /// <summary>
        /// 查询退款信息。
        /// </summary>
        /// <param name="transactionId">微信交易号。</param>
        /// <returns>返回退款信息。</returns>
        public virtual async Task <IRefundInfo> GetRefundInfo(ITransactionId transactionId)
        {
            if (transactionId == null)
            {
                throw new ArgumentNullException("transactionId");
            }
            var payData = new Dictionary <string, string>();

            payData.Add("appid", AppId);
            payData.Add("mch_id", ShopId);
            payData.Add("nonce_str", Guid.NewGuid().ToString().Replace("-", ""));
            payData.Add("transactionId", transactionId.TransactionId);
            payData.Add("sign", GetSignature(payData, ShopKey));

            string backData = await HttpHelper.PostHttp(new Uri(QueryPayUrl), Encoding.UTF8.GetBytes(GetXml(payData)), "text/xml", Encoding.UTF8);

            XElement root = XDocument.Parse(backData).Element("xml");

            if (root.Element("return_code").Value == "FAIL")
            {
                string errMsg = root.Element("return_msg").Value;
                throw new WechatException(errMsg);
            }
            if (root.Element("result_code").Value == "FAIL")
            {
                string errMsg = root.Element("err_code").Value;
                throw new WechatException(errMsg);
            }
            IRefundInfo info = GetRefundInfo(root);

            return(info);
        }
 public void SetWith(ITransactionId toCopy)
 {
     if (toCopy != null)
     {
         toCopy.GetBlockId(out string bid);
         SetWithBlockId(bid);
         toCopy.GetTransactionId(out string tid);
         SetWithBlockId(tid);
     }
 }
Esempio n. 3
0
        internal static Guid AddTransaction(ISet <ITransaction> items, DateTime dt, Pecuniam amount,
                                            IVoca note = null, ITransactionId trace = null)
        {
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items));
            }
            var t = new Transaction(dt, amount, note)
            {
                Trace = trace
            };

            items.Add(t);
            return(t.UniqueId);
        }
 public void SetFrom(ITransactionId from)
 {
     m_from.SetWith(from);
 }
 public void GetTransactions(out ITransactionId from, out ITransactionId to)
 {
     to   = m_to;
     from = m_from;
 }
 public void GetTo(out ITransactionId to)
 {
     to = m_to;
 }
Esempio n. 7
0
        /// <summary>
        /// Applies a purchase transaction to this credit card.
        /// </summary>
        /// <returns>
        /// True when the card is not expired and
        /// the purchase amount <see cref="amount"/>
        /// will not cause the total balance to exceed <see cref="Max"/>.
        /// </returns>
        public override Guid AddPositiveValue(DateTime dt, Pecuniam amount, IVoca note = null, ITransactionId trace = null)
        {
            if (dt > Cc.ExpDate)
            {
                return(Guid.Empty);
            }
            var cBal = GetValueAt(dt);

            if (cBal >= Max || cBal + amount >= Max)
            {
                return(Guid.Empty);
            }
            return(base.AddPositiveValue(dt, amount, note));
        }
Esempio n. 8
0
        public virtual IAccount <Identifier> Credit(Pecuniam amt, IVoca note = null, DateTime?atTime = null, ITransactionId trace = null)
        {
            var dt = atTime ?? Balance.LastTransaction.AtTime;

            if (IsOppositeForm)
            {
                AddPositiveValue(dt, amt, note, trace);
            }
            else
            {
                AddNegativeValue(dt, amt, note, trace);
            }
            return(this);
        }
Esempio n. 9
0
 /// <summary>
 /// Applies a payment to the credit card account
 /// </summary>
 /// <returns>
 /// when <see cref="dt"/> is after the expiration date
 /// </returns>
 public override Guid AddNegativeValue(DateTime dt, Pecuniam amount, IVoca note = null, ITransactionId trace = null)
 {
     if (dt > Cc.ExpDate)
     {
         return(Guid.Empty);
     }
     return(base.AddNegativeValue(dt, amount, note, trace));
 }
 public void SetFrom(ITransactionId from) => m_fromTransaction.SetWith(from);
 public void SetTo(ITransactionId to) => m_toTransaction.SetWith(to);
 public void GetTransactions(out ITransactionId from, out ITransactionId to)
 {
     from = m_fromTransaction;
     to   = m_toTransaction;
 }
 public TransactionsRange(ITransactionId fromTransaction, ITransactionId toTransaction)
 {
     SetFrom(fromTransaction);
     SetTo(toTransaction);
 }
 public void SetWith(ITransactionId toCopy)
 {
     m_cursor.SetWith(toCopy);
 }
 public void SetTo(ITransactionId to)
 {
     m_to.SetWith(to);
 }
Esempio n. 16
0
        /// <summary>
        /// This is the Accounting name for making a purchase (<see cref="MakePurchase"/>
        /// </summary>
        public IAccount <Identifier> Credit(Pecuniam amt, IVoca note = null, DateTime?atTime = null, ITransactionId trace = null)
        {
            var dt = atTime ?? Balance.LastTransaction.AtTime;

            AddPositiveValue(dt, amt, note, trace);
            return(this);
        }
 public void GetFrom(out ITransactionId from)
 {
     from = m_from;
 }
Esempio n. 18
0
        public virtual Guid AddPositiveValue(DateTime dt, Pecuniam amount, IVoca note = null, ITransactionId trace = null)
        {
            if (amount == null)
            {
                return(Guid.Empty);
            }
            if (amount == Pecuniam.Zero)
            {
                return(Guid.Empty);
            }
            while (DataSet.Any(x => DateTime.Compare(x.AtTime, dt) == 0))
            {
                dt = dt.AddTicks(1L);
            }

            return(Transaction.AddTransaction(DataSet, dt, amount.GetAbs(), note, trace));
        }