Beispiel #1
0
        public void TestGetContent()
        {
            PreOrderRequest req1 = new PreOrderRequest();

            req1.SendTime          = DateTime.Now;
            req1.SendSeqID         = "12345888888000";
            req1.FrontUrl          = "http://www.163.com";
            req1.MerchantOrderDesc = "呵呵";
            req1.Misc = string.Empty;
            //req1.GatewayType = GatewayTypes.WAP;
            req1.TransTimeout          = DateTime.Now.AddHours(1);
            req1.BackUrl               = "http://192.168.1.156:8080/Test/Notify";
            req1.MerchantOrderCurrency = Currencys.RMB;
            req1.MerchantOrderAmt      = 1;
            req1.MerchantID            = "630056832596";
            req1.MerchantOrderTime     = DateTime.Now.AddMinutes(-5);
            req1.MerchantOrderID       = Guid.NewGuid().ToString("N");
            req1.MerchantUserID        = string.Empty;
            req1.MobileNum             = "15388157741";
            req1.CarNum = string.Empty;

            var content1 = req1.GetContent();

            Assert.IsTrue(content1 != null);
        }
Beispiel #2
0
        /// <summary>
        /// 预订单
        /// </summary>
        /// <param name="pChannel"></param>
        /// <param name="pRequest"></param>
        public static PreOrderResponse PreOrder(WeiXinPayChannel pChannel, PreOrderRequest pRequest)
        {
            //参数检查
            if (pChannel == null)
            {
                throw new ArgumentNullException("pChannel");
            }
            if (pRequest == null)
            {
                throw new ArgumentNullException("pRequest");
            }
            //创建预订单
            var preOrderReq = pRequest.GetContent(pChannel);
            //获取访问授权
            var token = WeiXinPay4AppGateway.GetAccessToken(pChannel.AppID, pChannel.AppSecret);

            if (!token.IsSuccess)
            {
                throw new WeiXinPayException("501", string.Format("获取访问授权失败:[微信接口返回的错误码={0};错误信息={1}].", token.ErrorCode, token.ErrorMessage));
            }
            var url = string.Format("{0}access_token={1}", API_URL_OF_PREORDER, token.Token);
            var rsp = WeiXinPay4AppGateway.CallAPI <PreOrderResponse>(url, preOrderReq.ToJSON());

            if (rsp.IsSuccess)
            {
                return(rsp);
            }
            else
            {
                throw new WeiXinPayException("502", string.Format("预订单失败:[微信接口返回的错误码={0};错误信息={1}].", rsp.ErrorCode, rsp.ErrorMessage));
            }
        }
Beispiel #3
0
        private void btnOrder_Click(object sender, EventArgs e)
        {
            //创建支付通道
            UnionPayChannel channel = new UnionPayChannel()
            {
                CertificateFilePassword = ConfigurationManager.AppSettings["IVREncryptCertificateFilePassword"]
                ,
                CertificateFilePath = ConfigurationManager.AppSettings["IVREncryptCertificateFilePath"]
                ,
                MerchantID = ConfigurationManager.AppSettings["IVRMerchantID"]
                ,
                PacketEncryptKey = "654321"
            };
            //下订单
            PreOrderRequest req = new PreOrderRequest();

            req.SendTime          = DateTime.Now;
            req.SendSeqID         = Guid.NewGuid().ToString("N");
            req.FrontUrl          = ConfigurationManager.AppSettings["IVRFrontUrl"]; //商户平台的页面,用户支付完毕后跳转的页面
            req.MerchantOrderDesc = "呵呵";
            req.Misc                  = string.Empty;
            req.Mode                  = IVRModes.Callback;
            req.TransTimeout          = DateTime.Now.AddHours(1);
            req.BackUrl               = ConfigurationManager.AppSettings["IVRBackUrl"]; //当用户支付完成后,支付平台回调的交易通知的页面
            req.MerchantOrderCurrency = Currencys.RMB;
            req.MerchantOrderAmt      = 1;
            req.MerchantID            = channel.MerchantID;
            req.MerchantOrderTime     = DateTime.Now.AddMinutes(-5);
            req.MerchantOrderID       = Guid.NewGuid().ToString("N").Substring(0, 30);
            req.MerchantUserID        = string.Empty;
            req.MobileNum             = this.txtMobileNO.Text; //消费者的手机号,支付前置会将验证码发送到该手机
            req.CarNum                = string.Empty;
            //记录支付请求日志
            Loggers.Debug(new DebugLogInfo()
            {
                Message = string.Format("[IVR]PreOrder Request={0}", req.GetContent())
            });
            //支付平台成功接收
            var rsp = IVRGateway.PreOrder(channel, req);

            //重定向到支付页面
            if (rsp.IsSuccess)
            {
                //
                this.Session["MerchantOrderID"]   = rsp.MerchantOrderID;
                this.Session["MerchantOrderTime"] = rsp.MerchantOrderTime;
                //
                this.ltGotoPay.Text = "订单创建成功,请等待支付平台呼入.";
                this.ltGotoPay.Mode = LiteralMode.PassThrough;
            }
        }
Beispiel #4
0
        /// <summary>
        /// 创建预订单
        /// <remarks>
        /// <para>与PreOrder的区别在于,此方法返回的信息包含App客户端调用微信SDK进行支付所必须的所有信息</para>
        /// </remarks>
        /// </summary>
        /// <param name="pChannel"></param>
        /// <param name="pRequest"></param>
        /// <returns></returns>
        public static PreOrderInfo CreatePreOrder(WeiXinPayChannel pChannel, PreOrderRequest pRequest)
        {
            //参数检查
            if (pChannel == null)
            {
                throw new ArgumentNullException("pChannel");
            }
            if (pRequest == null)
            {
                throw new ArgumentNullException("pRequest");
            }
            //创建预订单
            var preOrderReq = pRequest.GetContent(pChannel);
            //获取访问授权
            var token = WeiXinPay4AppGateway.GetAccessToken(pChannel.AppID, pChannel.AppSecret);

            if (!token.IsSuccess)
            {
                throw new WeiXinPayException("501", string.Format("获取访问授权失败:[微信接口返回的错误码={0};错误信息={1}].", token.ErrorCode, token.ErrorMessage));
            }
            var url = string.Format("{0}access_token={1}", API_URL_OF_PREORDER, token.Token);
            var rsp = WeiXinPay4AppGateway.CallAPI <PreOrderResponse>(url, preOrderReq.ToJSON());

            if (!rsp.IsSuccess)
            {
                throw new WeiXinPayException("502", string.Format("预订单失败:[微信接口返回的错误码={0};错误信息={1}].", rsp.ErrorCode, rsp.ErrorMessage));
            }
            //
            PreOrderInfo rtn = new PreOrderInfo();

            rtn.AppID      = pChannel.AppID;
            rtn.NonceStr   = preOrderReq.NonceStr;
            rtn.PartnerID  = pChannel.ParnterID;
            rtn.PreOrderID = rsp.PrePayID;
            rtn.TimeStamp  = preOrderReq.TimeStamp;
            rtn.OrderSign  = preOrderReq.Sign;
            //
            return(rtn);
        }