Esempio n. 1
0
        /// <summary>
        /// 查询退单交易
        /// </summary>
        /// <param name="refundQuery">查询退单交易实体</param>
        /// <returns>查询退单交易实体返回</returns>
        public RefundQueryBack RefundQuery(WeiXinPayParameters refundQuery)
        {
            refundQuery = Chang(refundQuery) as RefundQuery;
            var refundQueryBack = _ph.Send(refundQuery) as RefundQueryBack;

            return(refundQueryBack);
        }
Esempio n. 2
0
        /// <summary>
        /// 关闭订单交易
        /// </summary>
        /// <param name="closeOrder">关闭订单交易实体</param>
        /// <returns></returns>
        public CloseOrderBack CloseOrder(WeiXinPayParameters closeOrder)
        {
            closeOrder = Chang(closeOrder) as CloseOrder;
            var closeOrderBack = _ph.Send(closeOrder) as CloseOrderBack;

            return(closeOrderBack);
        }
Esempio n. 3
0
        /// <summary>
        /// 退单交易
        /// </summary>
        /// <param name="refund">退单实体</param>
        /// <returns>退单返回实体</returns>
        public RefundBack Refund(WeiXinPayParameters refund)
        {
            refund = Chang(refund) as Refund;
            var refundBack = _ph.Send(refund) as RefundBack;

            return(refundBack);
        }
Esempio n. 4
0
        /// <summary>
        /// 查询订单交易
        /// </summary>
        /// <param name="orderQuery">查询订单实体</param>
        /// <returns>查询订单返回实体</returns>
        public OrderQueryBack OederQuery(WeiXinPayParameters orderQuery)
        {
            orderQuery = Chang(orderQuery) as OrderQuery;
            var orderQueryBack = _ph.Send(orderQuery) as OrderQueryBack;

            return(orderQueryBack);
        }
Esempio n. 5
0
        /// <summary>
        /// 转换短链接交易
        /// </summary>
        /// <param name="shortUrl">转换短链接交易实体</param>
        /// <returns></returns>
        public ShortURLBack ShortUrl(WeiXinPayParameters shortUrl)
        {
            shortUrl = Chang(shortUrl) as ShortURL;
            var shortUrlBack = _ph.Send(shortUrl) as ShortURLBack;

            return(shortUrlBack);
        }
Esempio n. 6
0
        /// <summary>
        /// 统一下单交易
        /// </summary>
        /// <param name="unifiedOrder">统一下单交易实体</param>
        /// <returns>统一下单交易返回实体</returns>
        public UnifiedOrderBack UnifiedOrder(WeiXinPayParameters unifiedOrder)
        {
            unifiedOrder = Chang(unifiedOrder) as UnifiedOrder;
            var unifiedOrderBack = _ph.Send(unifiedOrder) as UnifiedOrderBack;

            return(unifiedOrderBack);
        }
Esempio n. 7
0
        /// <summary>
        /// 交易保障交易
        /// </summary>
        /// <param name="report">交易保障实体</param>
        /// <returns></returns>
        public ReportBack Report(WeiXinPayParameters report)
        {
            report = Chang(report) as Report;
            var reportBack = _ph.Send(report) as ReportBack;

            return(reportBack);
        }
Esempio n. 8
0
        /// <summary>
        /// 下载对账单交易
        /// </summary>
        /// <param name="downLoadBill">下载对账单实体</param>
        /// <returns></returns>
        public DownLoadBillBack DownLoadBill(WeiXinPayParameters downLoadBill)
        {
            downLoadBill = Chang(downLoadBill) as DownLoadBill;
            var downLoadBillBack = _ph.Send(downLoadBill) as DownLoadBillBack;

            return(downLoadBillBack);
        }
Esempio n. 9
0
        private WeiXinPayParameters Chang(WeiXinPayParameters wxParameters)
        {
            var para = new WeiXinPayParameters();

            para = wxParameters;

            para.AppID = app[0];
            para.MchID = app[1];
            para.Key   = app[3];
            return(para);
        }
