Exemple #1
0
        static void Main(string[] args)
        {
            String TestStr = "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";



            Dictionary <string, string> HeadPostParam = new Dictionary <string, string>();

            HeadPostParam.Add("version", "4.0.0.1");
            HeadPostParam.Add("member_id", "100000178");                              //商户号
            HeadPostParam.Add("client_ip", "116.236.217.150");                        //要与服务器IP保持一致
            HeadPostParam.Add("file_type", "fi");                                     //收款:fi   出款:fo
            HeadPostParam.Add("settle_date", "2016-11-02");                           //指定日期的对帐文件(除当天)

            String RequestUrl = "https://vgw.baofoo.com/boas/api/fileLoadNewRequest"; //测试请求地址

            String PostString = HttpsRequest.GetParamsStr(HeadPostParam);

            Console.WriteLine("请求参数:" + RequestUrl + "?" + PostString);
            String ReturnStr = HttpsRequest.OpenReadWithHttps(RequestUrl, PostString);

            Console.WriteLine("返回结果:" + ReturnStr);

            if (String.IsNullOrEmpty(ReturnStr))
            {
                Console.WriteLine("请求返回异常!");
                Console.ReadKey();
                return;
            }

            int sTRoF = ReturnStr.IndexOf("resp_code=0000");

            if (sTRoF < 0)
            {
                Console.WriteLine("下载失败!");
                Console.ReadKey();
                return;
            }

            String[] Splitstr = Regex.Split(ReturnStr, "resp_body=", RegexOptions.IgnoreCase); //解板返回的文件参数

            byte[] String64 = Base64.Decode(Splitstr[1]);                                      //Base64编码  字符编码UF8
            try
            {
                String     fileName = "d:/" + DateTime.Now.ToString("yyyy-MM-ddHHmmss") + "_" + HeadPostParam["file_type"] + ".zip";    //存在本地的路径(自行设置)
                FileStream fs       = new FileStream(fileName, FileMode.Create);
                fs.Write(String64, 0, String64.Length);
                fs.Close();
                Console.Write("文件下载成功!路径:" + fileName);
            }
            catch (Exception e) {
                Console.WriteLine("写入文件失败!");
                Console.Write(e.Message);
                Console.ReadKey();
            }

            Console.ReadKey();
        }
