コード例 #1
0
ファイル: PayProvider.cs プロジェクト: KqSMea8/HS.Admin
        /// <summary>
        /// 查询订单支付状态
        /// </summary>
        /// <returns></returns>
        /// <remarks>2016-12-20 杨浩 创建</remarks>
        public override Result QueryOrderState(string orderId)
        {
            string url = "https://api.mch.weixin.qq.com/pay/orderquery";

            var    result         = base.QueryOrderState(orderId);
            string out_trade_no   = "";
            string transaction_id = "5555";

            //检测必填参数
            if (out_trade_no == "" && transaction_id == "")
            {
                result.Message = "订单查询接口中,out_trade_no、transaction_id至少填一个!";
                return(result);
            }

            var values = new SortedDictionary <string, object>();

            values["transaction_id"] = transaction_id;
            values["appid"]          = payConfig.WxAppid;
            values["mch_id"]         = payConfig.WxMchId;
            values["nonce_str"]      = GenerateNonceStr;
            //values.Add("out_trade_no", out_trade_no);

            //values.Add("sign_type", "MD5");
            values["sign"] = MakeSign(values);

            string xml = ToXml(values);

            var    start    = DateTime.Now;
            string response = Hyt.Util.WebUtil.Post(xml, url, false, 3000);

            var end      = DateTime.Now;
            int timeCost = (int)((end - start).TotalMilliseconds);//获得接口耗时

            //将xml格式的数据转化为对象以返回
            var xe = new XmlDocumentExtender();

            xe.LoadXml(response);
            string return_code = xe["return_code"].InnerText;
            string result_code = xe["result_code"].InnerText;

            if (return_code == "SUCCESS" && result_code == "SUCCESS")
            {
            }

            return(result);
        }
