Exemplo n.º 1
0
    protected void btnConsume_Click(object sender, EventArgs e)
    {
        ccWhere.Clear();
        ccWhere.AddComponent("JGCBM", LoginUser.BelongFactory, SearchComponent.Equals, SearchPad.NULL);
        JX_USERS jxUser = servComm.GetEntity <JX_USERS>(null, ccWhere);

        if (!String.IsNullOrEmpty(jxUser.PayNoCardMerId) && Request["paymethod"] == "1" || Request["paymethod"] != "1" && !String.IsNullOrEmpty(jxUser.PayB2CMerId))
        {
            //Dictionary<string, string> param = new Dictionary<string, string>();
            //// 随机构造一个订单号(演示用)
            Random rnd     = new Random();
            string orderID = DateTime.Now.ToString("yyyyMMddHHmmss") + ((rnd.Next(900) + 100).ToString() + "0").Substring(0, 2).Trim();

            ////填写参数

            //param["version"] = "5.0.0";//版本号
            //param["encoding"] = "UTF-8";//编码方式
            //param["certId"] = CertUtil.GetSignCertId();      //证书ID
            //param["txnType"] = "01";//交易类型
            //param["txnSubType"] = "01";//交易子类
            //param["bizType"] = "000201";//业务类型
            //param["frontUrl"] = "http://localhost:58826/BankPay/FrontRcvResponse.aspx?type=BankPay";    //前台通知地址
            //param["backUrl"] = "http://222.222.222.222:8080/demo/utf8/BackRcvResponse.aspx";  //后台通知地址,改自己的外网地址
            //param["signMethod"] = "01";//签名方法
            //param["channelType"] = "08";//渠道类型,07-PC,08-手机
            //param["accessType"] = "0";//接入类型
            //param["merId"] = "481601512173917";//商户号,请改成自己的商户号 481601512173917,777290058110097
            //param["orderId"] = orderID;//商户订单号,可任意修改
            //param["txnTime"] = DateTime.Now.ToString("yyyyMMddHHmmss");//订单发送时间
            //param["txnAmt"] = "1";//交易金额,单位分
            //param["currencyCode"] = "156";//交易币种
            ////param["orderDesc"] = "订单描述";//订单描述,暂时不会起作用
            //param["reqReserved"] = "透传信息";//请求方保留域,透传字段,查询、通知、对账文件中均会原样出现

            //SDKUtil.Sign(param, Encoding.UTF8);
            //// 将SDKUtil产生的Html文档写入页面,从而引导用户浏览器重定向
            //string html = SDKUtil.CreateAutoSubmitForm(SDKConfig.FrontTransUrl, param, Encoding.UTF8);
            //Response.ContentEncoding = Encoding.UTF8; // 指定输出编码
            //Response.Write(html);

            Hashtable myMap = new Hashtable();
            //无卡支付
            string payAmount = Request["actualAmount"];

            myMap.Add("MerOrderNo", orderID);
            myMap.Add("TranDate", DateTime.Now.ToString("yyyyMMdd"));
            myMap.Add("TranTime", DateTime.Now.ToString("hhmmss"));
            myMap.Add("OrderAmt", (int)(decimal.Parse(payAmount) * 100));
            //myMap.Add("OrderAmt", 1);
            myMap.Add("BusiType", "0001");
            myMap.Add("AccessType", "0");
            myMap.Add("AcqCode", "000000000000014");
            myMap.Add("MerPageUrl", Request.Url.GetLeftPart(UriPartial.Authority) + "/BankPay/FrontRcvResponse.aspx?type=BankPay");
            myMap.Add("MerBgUrl", Request.Url.GetLeftPart(UriPartial.Authority) + "/BankPay/BgRcvResponse.aspx?type=BankPay");
            myMap.Add("CurryNo", "CNY");

            //myMap.Add("SplitType", "");
            //myMap.Add("SplitMethod", "");
            //myMap.Add("MerSplitMsg", "");
            //myMap.Add("PayTimeOut", "145");
            myMap.Add("Version", "20140728");

            //myMap.Add("CommodityMsg", "ChinaPay测试-商品信息");
            //myMap.Add("MerResv", "ChinaPay测试-商户保留域");
            //myMap.Add("TranReserved", "{\"Referred\":\"www.chinapay.com\",\"BusiId\":\"0001\",\"TimeStamp\":\"1438915150976\",\"Remoteputr\":\"172.16.9.44\"}");
            myMap.Add("TranType", "0001");
            SecssUtil obj      = new SecssUtil();
            WNetPay   payModel = new WNetPay();


            //TODO 其他特殊用法请查看 pages/api_01_gateway/special_use_purchase.htm
            if (Request["paymethod"] == "1")
            {
                payModel.PayMethod = "0";
                myMap.Add("MerId", jxUser.PayNoCardMerId);
                obj.init(Request.PhysicalApplicationPath + "/ChinaPay/" + jxUser.PayNoCardMerId + "/security.properties"); //初始化安全控件:
            }
            else
            {
                payModel.PayMethod = "1";
                //B2C支付
                //myMap.Add("BankInstNo", "700000000000010");
                myMap.Add("MerId", jxUser.PayB2CMerId);
                obj.init(Request.PhysicalApplicationPath + "/ChinaPay/" + jxUser.PayB2CMerId + "/securityb2c.properties"); //初始化安全控件:
            }

            //bool ee =


            obj.sign(myMap);
            String chkValue = obj.getSign();
            myMap.Add("Signature", chkValue);
            //obj.verify(myMap);
            if ("00" != obj.getErrCode())
            {
            }



            payModel.OrderID        = orderID;
            payModel.UserID         = CurrentUserID;
            payModel.PayAmount      = decimal.Parse(payAmount);
            payModel.JGCBM          = LoginUser.BelongFactory;
            payModel.SubmitDateTime = DateTime.Now;

            payModel.PayStatus = "0";
            payModel.Remark    = "Remark";

            servComm.AddOrUpdate(payModel);



            //chkValue = DelegatePay(orderID);


            // SDKUtil.Sign(param, System.Text.Encoding.UTF8);
            myMap["Signature"] = chkValue;
            string html = SDKUtil.CreateAutoSubmitFormHash(SDKConfig.FrontTransUrl, myMap, System.Text.Encoding.UTF8); // 将SDKUtil产生的Html文档写入页面,从而引导用户浏览器重定向
            Response.ContentEncoding = Encoding.UTF8;                                                                  // 指定输出编码
            Response.Write(html);
            Response.End();
        }
        else
        {
            Response.Write("请配置支付参数");
            Response.End();
        }
    }