Exemple #1
0
 public ActionResult TenpayBase(SitePayAPI p_spapi)
 {
     SitePayAPI m_sp = SitePayAPI.GetModel(t => t.ApiType == "财付通");
     if (IsGet)
     {
         SetSaveFormCollection = b_BLL_SitePayAPI.NameValueCollectionEx(ref m_sp);
     }
     if (IsPost)
         try
         {
             p_spapi.id = m_sp.id;
             b_BLL_SitePayAPI.AESitePayAPI(this, true, ref p_spapi);
         }
         catch (Exception ce)
         {
             IsSaveForm = true;
             ExceptionEx.MyExceptionLog.WriteLog(this, ce);
         }
     return View(p_spapi ?? new SitePayAPI());
 }
        static Config()
        {
            //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
            SitePayAPI m_entity = SitePayAPI.GetModel(t => t.ApiType == "支付宝");

            //合作身份者ID,以2088开头由16位纯数字组成的字符串
            partner = m_entity.AppIdentity;

            //交易安全检验码,由数字和字母组成的32位字符串
            key = m_entity.AppKey;

            //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑



            //字符编码格式 目前支持 gbk 或 utf-8
            input_charset = "utf-8";

            //签名方式,选择项:RSA、DSA、MD5
            sign_type = "MD5";
        }
Exemple #3
0
        public AlipayConfig()
        {
            //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
            SitePayAPI m_pay = SitePayAPI.GetModel(t => t.ApiType == "支付宝");

            //合作身份者ID,以2088开头由16位纯数字组成的字符串
            partner = m_pay.AppIdentity;

            //交易安全检验码,由数字和字母组成的32位字符串
            key = m_pay.AppKey;

            //签约支付宝账号或卖家支付宝帐户
            seller_email = m_pay.Account;

            //付完款后跳转的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数
            return_url = WebCacheHelper.GetSiteInfo().WebAddress + "/Alipay/Alipay_Return";

            //交易过程中服务器通知的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数
            notify_url = WebCacheHelper.GetSiteInfo().WebAddress + "/Alipay/Alipay_Notify";

            //网站商品的展示地址,不允许加?id=123这类自定义参数
            show_url = WebCacheHelper.GetSiteInfo().WebAddress;

            //收款方名称,如:公司名称、网站名称、收款人姓名等
            mainname = "Site Name";

            //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

            //字符编码格式 目前支持 gbk 或 utf-8
            input_charset = "utf-8";

            //签名方式 不需修改
            sign_type = "MD5";

            //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
            transport = "http";
        }
