Ejemplo n.º 1
0
        /// <summary>
        /// 获取微信交易信息。
        /// </summary>
        /// <param name="transactionId">微信订单号。</param>
        /// <returns></returns>
        public virtual async Task <IPaymentInfo> GetPaymentInfo(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));

            //await CheckRemoteToken();

            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);
            }
            IPaymentInfo info = GetPaymentInfo(root);

            return(info);
        }
Ejemplo n.º 2
0
 public Payment(IPaymentInfo info, IApplicationData<IScorpionDataProvider> dataProviderFactory, ISecurityManager securityManager)
     : base(dataProviderFactory, securityManager)
 {
     this.info = info;
 }
Ejemplo n.º 3
0
        public override void Refresh()
        {
            IScorpionDataProvider dataSession = null;

            try
            {
                dataSession = DataProviderFactory.GetSession();

                info = dataSession.GetPayment(info.Identifier);
            }
            catch
            {
                throw;
            }
            finally
            {
                if (dataSession != null)
                    dataSession.Dispose();
            }
        }
 public PaymentsCalculator(IPaymentInfo paymentInfo)
 {
     _paymentInfo = paymentInfo;
 }
 public PaymentsCalculator(IPaymentInfo paymentInfo)
 {
     _paymentInfo = paymentInfo;
 }