コード例 #2
0
ファイル: HipacUpGrade.cs プロジェクト: KqSMea8/HS.Admin
        /// <summary>
        /// 用户调用该接口可实现自己联系发货(线下物流)
        /// </summary>
        /// <param name="param">参数实体</param>
        /// <param name="auth">授权参数</param>
        /// <returns>处理结果</returns>
        /// <reamrks>2017-08-16 杨浩 创建</reamrks>
        public Result SendDelivery(DeliveryParameters param, AuthorizationParameters auth)
        {
            var result = new Result()
            {
                Status = true
            };
            var _param = new Dictionary <string, string>();

            string sendId  = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(100000, 999999).ToString();
            string signStr = "appKey=" + auth.DealerApp.AppKey + "&sendID=" + sendId + "&key=" + auth.DealerApp.AppSecret;
            string sign    = MD5Encrypt(signStr).ToUpper();

            var    companyArry   = param.CompanyCode.Split('_');
            string logisticsName = "";
            string logisticsCode = companyArry[0];

            if (companyArry.Length > 1)
            {
                logisticsName = companyArry[1];
            }


            string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";

            xml += string.Format(@"<HipacPush>
  <Head>
    <version>1.0</version>
    <service>backLogisticNo</service>
    <sendID>{0}</sendID>  
    <appKey>{1}</appKey> 
    <sign>{2}</sign> 
  </Head>
  <Body>
    <Orders>
		<Order>
		  <orderNum>{3}</orderNum>
		  <LogisticsInfoList>
			  <LogisticsInfo>
				<logisticsName>{4}</logisticsName>
				<logisticsNo>{5}</logisticsNo>
				<logisticsCode>{6}</logisticsCode>
			  </LogisticsInfo>
		  </LogisticsInfoList>
		</Order>
	</Orders>
  </Body>  
</HipacPush>", sendId, auth.DealerApp.AppKey, sign, param.MallOrderId, logisticsName, param.HytExpressNo, logisticsCode);
            var    xms       = new XmlDocumentExtender();
            string resultStr = Hyt.Util.WebUtil.PostString(string.Format("http://gw.hipac.cn/pub/{0}04030302/transNotify.do", auth.ShopAccount), xml, "text/xml");

            xms.LoadXml(resultStr);

            /*
             *
             * <?xml version="1.0" encoding="UTF-8"?>
             * <HipacPush>
             * <Head>
             * <!-- 版本 默认为1.0 -->
             * <version>1.0</version>
             * <!-- 接口名称 -->
             * <service>backLogisticNo</service>
             * <!-- 推送报文唯一值YYYYDDMMHHmmss+6位随机数字 -->
             * <sendID>20171102152126152072</sendID>
             * <appKey>XYGS20171020</appKey>
             * <retCode>SUCCESS</retCode>
             * <sign>7CBCF21556820EEEF40528A6BF522727</sign>
             * </Head>
             * <Body>
             * <bizCode>SUCCESS</bizCode>
             * <bizMsg>成功</bizMsg>
             * <Order>
             * <!-- 订单编号 -->
             * <orderNum>YT201710311424931334</orderNum>
             * </Order>
             * </Body>
             * </HipacPush>
             *
             */
            var order = xms.SelectSingleNode("/HipacPush/Body");

            if (order["bizCode"].InnerText.ToUpper() != "SUCCESS")
            {
                result.Status  = false;
                result.Message = order["bizMsg"].InnerText;
            }

            return(result);
        }
コード例 #3
0
        /// <summary>
        /// 查询海关订单
        /// </summary>
        /// <param name="orderId">订单编号</param>
        /// <returns></returns>
        /// <remarks>2016-8-18 杨浩 重构</remarks>
        public override Result SearchCustomsOrder(int orderId)
        {
            var result = new Result()
            {
                Status = true
            };

            try
            {
                var resultDic = new Dictionary <int, string>();

                var    ftp         = new FtpUtil(FTPUri, FTPName, FTPPassword);
                string ftpResponse = "";


                #region

                /*
                 * <?xml version="1.0" encoding="UTF-8"?>
                 * <DocRec>
                 * <Head>
                 * <MessageID><![CDATA[KJDOCREC_KJGGPT2016110315520669308]]></MessageID>
                 * <MessageType><![CDATA[KJDOCREC]]></MessageType>
                 * <Sender><![CDATA[KJGGPT]]></Sender>
                 * <Receiver><![CDATA[GZXINRAO]]></Receiver>
                 * <SendTime><![CDATA[20161103155206]]></SendTime>
                 * <FunctionCode><![CDATA[]]></FunctionCode>
                 * <SignerInfo><![CDATA[]]></SignerInfo>
                 * <Version><![CDATA[2.0]]></Version>
                 * </Head>
                 * <Declaration>
                 * <OrgMessageID><![CDATA[F9F53112-3A28-4912-92EC-BD3085085FC8]]></OrgMessageID>
                 * <OrgMessageType><![CDATA[CEB311Message]]></OrgMessageType>
                 * <OrgSenderID><![CDATA[GZXINRAO]]></OrgSenderID>
                 * <OrgReceiverID><![CDATA[KJCUSTOM]]></OrgReceiverID>
                 * <OrgRecTime><![CDATA[20161103155206]]></OrgRecTime>
                 * <RespondBy>01</RespondBy>
                 * <RespondStatus><![CDATA[F]]></RespondStatus>
                 * <RespondNotes><![CDATA[1.4.2.业务验证失败:
                 * 1.广州海关单号【501_20161029101958】重复申报...
                 * ]]></RespondNotes>
                 * <Status>F</Status>
                 * <Notes><![CDATA[1.4.2.业务验证失败:
                 * 1.广州海关单号【501_20161029101958】重复申报...
                 * ]]></Notes>
                 * </Declaration>
                 * </DocRec>
                 * */

                #endregion
                // 获取文件列表
                //string[] fileList = ftp.GetFileList(FTPUri + "cebout/");
                string[] fileList = ftp.GetFileList(FTPUri + FolderOut);

                if (fileList != null && fileList.Length > 0)
                {
                    foreach (string fileName in fileList)
                    {
                        //Stream stream = ftp.FileStream(FTPUri + "cebout/" + fileName, ref ftpResponse);
                        var stream = ftp.FileStream(FTPUri + FolderOut + fileName, ref ftpResponse);
                        #region 更新订单海关推送状态

                        string xmlData = "";
                        stream.Seek(0, SeekOrigin.Begin);
                        using (var reader = new StreamReader(stream))
                        {
                            xmlData = reader.ReadToEnd();
                        }

                        if (!string.IsNullOrEmpty(xmlData))
                        {
                            int id = 0;
                            var customsOrderLog = new SoCustomsOrderLog();

                            var xml = new XmlDocumentExtender();
                            xml.LoadXml(xmlData);
                            var _xml = xml["CEB312Message"];

                            if (_xml != null)
                            {
                                var orderReturn = _xml["OrderReturn"];

                                //订单编号
                                if (!int.TryParse(orderReturn["orderNo"].InnerText.Split('_')[0], out id))
                                {
                                    continue;
                                }

                                var customsLogInfo = BLL.Order.SoCustomsOrderLogBo.Instance.GetCustomsOrderLogInfo(id, (int)Code);

                                int status = -999;

                                switch (orderReturn["returnStatus"].InnerText)
                                {
                                case "":    // 电子口岸申报中
                                    result.Message = "电子口岸申报中!";
                                    status         = (int)OrderStatus.海关报关状态.处理中;
                                    break;

                                case "2":    // 发送海关成功
                                    status         = (int)OrderStatus.海关报关状态.处理中;
                                    result.Message = orderReturn["returnInfo"].InnerText;
                                    if (customsLogInfo.StatusCode == "3")
                                    {
                                        status         = (int)OrderStatus.海关报关状态.作废;
                                        result.Message = orderReturn["returnInfo"].InnerText;
                                    }
                                    break;

                                case "4":    // 发送海关失败
                                case "100":  // 海关退单
                                    status         = (int)OrderStatus.海关报关状态.失败;
                                    result.Message = "海关退单!";
                                    break;

                                case "120":    // 海关入库
                                    status         = (int)OrderStatus.海关报关状态.成功;
                                    result.Message = "海关入库成功!";
                                    break;

                                default:
                                    status         = (int)OrderStatus.海关报关状态.失败;
                                    result.Message = "海关推送失败!";
                                    break;
                                }
                                customsOrderLog.StatusCode = "";
                                //customsOrderLog.StatusCode = orderReturn["returnStatus"].InnerText;
                                customsOrderLog.StatusMsg = orderReturn["returnInfo"].InnerText;

                                if (resultDic.ContainsKey(orderId))
                                {
                                    resultDic[orderId] = customsOrderLog.StatusMsg;
                                }
                                else
                                {
                                    resultDic.Add(orderId, customsOrderLog.StatusMsg);
                                }


                                BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)status, 2, id);


                                if (customsLogInfo != null)
                                {
                                    customsOrderLog.LastUpdateBy = 0;
                                    if (BLL.Authentication.AdminAuthenticationBo.Instance.IsLogin)
                                    {
                                        customsOrderLog.LastUpdateBy = BLL.Authentication.AdminAuthenticationBo.Instance.Current.Base.SysNo;
                                    }

                                    customsOrderLog.LastUpdateDate = DateTime.Now;
                                    customsOrderLog.ReceiptContent = xmlData;
                                    customsOrderLog.SysNo          = customsLogInfo.SysNo;
                                    customsOrderLog.FileName       = customsLogInfo.FileName;
                                    customsOrderLog.Packets        = customsLogInfo.Packets;
                                    BLL.Order.SoCustomsOrderLogBo.Instance.UpdateCustomsOrderLog(customsOrderLog);
                                }
                            }
                            else
                            {
                                _xml = xml["DocRec"];
                                if (_xml != null)
                                {
                                    var status = _xml["Declaration"]["Status"].InnerText;
                                }
                            }
                        }

                        ftp.DeleteFile(FTPUri + FolderOut + fileName);//删除回执文件
                        #endregion
                    }


                    if (resultDic.ContainsKey(orderId))
                    {
                        result.Message = resultDic[orderId];
                    }
                    else
                    {
                        result.Message = "暂无回执";
                    }
                }
                else
                {
                    var customsLogInfo = BLL.Order.SoCustomsOrderLogBo.Instance.GetCustomsOrderLogInfo(orderId, (int)Code);
                    result.Status  = false;
                    result.Message = customsLogInfo != null?customsLogInfo.StatusMsg:"没有找到回执文件,请稍后重试!";
                }
            }
            catch (Exception ex)
            {
                result.Status  = false;
                result.Message = ex.Message;
            }
            return(result);
        }