Esempio n. 10
0
        /// <summary>
        /// 发送交易
        /// </summary>
        /// <param name="parmeter">发送交易实体</param>
        /// <returns></returns>
        public WeiXinPayBackParameters Send(WeiXinPayParameters parmeter)
        {
            var type = parmeter.GetType();

            foreach (var att in type.GetTypeInfo().GetCustomAttributes())
            {
                if (att is TradeAttribute)
                {
                    var        attr   = att as TradeAttribute;
                    HttpClient client = null;
                    //有证书
                    if (attr.RequireCertificate)
                    {
                        //证书路径
                        var certificatePathPro = type.GetProperty("CertificatePath");
                        var certificatePath    = certificatePathPro.GetValue(parmeter).ToString();
                        //证书密码
                        var certificatePasswordPro = type.GetProperty("MchID");
                        var certificatePassword    = certificatePasswordPro.GetValue(parmeter).ToString();
                        var handler = new HttpClientHandler();
                        handler.ClientCertificateOptions = ClientCertificateOption.Manual;
                        handler.SslProtocols             = SslProtocols.Tls12;
                        handler.ClientCertificates.Add(new X509Certificate2(certificatePath, certificatePassword));
                        client = new HttpClient(handler);
                    }
                    else//无证书
                    {
                        client = new HttpClient();
                    }
                    var url      = attr.URL;
                    var response = client.PostAsync(url, new System.Net.Http.StringContent(parmeter.ToXML())).Result;
                    //处理返回异常
                    if (response.StatusCode != System.Net.HttpStatusCode.OK)
                    {
                        throw new WeiXinPayCoreException($"http通迅错误,StatusCode:{response.StatusCode}  内容:{response.RequestMessage.Content}");
                    }
                    var result = response.Content.ReadAsStringAsync().Result;

                    var assembly   = this.GetType().GetTypeInfo().Assembly;
                    var backEntity = Activator.CreateInstance(assembly.GetType($"{type.FullName}Back")) as WeiXinPayBackParameters;
                    backEntity.XMLToEntity(result);
                    return(backEntity);
                }
            }

            return(null);
        }
Esempio n. 11
0
        /// <summary>
        /// 异步发送交易
        /// </summary>
        /// <param name="parmeter">发送交易实体</param>
        /// <returns></returns>
        public async Task <WeiXinPayBackParameters> SendAsync(WeiXinPayParameters parmeter)
        {
            var type = parmeter.GetType();

            foreach (var att in type.GetTypeInfo().GetCustomAttributes())
            {
                if (att is TradeAttribute)
                {
                    var        attr   = att as TradeAttribute;
                    HttpClient client = null;
                    //有证书
                    if (attr.RequireCertificate)
                    {
                        //证书路径
                        var certificatePathPro = type.GetProperty("CertificatePath");
                        var certificatePath    = certificatePathPro.GetValue(parmeter).ToString();
                        //证书密码
                        var certificatePasswordPro = type.GetProperty("MchID");
                        var certificatePassword    = certificatePasswordPro.GetValue(parmeter).ToString();
                        var handler = new HttpClientHandler();
                        handler.ClientCertificateOptions = ClientCertificateOption.Manual;
                        handler.SslProtocols             = SslProtocols.Tls12;
                        handler.ClientCertificates.Add(new X509Certificate2(certificatePath, certificatePassword));
                        client = new HttpClient(handler);
                    }
                    else//无证书
                    {
                        client = new HttpClient();
                    }
                    var url      = attr.URL;
                    var response = await client.PostAsync(url, new StringContent(parmeter.ToXML()));

                    var result = await response.Content.ReadAsStringAsync();

                    var assembly   = this.GetType().GetTypeInfo().Assembly;
                    var backEntity = Activator.CreateInstance(assembly.GetType($"{this.GetType().FullName}Back")) as WeiXinPayBackParameters;
                    backEntity.XMLToEntity(result);
                    return(backEntity);
                }
            }
            return(null);
        }