Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="out_trade_no"></param>
        /// <param name="total_fee"></param>
        /// <returns></returns>
        public Hashtable submitOrderInfo(string out_trade_no, decimal total_fee)
        {
            //reqHandler.setReqParameters(new string[] { "out_trade_no", "body", "attach", "total_fee", "mch_create_ip", "time_start", "time_expire" });

            reqHandler.setParameter("out_trade_no", out_trade_no);                  //商户订单号
            reqHandler.setParameter("body", "商城储值");                                //商品描述
            reqHandler.setParameter("attach", "");                                  //附加信息
            reqHandler.setParameter("total_fee", (total_fee * 100M).ToString("0")); //总金额

            reqHandler.setParameter("mch_create_ip", HttpContext.Current.Request.UserHostAddress);
            reqHandler.setParameter("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));                 //订单生成时间
            reqHandler.setParameter("time_expire", DateTime.Now.AddMinutes(15).ToString("yyyyMMddHHmmss")); //订单超时间

            reqHandler.setParameter("service", "pay.weixin.scancode");                                      //接口类型:pay.weixin.scancode
            //reqHandler.setParameter("charset", "GB2312");//字符集 默认为UTF-8
            reqHandler.setParameter("mch_id", SuppAccount);                                                 //必填项,商户号,由威富通分配
            reqHandler.setParameter("version", SuppUserName);                                               //接口版本号,目前为1.1
            reqHandler.setParameter("notify_url", notifyUrl);                                               //通知地址,必填项,接收威富通通知的URL,需给绝对路径,255字符内格式如:http://wap.tenpay.com/tenpay.asp
            reqHandler.setParameter("nonce_str", Utils.random());;                                          //随机字符串,必填项,不长于 32 位
            reqHandler.createSign();                                                                        //创建签名

            string data = Utils.toXml(reqHandler.getAllParameters());
            Dictionary <string, string> reqContent = new Dictionary <string, string>();

            reqContent.Add("url", reqHandler.getGateUrl());
            reqContent.Add("data", data);
            Dictionary <string, object> resMsg = new Dictionary <string, object>();

            pay.setReqContent(reqContent);

            if (pay.call())
            {
                resHandler.setContent(pay.getResContent());
                resHandler.setKey(SuppKey);
                Hashtable param = resHandler.getAllParameters();
                if (resHandler.isTenpaySign())
                {
                    //当返回状态与业务结果都为0时才返回支付二维码,其它结果请查看接口文档
                    if (int.Parse(param["status"].ToString()) == 0 && int.Parse(param["result_code"].ToString()) == 0)
                    {
                        resMsg.Clear();
                        resMsg.Add("code_img_url", param["code_img_url"]);
                        resMsg.Add("code_url", param["code_url"]);
                        resMsg.Add("code_status", param["code_status"]);

                        // Utils.writeFile("resMsg", param);

                        return(param);
                        //param["code_img_url"].ToString() + "&uuid=" + GetUUID(param["code_url"].ToString());
                    }
                    else
                    {
                        resMsg.Clear();
                        resMsg.Add("status", 500);
                        resMsg.Add("msg", "Error Code:" + param["err_code"] + " Error Message:" + param["err_msg"]);

                        LogWrite("Error Code:" + param["err_code"] + " Error Message:" + param["err_msg"]);
                    }
                }
                else
                {
                    resMsg.Clear();
                    resMsg.Add("status", 500);
                    resMsg.Add("msg", "Error Code:" + param["status"] + " Error Message:" + param["message"]);


                    LogWrite("Error Code:" + param["err_code"] + " Error Message:" + param["err_msg"]);
                }
            }
            else
            {
                resMsg.Clear();
                resMsg.Add("status", 500);
                resMsg.Add("msg", "Response Code:" + pay.getResponseCode() + " Error Info:" + pay.getErrInfo());


                LogWrite("Error Code:" + "Response Code:" + pay.getResponseCode() + " Error Info:" + pay.getErrInfo());
            }

            return(null);
        }
Esempio n. 2
0
        /// <summary>
        /// 威富通支付接口,不存数据库,仅做支付用
        /// </summary>
        /// <param name="Row"></param>
        /// <returns></returns>
        private string GenerateWftOrder(DataRow Row)
        {
            string CommunityId = Row["CommunityId"].ToString();
            string FeesIds     = Row["FeesIds"].ToString();
            string txnTime     = DateTime.Now.ToString("yyyyMMddHHmmss");
            string CustID      = Row["CustID"].ToString();

            //2017-06-05添加可选参数openId
            //用于区分是否来自于微信H5支付
            //默认为空
            if (!Row.Table.Columns.Contains("openId"))
            {
                return(JSONHelper.FromString(false, "请通过微信访问!"));
            }
            string openId = Row["openId"].ToString();

            //增加FeesIds重复验证
            if (FeesIds == "")
            {
                return(JSONHelper.FromString(false, "未选择费用!"));
            }
            string[]         FeesStr = FeesIds.Split(',');
            HashSet <string> h       = new HashSet <string>();

            for (int i = 0; i < FeesStr.Length; i++)
            {
                h.Add(FeesStr[i]);
            }
            if (h.Count != FeesStr.Length)
            {
                return(JSONHelper.FromString(false, "费用重复!"));
            }
            DataTable CommunityTable = new DbHelperSQLP(PubConstant.UnifiedContionString.ToString()).Query("SELECT * FROM Tb_Community WHERE Id='" + CommunityId.ToString() + "'").Tables[0];

            if (null == CommunityTable || CommunityTable.Rows.Count <= 0)
            {
                return(JSONHelper.FromString(false, "获取数据库信息失败!"));
            }
            //连接字符串
            string connStr = UnionUtil.GetConnectionString(CommunityTable.Rows[0]);
            double Amount  = 0.00d;

            using (IDbConnection conn = new SqlConnection(connStr))
            {
                Amount = conn.ExecuteScalar <double>("SELECT ISNULL(SUM(DebtsAmount),0)+ISNULL(SUM(DebtsLateAmount),0) AS Amount FROM Tb_HSPR_Fees WHERE FeesID IN (" + FeesIds + ")", null, null, null, CommandType.Text);
            }
            if (Amount <= 0)
            {
                return(JSONHelper.FromString(false, "缴费金额必须大于0!"));
            }
            //把金额转换为分
            int fen = (int)Amount * 100;
            //商户订单号,当前10位时间戳+16位随机字符
            string         out_trade_no = ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000) + Utils.Nmrandom();
            RequestHandler reqHandler   = new RequestHandler(null);

            reqHandler.setGateUrl("https://pay.swiftpass.cn/pay/gateway");
            reqHandler.setKey("9d101c97133837e13dde2d32a5054abb");
            reqHandler.setParameter("out_trade_no", out_trade_no);    //商户订单号
            reqHandler.setParameter("body", "物管费");                   //商品描述
            reqHandler.setParameter("attach", CommunityId);           //附加信息
            reqHandler.setParameter("total_fee", "1");                //总金额
            reqHandler.setParameter("mch_create_ip", "125.64.16.10"); //终端IP
            reqHandler.setParameter("time_start", "");                //订单生成时间
            reqHandler.setParameter("time_expire", "");               //订单超时时间
            reqHandler.setParameter("service", "pay.weixin.jspay");   //接口类型:pay.weixin.jspay
            reqHandler.setParameter("mch_id", "7551000001");          //必填项,商户号,由平台分配
            reqHandler.setParameter("version", "1.0");                //接口版本号
            reqHandler.setParameter("notify_url", "http://125.64.16.10:9999/TwInterface/Service/WeiXinPayCallBack/WeiXinWftPay.ashx");
            //通知地址,必填项,接收平台通知的URL,需给绝对路径,255字符内;此URL要保证外网能访问
            reqHandler.setParameter("nonce_str", Utils.random());     //随机字符串,必填项,不长于 32 位
            reqHandler.setParameter("charset", "UTF-8");              //字符集
            reqHandler.setParameter("sign_type", "MD5");              //签名方式
            reqHandler.setParameter("is_raw", "1");                   //原生JS值
            reqHandler.setParameter("device_info", "");               //终端设备号
            reqHandler.setParameter("sub_openid", "");                //测试账号不传值,此处默认给空值。正式账号必须传openid值,获取openid值指导文档地址:http://www.cnblogs.com/txw1958/p/weixin76-user-info.html
            reqHandler.setParameter("callback_url", "");              //前台地址  交易完成后跳转的 URL,需给绝对路径,255字 符 内 格 式如:http://wap.tenpay.com/callback.asp
            reqHandler.setParameter("goods_tag", "");                 //商品标记
            reqHandler.createSign();                                  //创建签名
                                                                      //以上参数进行签名
            string data = Utils.toXml(reqHandler.getAllParameters()); //生成XML报文
            Dictionary <string, string> reqContent = new Dictionary <string, string>();

            reqContent.Add("url", reqHandler.getGateUrl());
            reqContent.Add("data", data);
            PayHttpClient pay = new PayHttpClient();

            pay.setReqContent(reqContent);
            if (!pay.call())
            {
                return(JSONHelper.FromString(false, pay.getErrInfo()));
            }
            ClientResponseHandler resHandler = new ClientResponseHandler();

            resHandler.setContent(pay.getResContent());
            resHandler.setKey("9d101c97133837e13dde2d32a5054abb");
            Hashtable param = resHandler.getAllParameters();

            if (!resHandler.isTenpaySign())
            {
                return(JSONHelper.FromString(false, param["message"].ToString()));
            }
            //当返回状态与业务结果都为0时才返回,其它结果请查看接口文档
            if (int.Parse(param["status"].ToString()) != 0 || int.Parse(param["result_code"].ToString()) != 0)
            {
                return(JSONHelper.FromString(false, param["err_msg"].ToString()));
            }
            return(JSONHelper.FromJsonString(true, param["pay_info"].ToString()));
        }