示例#1
0
        public WxPayParameter Unifiedorder(WxPayData data)
        {
            var request = "https://api.mch.weixin.qq.com/pay/unifiedorder";
            var order   = request.GetUriContentDirectly((http) =>
            {
                if (request.StartsWith("https", StringComparison.OrdinalIgnoreCase))
                {
                    ServicePointManager.ServerCertificateValidationCallback =
                        new RemoteCertificateValidationCallback(CheckValidationResult);
                }
                http.Timeout = 30 * 1000;
                ServicePointManager.DefaultConnectionLimit = 200;
                http.UserAgent = string.Format("WXPaySDK/{3} ({0}) .net/{1} {2}",
                                               Environment.OSVersion, Environment.Version, Constants.WxConfig.MchId,
                                               typeof(WxPayParameter).Assembly.GetName().Version);
                http.Method      = "POST";
                http.ContentType = "text/xml";
                using (var stream = http.GetRequestStream())
                {
                    var body    = data.SerializeToXml();
                    var buffers = UTF8Encoding.UTF8.GetBytes(body);
                    stream.Write(buffers, 0, buffers.Length);
                    stream.Flush();
                }
                return(http);
            }).DeserializeFromXml <WxUnifiedorderResponse>();

            return(new WxPayParameter(order));
        }
示例#2
0
        public WxPayParameter Unifiedorder(WxPayData data, string mchid)
        {
            var request = "https://api.mch.weixin.qq.com/pay/unifiedorder";
            var order   = request.GetUriContentDirectly((http) => {
                http.Timeout = 30 * 1000;
                ServicePointManager.DefaultConnectionLimit = 200;
                http.UserAgent = string.Format("WXPaySDK/{3} ({0}) .net/{1} {2}",
                                               Environment.OSVersion, Environment.Version, mchid,
                                               typeof(WxPayParameter).Assembly.GetName().Version);
                http.Method      = "POST";
                http.ContentType = "text/xml";
                using (var stream = http.GetRequestStream()) {
                    var body    = data.SerializeToXml();
                    var buffers = UTF8Encoding.UTF8.GetBytes(body);
                    stream.Write(buffers, 0, buffers.Length);
                    stream.Flush();
                }
                return(http);
            }).DeserializeFromXml <WeChatUnifiedorderResponse>();

            return(new WxPayParameter(order, this.generator));
        }
示例#3
0
        private PullWxPayData GenernatePullWxPayData(
            Trade trade,
            WxPayData data,
            string mchid,
            string paykey)
        {
            var xml       = data.SerializeToXml();
            var parameter = this.wxapi.Unifiedorder(data, mchid);

            parameter.PaySign = parameter.MakeSign(paykey);

            return(new PullWxPayData()
            {
                nonceStr = parameter.NonceStr,
                package = parameter.Package,
                paySign = parameter.PaySign,
                signType = WxPayData.SIGN_TYPE_HMAC_SHA256,
                timeStamp = parameter.TimeStamp.ToString(),
                TradeId = trade.TradeId,
                WxOrderId = trade.WxOrderId
            });
        }