Пример #1
0
        /// <summary>
        /// 企业支付TEST
        /// </summary>
        /// <param name="openId">openId</param>
        /// <param name="orderId">订单号</param>
        /// <param name="amount">金额</param>
        /// <param name="desc">付款描述信息</param>
        /// <returns></returns>
        public ContentResult QyPayTest(string openId, string orderId, decimal amount, string desc)
        {
            //创建支付应答对象
            RequestHandler packageReqHandler = new RequestHandler(null);

            var sp_billno = DateTime.Now.ToString("HHmmss") + TenPayV3Util.BuildRandomStr(28);
            var nonceStr  = TenPayV3Util.GetNoncestr();

            //创建请求统一订单接口参数
            packageReqHandler.SetParameter("mch_appid", AppId);
            packageReqHandler.SetParameter("mchid", Mchid);
            packageReqHandler.SetParameter("nonce_str", nonceStr);
            packageReqHandler.SetParameter("partner_trade_no", orderId);
            packageReqHandler.SetParameter("openid", openId);
            packageReqHandler.SetParameter("check_name", "NO_CHECK");//不校验用户姓名
            packageReqHandler.SetParameter("desc", desc);
            packageReqHandler.SetParameter("amount", (amount * 100).ToString());
            packageReqHandler.SetParameter("spbill_create_ip", "101.200.233.5");//TODO:替换成可配置文件
            string sign = packageReqHandler.CreateMd5Sign("key", PayKey);

            packageReqHandler.SetParameter("sign", sign);

            string data = packageReqHandler.ParseXML();

            //证书相关
            var cert = new X509Certificate2(SSLCERT_PATH, SSLCERT_PASSWORD);

            try
            {
                //调用统一订单接口
                var result = TenPayV3.QYPay(data, cert);
                logger.Info(result);
                var    unifiedorderRes = XDocument.Parse(result);
                string return_code     = unifiedorderRes.Element("xml").Element("return_code").Value;
                return(Content(return_code));
            }
            catch (Exception e)
            {
                logger.Error(e);
                return(Content("-1"));
            }
        }
Пример #2
0
        /// <summary>
        /// 企业支付
        /// </summary>
        /// <param name="openId">openId</param>
        /// <param name="payCode">支付ID,订单号+支付日志ID</param>
        /// <param name="amount">金额</param>
        /// <param name="desc">付款描述信息</param>
        /// <returns></returns>
        public static string QYPay(string openId, string payCode, decimal amount, string desc)
        {
            var payStatus = 1;
            //创建支付应答对象
            RequestHandler packageReqHandler = new RequestHandler(null);
            var            nonceStr          = TenPayV3Util.GetNoncestr();

            //创建请求接口参数
            packageReqHandler.SetParameter("mch_appid", AppId);
            packageReqHandler.SetParameter("mchid", Mchid);
            packageReqHandler.SetParameter("nonce_str", nonceStr);
            packageReqHandler.SetParameter("partner_trade_no", payCode);
            packageReqHandler.SetParameter("openid", openId);
            packageReqHandler.SetParameter("check_name", "NO_CHECK");//不校验用户姓名
            packageReqHandler.SetParameter("desc", desc);
            packageReqHandler.SetParameter("amount", Convert.ToInt32(amount * 100).ToString());
            packageReqHandler.SetParameter("spbill_create_ip", IP);
            string sign = packageReqHandler.CreateMd5Sign("key", PayKey);

            packageReqHandler.SetParameter("sign", sign);

            string data = packageReqHandler.ParseXML();

            //证书相关
            var cert          = new X509Certificate2(SSLCERT_PATH, SSLCERT_PASSWORD);
            var access        = new WeixinPayLogDataAccess();
            var weixinService = new WeiXinService(access);

            try
            {
                //调用企业支付接口
                var result = TenPayV3.QYPay(data, cert);
                logger.Info("企业支付返回信息:" + result);
                var    unifiedorderRes = XDocument.Parse(result);
                string return_code     = unifiedorderRes.Element("xml").Element("return_code").Value;
                if (return_code == "SUCCESS")
                {
                    payStatus = 1;
                }
                else
                {
                    payStatus = 0;
                }

                return(return_code);
            }
            catch (Exception e)
            {
                logger.Error(e);
                //payStatus = 0;
                //var paylog = new WeixinPayLog()
                //{
                //    OrderId = orderId,
                //    WxOpenId = openId,
                //    Description = desc,
                //    Amount = amount,
                //    Status = payStatus,
                //    CreateTime = DateTime.Now
                //};
                //weixinService.InsertWeixinPayLog(paylog);
                return("ERROR");
            }
        }