Exemple #4
0
        /// <summary>
        /// 跳转支付函数
        /// </summary>
        /// <param name="orderId"></param>
        /// <returns></returns>
        public ActionResult Checkout(string Order_UID, string Retaion_UID)
        {
            string     HomeUrl  = SiteInfo.GetModel(t => t.id != 0).WebAddress;
            SitePayAPI m_entity = SitePayAPI.GetModel(t => t.ApiType == "财付通");


            v_mid = m_entity.AppIdentity.ToString2();               // 商户号,这里为测试商户号20000400,替换为自己的商户号即可
            v_url = HomeUrl + "/CBPayMenForOrder/CBPayMen_Return";; // 商户自定义返回接收支付结果的页面
            // MD5密钥要跟订单提交页相同,如Send.asp里的 key = "test" ,修改""号内 test 为您的密钥
            string key = m_entity.AppKey.ToString2();               // 如果您还没有设置MD5密钥请登陆我们为您提供商户后台,地址:https://merchant3.chinabank.com.cn/
            // 登陆后在上面的导航栏里可能找到“资料管理”,在资料管理的二级导航栏里有“MD5密钥设置”
            // 建议您设置一个16位以上的密钥或更高,密钥最多64位,但设置16位已经足够了

            //应付金额
            double?PayMoney = 0;
            //会员编号
            string Member_UID = string.Empty;
            //订单编号集合
            string OrderUIDLIST = string.Empty;

            //if (!string.IsNullOrEmpty(Retaion_UID))
            //{
            //    List<Orders> order_list = Orders.GetModelList(t => t.O_Relation_UID == Retaion_UID).List;
            //    foreach (var item in order_list)
            //    {
            //        PayMoney += item.O_PayMoney;
            //        Member_UID = item.Member_UID;
            //        OrderUIDLIST += item.O_UID + ",";
            //    }
            //}
            //else
            //{
            //    Orders m_order = Orders.GetModel(t => t.O_UID == Order_UID);
            //    PayMoney = m_order.O_PayMoney;
            //    Member_UID = m_order.Member_UID;
            //    OrderUIDLIST += m_order.O_UID + ",";
            //}

            //网站这边订单号
            v_oid    = OrderUIDLIST; //Request["v_oid"];
            v_amount = PayMoney.ToString2();
            if (v_oid == null || v_oid.Equals(""))
            {
                DateTime dt      = DateTime.Now;
                string   v_ymd   = dt.ToString("yyyyMMdd"); // yyyyMMdd
                string   timeStr = dt.ToString("HHmmss");   // HHmmss
                v_oid = v_ymd + v_mid + timeStr;
            }

            #region 支付

            v_moneytype = "CNY";
            if (PayMoney > 0 && !string.IsNullOrEmpty(OrderUIDLIST))
            {
                string text = v_amount + v_moneytype + v_oid + v_mid + v_url + key; // 拼凑加密串
                v_md5info = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(text, "md5").ToUpper();
                remark1   = "支付订单:" + v_oid;                                        // Request["remark1"];
                remark2   = "";                                                     //Request["remark2"];

                StringBuilder sHtmlText = new StringBuilder();

                sHtmlText.AppendLine("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
                sHtmlText.AppendLine("  <html xmlns=\"http://www.w3.org/1999/xhtml\" >");
                sHtmlText.AppendLine("  <head runat=\"server\">");
                sHtmlText.AppendLine("      <title>订单提交</title>");
                sHtmlText.AppendLine("  </head>");
                sHtmlText.AppendLine("  <body >");
                sHtmlText.AppendLine("  <body  onLoad=\"javascript:document.E_FORM.submit()\">");
                sHtmlText.AppendLine("       <form    action=\"https://pay3.chinabank.com.cn/PayGate?encoding=UTF-8\" accept-charset=\"utf-8\"  method=\"post\" name=\"E_FORM\">");

                sHtmlText.AppendLine("        <input type=\"hidden\" name=\"v_md5info\"    value=\"" + v_md5info + "\" size=\"100\" />");
                sHtmlText.AppendLine("        <input type=\"hidden\" name=\"v_mid\"        value=\"" + v_mid + "\" />");
                sHtmlText.AppendLine("        <input type=\"hidden\" name=\"v_oid\"        value=\"" + v_oid + "\" />");
                sHtmlText.AppendLine("        <input type=\"hidden\" name=\"v_amount\"     value=\"" + v_amount + "\" />");
                sHtmlText.AppendLine("        <input type=\"hidden\" name=\"v_moneytype\"  value=\"" + v_moneytype + "\" />");
                sHtmlText.AppendLine("        <input type=\"hidden\" name=\"v_url\"        value=\"" + v_url + "\" />");


                sHtmlText.AppendLine("  <!--以下几项项为网上支付完成后,随支付反馈信息一同传给信息接收页-->");
                sHtmlText.AppendLine("   <input type=\"hidden\"  name=\"remark1\" value=\"" + remark1 + "\" />");
                sHtmlText.AppendLine("    <input type=\"hidden\"  name=\"remark2\" value=\"" + remark2 + "\" />");

                //sHtmlText.AppendLine("    <!--以下几项只是用来记录客户信息,可以不用,不影响支付 -->");

                sHtmlText.AppendLine("      <input type=\"hidden\"  name=\"v_rcvname\"      value=\"" + v_rcvname + "\" />");
                sHtmlText.AppendLine("      <input type=\"hidden\"  name=\"v_rcvaddr\"      value=\"" + v_rcvaddr + "\" />");
                sHtmlText.AppendLine("      <input type=\"hidden\"  name=\"v_rcvtel\"       value=\"" + v_rcvtel + "\" />");
                sHtmlText.AppendLine("      <input type=\"hidden\"  name=\"v_rcvpost\"      value=\"" + v_rcvpost + "\" />");
                sHtmlText.AppendLine("      <input type=\"hidden\"  name=\"v_rcvemail\"     value=\"" + v_rcvemail + "\" />");
                sHtmlText.AppendLine("      <input type=\"hidden\"  name=\"v_rcvmobile\"    value=\"" + v_rcvmobile + "\" />");

                //sHtmlText.AppendLine("      <input type=\"hidden\"  name=\"v_ordername\"    value=\"<%=v_ordername%>\" />");
                //sHtmlText.AppendLine("      <input type=\"hidden\"  name=\"v_orderaddr\"    value=\"<%=v_orderaddr%>\" />");
                //sHtmlText.AppendLine("      <input type=\"hidden\"  name=\"v_ordertel\"     value=\"<%=v_ordertel%>\" />");
                //sHtmlText.AppendLine("      <input type=\"hidden\"  name=\"v_orderpost\"    value=\"<%=v_orderpost%>\" />");
                //sHtmlText.AppendLine("      <input type=\"hidden\"  name=\"v_orderemail\"   value=\"<%=v_orderemail%>\" />");
                //sHtmlText.AppendLine("      <input type=\"hidden\"  name=\"v_ordermobile\"  value=\"<%=v_ordermobile%>\" />");
                sHtmlText.AppendLine("      </form>");
                sHtmlText.AppendLine("  </body>");
                sHtmlText.AppendLine("  </html>");

                return(Content(sHtmlText.ToString()));
            }
            #endregion

            return(Content("该订单流水号不存在!"));
        }
Exemple #5
0
        /// <summary>
        /// 跳转支付函数
        /// </summary>
        /// <param name="Order_UID"></param>
        /// <param name="Retaion_UID"></param>
        /// <returns></returns>
        public ActionResult Checkout_new(string Order_UID, string Retaion_UID, string bank)
        {
            SitePayAPI m_entity = SitePayAPI.GetModel(t => t.ApiType == "支付宝");

            Model.SiteInfo siteinfo = Model.SiteInfo.GetModel(t => t.id != 0);
            ///////////////////////以下参数是需要设置的相关配置参数,设置后不会更改的///////////////////////////
            AlipayConfig con = new AlipayConfig();

            //##########################################
            ///////////////////////以下参数是需要通过下单时的订单数据传入进来获得////////////////////////////////

            //应付金额
            double?PayMoney = 0;
            //会员编号
            string Member_UID = string.Empty;
            //订单编号集合
            string OrderUIDLIST = string.Empty;

            //if (!string.IsNullOrEmpty(Retaion_UID))
            //{
            //    List<Orders> order_list = Orders.GetModelList(t => t.O_Relation_UID == Retaion_UID).List;
            //    string _dj_pay = string.Empty;
            //    foreach (var item in order_list)
            //    {
            //        if (item.O_PayStyle == 3)
            //            _dj_pay = "3";
            //        PayMoney += item.O_PayMoney;
            //        Member_UID = item.Member_UID;
            //        OrderUIDLIST += item.O_UID + ",";
            //    }
            //    PayMoney = string.IsNullOrEmpty(_dj_pay) ? PayMoney : PayMoney * 0.3;
            //}
            //else
            //{
            //    Orders m_order = Orders.GetModel(t => t.O_UID == Order_UID);
            //    PayMoney = m_order.O_PayMoney;
            //    PayMoney = m_order.O_PayStyle != 3 ? PayMoney : PayMoney * 0.3;
            //    Member_UID = m_order.Member_UID;
            //    OrderUIDLIST += m_order.O_UID + ",";
            //}

            if (PayMoney > 0 && !string.IsNullOrEmpty(OrderUIDLIST))
            {
                ////////////////////////////////////////////请求参数////////////////////////////////////////////

                //支付类型
                string payment_type = "1";
                //必填,不能修改
                //服务器异步通知页面路径
                string notify_url = siteinfo.WebAddress + "/AlipayForOrder/Alipay_Notify";
                //需http://格式的完整路径,不能加?id=123这类自定义参数

                //页面跳转同步通知页面路径
                string return_url = siteinfo.WebAddress + "/AlipayForOrder/Alipay_Return";
                //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/

                //卖家支付宝帐户
                string seller_email = m_entity.Account;
                //必填

                //商户订单号
                string out_trade_no = OrderUIDLIST.Trim();
                //商户网站订单系统中唯一订单号,必填

                //订单名称
                string subject = "会员[" + Member_UID + "] 支付订单";
                //必填

                //付款金额
                string total_fee = PayMoney.ToDouble2().ToString("0.00");
                //必填

                //订单描述

                string body = "";
                //默认支付方式
                string paymethod = "bankPay";
                //必填
                //默认网银
                string defaultbank = string.IsNullOrEmpty(bank) ? "CCB" : bank;
                //必填,银行简码请参考接口技术文档

                //商品展示地址
                string show_url = con.Show_url;
                //需以http://开头的完整路径,例如:http://www.商户网址.com/myorder.html

                //防钓鱼时间戳
                string anti_phishing_key = "";
                //若要使用请调用类文件submit中的query_timestamp函数

                //客户端的IP地址
                string exter_invoke_ip = "";
                //非局域网的外网IP地址,如:221.0.0.1


                ////////////////////////////////////////////////////////////////////////////////////////////////

                //把请求参数打包成数组
                SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();
                sParaTemp.Add("partner", Config.Partner);
                sParaTemp.Add("_input_charset", Config.Input_charset.ToLower());
                sParaTemp.Add("service", "create_direct_pay_by_user");
                sParaTemp.Add("payment_type", payment_type);
                sParaTemp.Add("notify_url", notify_url);
                sParaTemp.Add("return_url", return_url);
                sParaTemp.Add("seller_email", seller_email);
                sParaTemp.Add("out_trade_no", out_trade_no);
                sParaTemp.Add("subject", subject);
                sParaTemp.Add("total_fee", total_fee);
                sParaTemp.Add("body", body);
                sParaTemp.Add("paymethod", paymethod);
                sParaTemp.Add("defaultbank", defaultbank);
                sParaTemp.Add("show_url", show_url);
                sParaTemp.Add("anti_phishing_key", anti_phishing_key);
                sParaTemp.Add("exter_invoke_ip", exter_invoke_ip);

                //建立请求
                string sHtmlText = Submit.BuildRequest(sParaTemp, "get", "确认");
                return(Content(sHtmlText));
            }
            return(Content("该订单流水号不存在!"));
        }
Exemple #6
0
        /// <summary>
        /// 回调方法
        /// </summary>
        /// <returns></returns>
        public ActionResult Tenpay_Return()
        {
            bool   isSuccess  = false;
            string AcitonCate = string.Empty;

            try
            {
                /*
                 * attach=&bargainor_id=1208389301&cmdno=1&date=20120111&fee_type=1&pay_info=OK&pay_result=0&pay_time=1326291710&sign=0925C26EA436BAC80010E7F3F6C9FAE3&sp_billno=2220091839&total_fee=1&transaction_id=1208389301201201112220091839&ver=1
                 */

                PayResponseHandler resHandler = new PayResponseHandler(System.Web.HttpContext.Current);
                SitePayAPI         m_entity   = SitePayAPI.GetModel(t => t.ApiType == "财付通");
                resHandler.setKey(m_entity.AppKey);

                //判断签名
                if (resHandler.isTenpaySign())
                {
                    string orderid   = resHandler.getParameter("attach");
                    string cate      = resHandler.getParameter("desc");
                    string total_fee = resHandler.getParameter("total_fee");
                    SqlTranEx.SqlTranExtensions _STE = new SqlTranEx.SqlTranExtensions();
                    #region 付款成功之后的操作
                    switch (cate)
                    {
                    }
                    #endregion

                    isSuccess = _STE.ExecuteSqlTran();
                }
            }
            catch (Exception ex)
            {
                return(Content("error-4" + ex.Message.ToString()));
            }
            if (isSuccess)
            {
                if (AcitonCate == "充值")
                {
                    return(RedirectToAction("MemberAccountInfo", "MSComm"));
                }
                else if (AcitonCate == "活动付款")
                {
                    return(RedirectToAction("SignUpSuccess", "Home"));
                }
                else if (AcitonCate == "会员卡")
                {
                    return(RedirectToAction("MemberCardLog", "MSComm"));
                }
                return(RedirectToAction("MemberAccountInfo", "MSComm"));
            }
            else
            {
                if (AcitonCate == "充值")
                {
                    return(RedirectToAction("MemberAccountInfo", "MSComm"));
                }
                else if (AcitonCate == "活动付款")
                {
                    return(RedirectToAction("SignUpFailed", "Home", new { msg = "支付失败,请重新核对支付信息后重新支付" }));
                }
                else if (AcitonCate == "会员卡")
                {
                    return(RedirectToAction("MemberCardLog", "MSComm"));
                }
                return(RedirectToAction("SignUpFailed", "Home", new { msg = "支付失败,请重新核对支付信息后重新支付" }));
            }
        }
Exemple #7
0
        /// <summary>
        /// 回调地址
        /// </summary>
        /// <returns></returns>
        public ActionResult Tenpay_Return()
        {
            bool isSuccess = false;

            try
            {
                /*
                 * attach=&bargainor_id=1208389301&cmdno=1&date=20120111&fee_type=1&pay_info=OK&pay_result=0&pay_time=1326291710&sign=0925C26EA436BAC80010E7F3F6C9FAE3&sp_billno=2220091839&total_fee=1&transaction_id=1208389301201201112220091839&ver=1
                 */

                PayResponseHandler resHandler = new PayResponseHandler(System.Web.HttpContext.Current);
                SitePayAPI         m_entity   = SitePayAPI.GetModel(t => t.ApiType == "财付通");
                resHandler.setKey(m_entity.AppKey);

                //判断签名
                if (resHandler.isTenpaySign())
                {
                    //交易单号---时间:2012-03-29 21:11 已更新
                    //string transaction_id = resHandler.getParameter("transaction_id");
                    // reqHandler.setParameter("attach", orderid);	//订单ID
                    string orderid = resHandler.getParameter("attach");

                    //金额金额,以分为单位
                    string total_fee = resHandler.getParameter("total_fee");

                    //支付结果
                    string pay_result = resHandler.getParameter("pay_result");

                    if (string.IsNullOrEmpty(orderid))
                    {
                        return(Content("error-7"));
                    }
                    if (!"0".Equals(pay_result))
                    {
                        return(Content("error-8"));
                    }

                    lock (this)
                    {
                        string[] OrderListUID            = orderid.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                        SqlTranEx.SqlTranExtensions _STE = new SqlTranEx.SqlTranExtensions();
                        //for (int i = 0; i < OrderListUID.Length; i++)
                        //{
                        //    Orders m_now_orders = Orders.GetModel(t => t.O_UID == OrderListUID[i].ToString2());
                        //    if (!m_now_orders.IsNull && m_now_orders.O_IsPay == false)
                        //    {

                        //        #region 更改订单信息

                        //        m_now_orders.O_IsPay = true;
                        //        m_now_orders.O_Status = CommonEnumHelper.OrderStatus.已付款.ToString2();
                        //        m_now_orders.O_PayTime = DateTime.Now;
                        //        m_now_orders.Update(_STE);

                        //        #endregion

                        //        #region 更改商家帐户信息

                        //        MemberAccount m_store_account = MemberAccount.GetModel(t => t.M_UID == m_now_orders.Store_UID);
                        //        if (m_store_account.IsNull)
                        //            return Content("Error");
                        //        else
                        //        {
                        //            m_store_account.M_LockBalance += m_now_orders.O_StoreGetMoney;
                        //            m_store_account.Update(_STE);
                        //        }

                        //        #endregion

                        //        #region 更改会员经验值
                        //        MemberAccount m_member_account = MemberAccount.GetModel(t => t.M_UID == m_now_orders.Member_UID);
                        //        #endregion

                        //        #region 增加会员账户消费记录信息
                        //        MemberAccountLog m_mal = new MemberAccountLog(); //表名:MemberAccountLog 备注:会员账户消费记录
                        //        m_mal.M_UID = m_now_orders.Member_UID;        //M_UID[Type=string] - 会员唯一编号
                        //        m_mal.MA_UID = Common.Globals.CreateNewUniqueID();
                        //        m_mal.M_Cate = CommonEnumHelper.AccountCate.现金.ToString2();        //M_Cate[Type=string] - 分类(积分/现金)
                        //        m_mal.M_PayCate = CommonEnumHelper.AccountLogCate.支出.ToString2();        //M_PayCate[Type=string] - 收入/支出类型
                        //        m_mal.M_ObjectMoney = m_now_orders.O_PayMoney;        //M_ObjectMoney[Type=double?] - 操作金额
                        //        m_mal.M_BalanceMoney = m_member_account.M_AvailableBalance;        //M_BalanceMoney[Type=double?] - 账户余额
                        //        m_mal.M_Remark = "支付订单(订单编号:" + m_now_orders.O_UID + ")";        //M_Remark[Type=string] - 备注
                        //        m_mal.M_Status = "";        //M_Status[Type=string] - 当前状态
                        //        m_mal.M_Time = DateTime.Now;        //M_Time[Type=DateTime?] - 时间
                        //        m_mal.Add(_STE);
                        //        #endregion

                        //        #region 增加商家账户消费记录信息
                        //        MemberAccountLog m_mal_s = new MemberAccountLog(); //表名:MemberAccountLog 备注:会员账户消费记录
                        //        m_mal_s.M_UID = m_now_orders.Store_UID;        //M_UID[Type=string] - 会员唯一编号
                        //        m_mal_s.MA_UID = Common.Globals.CreateNewUniqueID();
                        //        m_mal_s.M_Cate = CommonEnumHelper.AccountCate.现金.ToString2();        //M_Cate[Type=string] - 分类(积分/现金)
                        //        m_mal_s.M_PayCate = CommonEnumHelper.AccountLogCate.收入.ToString2();        //M_PayCate[Type=string] - 收入/支出类型
                        //        m_mal_s.M_ObjectMoney = m_now_orders.O_StoreGetMoney;        //M_ObjectMoney[Type=double?] - 操作金额
                        //        m_mal_s.M_BalanceMoney = m_store_account.M_AvailableBalance;        //M_BalanceMoney[Type=double?] - 账户余额
                        //        m_mal_s.M_Remark = "订单收款(订单编号:" + m_now_orders.O_UID + "),所得金额现为锁定状态,需等买家确认收货/消费后自动解锁";        //M_Remark[Type=string] - 备注
                        //        m_mal_s.M_Status = "";        //M_Status[Type=string] - 当前状态
                        //        m_mal_s.M_Time = DateTime.Now;        //M_Time[Type=DateTime?] - 时间
                        //        m_mal_s.Add(_STE);
                        //        #endregion

                        //        isSuccess = _STE.ExecuteSqlTran();

                        //    }
                        //}
                    }
                }
            }
            catch (Exception ex)
            {
                return(Content(ex.ToString()));
            }
            if (isSuccess)
            {
                return(RedirectToAction("OrderPaySuccess", "Order"));
            }
            else
            {
                return(RedirectToAction("OrderPayFailure", "Order", new { msg = "订单支付失败,请重新核对订单信息及支付信息后重新支付" }));
            }
        }