Exemple #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Log.LogWrite("");
            String txn_sub_type = Request.Params["txn_sub_type"];

            if (String.IsNullOrEmpty(txn_sub_type))
            {
                Response.Write("参数【txn_sub_type】不能为空");
                Response.End();
            }


            String pay_code          = Request.Params["pay_code"];          //银行卡编码
            String acc_no            = Request.Params["acc_no"];            //银行卡卡号
            String id_card           = Request.Params["id_card"];           //身份证号码
            String id_holder         = Request.Params["id_holder"];         //姓名
            String mobile            = Request.Params["mobile"];            //银行预留手机号
            String next_txn_sub_type = Request.Params["next_txn_sub_type"]; //下一下进行的交易子类
            String trans_id          = Request.Params["trans_id"];          //商户订单号

            Dictionary <String, String> HeadPostParam = new Dictionary <String, String>();

            HeadPostParam.Add("version", "4.0.0.0");
            HeadPostParam.Add("member_id", ConfigurationManager.AppSettings["MemberId"]);
            HeadPostParam.Add("terminal_id", ConfigurationManager.AppSettings["TerminalId"]);
            HeadPostParam.Add("txn_type", "0431");
            HeadPostParam.Add("txn_sub_type", txn_sub_type);
            HeadPostParam.Add("data_type", ConfigurationManager.AppSettings["DataType"]);

            /**
             * 报文体
             * =============================================
             *
             */
            Dictionary <String, Object> XMLArray = new Dictionary <String, Object>();

            /**
             *
             * 公共参数
             *
             */
            XMLArray.Add("txn_sub_type", HeadPostParam["txn_sub_type"]);
            XMLArray.Add("biz_type", "0000");
            XMLArray.Add("terminal_id", HeadPostParam["terminal_id"]);
            XMLArray.Add("member_id", HeadPostParam["member_id"]);
            XMLArray.Add("trans_serial_no", GetTSNID());
            XMLArray.Add("trade_date", DateTime.Now.ToString("yyyyMMddHHmmss"));
            XMLArray.Add("additional_info", "附加信息");
            XMLArray.Add("req_reserved", "保留");


            if (txn_sub_type.Equals("11"))
            {
                Log.LogWrite("=============================【 (" + txn_sub_type + ")预绑卡类交易】=======================================");
                if (String.IsNullOrEmpty(trans_id))
                {
                    Response.Write("商户订单号不能为空【trans_id】");
                    Log.LogWrite("商户订单号不能为空【trans_id】");
                    return;
                }

                XMLArray.Add("acc_no", acc_no);     //商户订单号
                XMLArray.Add("trans_id", trans_id); //商户订单号
                XMLArray.Add("id_card_type", "01"); //证件类型固定01(身份证)
                XMLArray.Add("id_card", id_card);
                XMLArray.Add("id_holder", id_holder);
                XMLArray.Add("mobile", mobile);
                XMLArray.Add("acc_pwd", "");
                XMLArray.Add("valid_date", "");
                XMLArray.Add("valid_no", "");
                XMLArray.Add("pay_code", pay_code);
            }
            else if (txn_sub_type.Equals("12"))
            {
                Log.LogWrite("=============================【 (" + txn_sub_type + ")确认绑卡交易】=======================================");
                String sms_code = Request.Params["sms_code"];//短信验证码
                if (String.IsNullOrEmpty(trans_id))
                {
                    Response.Write("商户订单号不能为空【trans_id】,注:需和预绑卡交易订单号一致");
                    Log.LogWrite("商户订单号不能为空【trans_id】,注:需和预绑卡交易订单号一致");
                    return;
                }
                if (String.IsNullOrEmpty(sms_code))
                {
                    Response.Write("短信验证码不能为空【sms_code】");
                    Log.LogWrite("短信验证码不能为空【sms_code】");
                    return;
                }
                XMLArray.Add("trans_id", trans_id);
                XMLArray.Add("sms_code", sms_code);
            }
            else if (txn_sub_type.Equals("02"))
            {
                Log.LogWrite("=============================【 (" + txn_sub_type + ")解除绑卡交易】=======================================");
                String bind_id = Request.Params["bind_id"];//获取绑定标识
                XMLArray.Add("bind_id", bind_id);
            }
            else if (txn_sub_type.Equals("03"))
            {
                Log.LogWrite("=============================【 (" + txn_sub_type + ")查询绑定关系类交易】=======================================");
                XMLArray.Add("acc_no", acc_no);//卡号
            }
            else if (txn_sub_type.Equals("15"))
            {
                Log.LogWrite("=============================【 (" + txn_sub_type + ")支付类预支付交易】=======================================");
                Dictionary <String, Object> ClientIp = new Dictionary <String, Object>();
                ClientIp.Add("client_ip", "100.0.0.0");
                String TxnAmt  = Request.Params["txn_amt"]; //交易金额额
                String bind_id = Request.Params["bind_id"]; //获取绑定标识

                XMLArray.Add("bind_id", bind_id);
                XMLArray.Add("trans_id", GetTransId());
                XMLArray.Add("txn_amt", decimal.Round((decimal.Parse(TxnAmt) * 100), 0).ToString());//金额以分为单位(整型数据)并把元转换成分
                XMLArray.Add("risk_content", ClientIp);
            }
            else if (txn_sub_type.Equals("16"))
            {
                Log.LogWrite("=============================【 (" + txn_sub_type + ")支付类支付确认交易】=======================================");
                String sms_code    = Request.Params["sms_code"];    //交易金额额
                String business_no = Request.Params["business_no"]; //宝付业务流水号
                if (String.IsNullOrEmpty(business_no))
                {
                    Response.Write("宝付业务流水号不能为空【business_no】");
                    Log.LogWrite("宝付业务流水号不能为空【business_no】");
                    return;
                }
                XMLArray.Add("sms_code", sms_code);
                XMLArray.Add("business_no", business_no);
            }
            else if (txn_sub_type.Equals("06"))
            {
                Log.LogWrite("=============================【 (" + txn_sub_type + ")订单查询接口】=======================================");
                String orig_trans_id = Request.Params["orig_trans_id"];//订单号
                XMLArray.Add("orig_trans_id", orig_trans_id);
            }
            else
            {
                Response.Write("[next_txn_sub_type]参数错误!");
                Response.End();
            }
            String TempRSAStr = ToXMLJSON.ObjectToXmlJson(XMLArray, HeadPostParam["data_type"]);//JSON或XML由date_type确定

            Log.LogWrite("【" + HeadPostParam["txn_sub_type"] + "序例化(" + HeadPostParam["data_type"] + "):】" + TempRSAStr);

            TempRSAStr = RSAUtil.EncryptRSAByPfx(TempRSAStr, HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["PfxPath"]), ConfigurationManager.AppSettings["PfxPwd"]);
            Log.LogWrite("【" + HeadPostParam["txn_sub_type"] + "报文加密:】" + TempRSAStr);//记录日志

            HeadPostParam.Add("data_content", TempRSAStr);

            String PostParam = HttpsRequest.GetParam(HeadPostParam);

            Log.LogWrite("【" + HeadPostParam["txn_sub_type"] + "请求参数拼接:】" + PostParam);

            String HTTPReturn = HttpsRequest.OpenReadWithHttps(ConfigurationManager.AppSettings["RUrl"], PostParam);

            Log.LogWrite("【" + HeadPostParam["txn_sub_type"] + "返回报文:】" + HTTPReturn);

            TempRSAStr = RSAUtil.DecryptRSAByCer(HTTPReturn, Server.MapPath(ConfigurationManager.AppSettings["CerPath"]));


            if (String.IsNullOrEmpty(TempRSAStr))
            {
                Log.LogWrite("【解密结果】:解密失败");
                Response.Write("解密失败!{" + TempRSAStr + "}<br>");
                Response.End();
            }

            string JSONstring = "";

            if (HeadPostParam["data_type"].Equals("xml"))
            {
                JSONstring = JXDConvert.XmlToJson(TempRSAStr);
            }
            else
            {
                JSONstring = TempRSAStr;
            }

            Log.LogWrite("【返回明文解密:】" + JSONstring);
            Dictionary <String, Object> DJSON  = JXDConvert.JsonToDictionary(JSONstring);
            Dictionary <String, Object> DJSONS = DJSON;

            if (HeadPostParam["data_type"].Equals("xml"))
            {
                DJSON = (Dictionary <String, Object>)DJSON["result"];
            }



            Log.LogWrite("【对象转换】:" + DJSON["resp_code"]);
            String ReturnStr = "";

            if (DJSON["resp_code"].Equals("0000"))
            {
                //此处商户可写自已的处理程序

                ReturnStr = "返回码:" + DJSON["resp_code"] + " 返回消息:" + DJSON["resp_msg"];

                if (txn_sub_type.Equals("11"))
                {
                    ReturnStr = ToXMLJSON.ObjectToXmlJson(DJSONS["result"], "JSON");
                }
                else if (txn_sub_type.Equals("12") || txn_sub_type.Equals("03"))
                {
                    ReturnStr += ", 绑定编码:" + DJSON["bind_id"];
                }
                else if (txn_sub_type.Equals("15") || txn_sub_type.Equals("14"))
                {
                    ReturnStr = ToXMLJSON.ObjectToXmlJson(DJSONS["result"], "JSON");
                }
                else if (txn_sub_type.Equals("16") || txn_sub_type.Equals("06"))
                {
                    String MoneyStr = "(分)";
                    if (txn_sub_type.Equals("06"))
                    {//查询返回单位为元
                        MoneyStr = "(元)";
                    }
                    ReturnStr += ", 成功金额:" + DJSON["succ_amt"] + MoneyStr + ", 商户订单号:" + DJSON["trans_id"];
                }
            }
            else if (txn_sub_type.Equals("15") || txn_sub_type.Equals("11"))
            {
                ReturnStr = ToXMLJSON.ObjectToXmlJson(DJSONS["result"], "JSON");
            }
            else
            {
                ReturnStr = "返回码:" + DJSON["resp_code"] + ", 返回消息:" + DJSON["resp_msg"];
            }
            Response.Write(ReturnStr);
            Log.LogWrite("=============================【 (" + txn_sub_type + ")结束】=======================================");
        }