XSLT存档  

不及格的程序员-八神

 查看分类:  ASP.NET XML/XSLT JavaScripT   我的MSN空间Blog
1 收款页:
this.Page.Server.Transfer(string.Format("./MerchantPaymentWaiting.aspx?no={0}&amount={1}&iid={2}&print={3}", 
                    strNo, 
                    amount,
                    iMax,
                    this.chkPrint.Checked ? "1":"0"));

2 等待页:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MerchantPaymentWaiting.aspx.cs" Inherits="dyXQProperty.Finance.UI.MerchantPaymentWaiting" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="/js/jquery.js"></script>
    <link href="/css/style.css" type="text/css" rel="stylesheet">
    <base target="_self" />
</head>
<body>
    <object id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" style="display:none">
        <param name="Border" value="0">
        <param name="Inbrowse" value="0">
        <param name="Caption" value="打印控件已安装好">
        <param name="Version" value="6.0.3.2">
        <param name="CompanyName" value="">
        <param name="License" value="">
        <param name="LicenseA" value="">
        <param name="LicenseB" value="">
        <param name="Color" value="-16777201">
        <param name="intVersion" value="6032">
    </object>
    <form id="form1" runat="server" style="text-align:center">
    <asp:HiddenField ID="txtRef" runat="server" />
    <table style="height:345px;width:100%;">
        <tr>
            <td valign="middle" align="center"><img src="./images/payment.gif" id="imgWaiting" width="142" height="96"/></td>
        </tr>
        <tr>
            <td>
                <asp:imagebutton runat="server" ImageUrl="/img/but-ens-009.gif" id="btnBack" 
                    style="display:none;" onclick="btnBack_Click" />
            </td>
        </tr>
    </table>
    
    <script>
        window.winBank = window.open('./MerchantPayment.aspx?no=<%=Request["no"]%>&amount=<%=Request["amount"]%>', "payment", "width=1024,height=768,status=yes,scrollbars=yes");
       
        var strNo = '<%=Request["no"]%>';
        var funPost = function (strNo)
        {
            $.ajax(
            {
                type: "post",
                url: './MerchantPaymentWaiting.aspx/VerifyABCPayment',
                data: "{'no':'" + strNo + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data)
                {
                    //返回的数据用data.d获取内容   
                    if (data.d != "1")
                    {
                        setTimeout(function ()
                        {
                            funPost(strNo);
                        }, 2000);
                    }
                    else if (data.d == "1")
                    {
                        window.setTimeout(function () { window.winBank.close(); }, 2000);
                        document.getElementById("imgWaiting").src = "./images/payment-2.png";
                        document.getElementById("btnBack").style.display = "";
                        try
                        {
                            printData();
                        }
                        catch (e)
                        {
                        }
                        //alert("付款成功!");
                        //window.close();
                    }
                },
                error: function (err)
                {
                    document.getElementById("imgWaiting").src = "./images/payment-2.png";
                    document.getElementById("btnBack").style.display = "";
                    alert(err);
                }
            });
        }
        funPost(strNo);
    </script>
    </form>
</body>
</html>
-----------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.Threading;
using System.Data;

namespace dyXQProperty.Finance.UI
{
    public partial class MerchantPaymentWaiting : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                this.txtRef.Value = this.Request.UrlReferrer.PathAndQuery;
            }
            outputPrintScript();
        }

        protected void outputPrintScript()
        {            
            if (this.Request["print"] == "1")
            {
                dyXQProperty.Finance.Model.OtherGatheringModel oModel = new dyXQProperty.Finance.Model.OtherGatheringModel();
                PrintCommon.PrintCommon oPrintCommon = new PrintCommon.PrintCommon();
                var iid = Int32.Parse(this.Request["iid"]);
                DataSet dtsResult = oModel.GetOwnerPrintInfo(iid);

                #region 新打印控件代码
                //this.Page.RegisterStartupScript("printscript", "<script>" + oPrintCommon.GetOtherIncomePrintScriptString(dtsResult, dyXQProperty.Common.PrintTypeEnum.预览) + "</script>");
                this.Page.RegisterStartupScript("printscript", "<script>function printData(){" + oPrintCommon.GetOtherGatheringPrintHtmlScriptString(dtsResult, dyXQProperty.PrintCommon.PrintTypeEnum.预览, false) + "}</script>");
                #endregion
                oModel.SetPrintState(iid, 1);
            }
        }

        [WebMethod]
        public static string VerifyABCPayment(string no)
        {
            dysoft.Data.CAccessDataClass oData = new dysoft.Data.CAccessDataClass();
            try
            {
                if (oData.State == System.Data.ConnectionState.Closed)
                {
                    oData.Open();
                }
                var strResult = oData.GetScalar(System.Data.CommandType.Text, @"select count(1) from tSvcOtherIncome where iState=2 and cIncomeCode =@orderNo", new System.Data.SqlClient.SqlParameter[]
                    {
                        new System.Data.SqlClient.SqlParameter("@orderNo", no)
                    });
                return strResult;
            }
            finally
            {
                if (oData.State == System.Data.ConnectionState.Open)
                {
                    oData.Close();
                }
            }
        }

        protected void btnBack_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                this.Page.Response.Redirect(this.txtRef.Value);
            }
            catch (Exception ex)
            {
            }
        }
    }
}
===========================
3 提交银行页:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using com.abc.trustpay.client;
using System.Configuration;

namespace dyXQProperty.Finance.UI
{
    public partial class MerchantPayment : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string no = this.Request["no"];
                string amount = this.Request["amount"];
                if (string.IsNullOrEmpty(no) || string.IsNullOrEmpty(amount))
                {
                    return;
                }
                abcBankPayment(no, amount);
            }
        }

        private void abcBankPayment(string no, string amount)
        {
            var dateNow = DateTime.Now;
            var strPaymentRequestNo = no;//"No" + dateNow.Ticks.ToString();
            var strOrderDate = dateNow.ToString("yyyy/MM/dd").Replace("-","/");
            var strOrderTime = dateNow.ToString("HH:MM:ss");

            //1、生成定单订单对象,并将订单明细加入订单中

            com.abc.trustpay.client.ebus.PaymentRequest tPaymentRequest = new com.abc.trustpay.client.ebus.PaymentRequest();
            //2、设定订单属性

            tPaymentRequest.dicOrder["PayTypeID"] = "ImmediatePay";    //设定交易类型
            tPaymentRequest.dicOrder["OrderNo"] = strPaymentRequestNo;                       //设定订单编号
            tPaymentRequest.dicOrder["ExpiredDate"] = "30";//设定订单保存时间
            tPaymentRequest.dicOrder["OrderAmount"] = amount;//"0.01";    //设定交易金额
            tPaymentRequest.dicOrder["Fee"] = ""; //设定手续费金额

            tPaymentRequest.dicOrder["CurrencyCode"] = "156";    //设定交易币种
            tPaymentRequest.dicOrder["ReceiverAddress"] = "";     //收货地址
            tPaymentRequest.dicOrder["InstallmentMark"] = "0";  //分期标识
            tPaymentRequest.dicOrder["BuyIP"] = "";                           //IP
            tPaymentRequest.dicOrder["OrderDesc"] = "下单测试";                   //设定订单说明
            tPaymentRequest.dicOrder["OrderURL"] = string.Format("/MerchantQueryOrder.aspx?ON={0}&DetailQuery=1", strPaymentRequestNo);                   //设定订单地址
            tPaymentRequest.dicOrder["OrderDate"] = strOrderDate;                   //设定订单日期 (必要信息 - YYYY/MM/DD)

            tPaymentRequest.dicOrder["OrderTime"] = strOrderTime;                   //设定订单时间 (必要信息 - HH:MM:SS)

            tPaymentRequest.dicOrder["orderTimeoutDate"] = "20240619104901";                     //设定订单有效期

            tPaymentRequest.dicOrder["CommodityType"] = "0405";   //设置商品种类
            //3、添加订单明细

            System.Collections.Generic.Dictionary<string, string> orderitem = new System.Collections.Generic.Dictionary<string, string>();
            orderitem["SubMerName"] = "测试二级商户1";    //设定二级商户名称
            orderitem["SubMerId"] = "12345";    //设定二级商户代码
            orderitem["SubMerMCC"] = "0000";   //设定二级商户MCC码 
            orderitem["SubMerchantRemarks"] = "测试";   //二级商户备注项

            orderitem["ProductID"] = "IP000001";//商品代码,预留字段

            orderitem["ProductName"] = "物业费收取";//商品名称
            orderitem["UnitPrice"] = "2000.00";//商品总价
            orderitem["Qty"] = "1";//商品数量
            orderitem["ProductRemarks"] = "测试商品"; //商品备注项

            orderitem["ProductType"] = "充值类";//商品类型
            orderitem["ProductDiscount"] = "0.9";//商品折扣
            orderitem["ProductExpiredDate"] = "10";//商品有效期

            tPaymentRequest.dic.Add(1, orderitem);

            orderitem = new System.Collections.Generic.Dictionary<string, string>();
            orderitem["SubMerName"] = "测试二级商户1";    //设定二级商户名称
            orderitem["SubMerId"] = "12345";    //设定二级商户代码
            orderitem["SubMerMCC"] = "0000";   //设定二级商户MCC码 
            orderitem["SubMerchantRemarks"] = "测试";   //二级商户备注项

            orderitem["ProductID"] = "IP000001";//商品代码,预留字段

            orderitem["ProductName"] = "电费水费垃圾清运费";//商品名称
            orderitem["UnitPrice"] = "1.00";//商品总价
            orderitem["Qty"] = "2";//商品数量
            orderitem["ProductRemarks"] = "测试商品"; //商品备注项

            orderitem["ProductType"] = "充值类";//商品类型
            orderitem["ProductDiscount"] = "0.9";//商品折扣
            orderitem["ProductExpiredDate"] = "10";//商品有效期

            tPaymentRequest.dic.Add(2, orderitem);
            //4、设定支付请求对象

            tPaymentRequest.dicRequest["PaymentType"] = "1";          //设定支付类型
            tPaymentRequest.dicRequest["PaymentLinkType"] = "1";      //设定支付接入方式
            tPaymentRequest.dicRequest["ReceiveAccount"] = "";    //设定收款方账号

            tPaymentRequest.dicRequest["ReceiveAccName"] = "";    //设定收款方户名

            tPaymentRequest.dicRequest["NotifyType"] = "1";    //设定通知方式 0:URL页面通知 1:服务器通知
            tPaymentRequest.dicRequest["ResultNotifyURL"] = ConfigurationManager.AppSettings["MerchantResultNoticeUrl"];     //设定通知URL地址            http://47.104.163.79:9090/testaspx.aspx?msg=
            tPaymentRequest.dicRequest["IsBreakAccount"] = "0";    //设定交易是否分账
            tPaymentRequest.dicRequest["SplitAccTemplate"] = "";      //分账模版编号

            //5、传送支付请求并取得支付网址
            tPaymentRequest.postJSONRequest();
            Response.ClearContent();
            Response.Clear();
            StringBuilder strMessage = new StringBuilder();
            string ReturnCode = JSON.GetKeyValue("ReturnCode");
            string ErrorMessage = JSON.GetKeyValue("ErrorMessage");
            if (ReturnCode.Equals("0000"))
            {
                strMessage.Append("ReturnCode   = [" + ReturnCode + "]<br/>");
                strMessage.Append("ErrorMessage = [" + ErrorMessage + "]<br/>");
                //6、支付请求提交成功,将客户端导向支付页面
                //this.ClientScript.RegisterStartupScript(this.GetType(), 
                //    "bank", 
                //    string.Format("window.open('{0}')", JSON.GetKeyValue("PaymentURL")), true);
                Response.Redirect(JSON.GetKeyValue("PaymentURL"));
            }
            else
            {
                //7、支付请求提交失败,商户自定后续动作
                strMessage.Append("ReturnCode   = [" + ReturnCode + "]<br/>");
                strMessage.Append("ErrorMessage = [" + ErrorMessage + "]<br/>");
                labMsg.Text = strMessage.ToString();
            }

        }
    }
}

 

4 服务器通知页:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace dyXQProperty.Finance.UI
{
    public partial class MerchantResult : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {            
            log4net.ILog log = log4net.LogManager.GetLogger("logInfo");
            log.Info(string.Format("clientIP->{0}", this.Request.ServerVariables["REMOTE_ADDR"]));
            if (!IsPostBack)
            {
                RequestMsg();
            }
        }

        private void RequestMsg()
        {
            com.abc.trustpay.client.ebus.PaymentResult tResult = new com.abc.trustpay.client.ebus.PaymentResult();
            //tResult.init("PE1TRz48TWVzc2FnZT48VHJ4UmVzcG9uc2U+PFJldHVybkNvZGU+MDAwMDwvUmV0dXJuQ29kZT48RXJyb3JNZXNzYWdlPr270tezybmmPC9FcnJvck1lc3NhZ2U+PEVDTWVyY2hhbnRUeXBlPkVCVVM8L0VDTWVyY2hhbnRUeXBlPjxNZXJjaGFudElEPjEwMzg4MDYxMDAxMTAwODwvTWVyY2hhbnRJRD48VHJ4VHlwZT5BQkNTb2Z0VG9rZW5QYXk8L1RyeFR5cGU+PE9yZGVyTm8+Tm82MzcwMzAzMTEyNTE3NDI3MjA8L09yZGVyTm8+PEFtb3VudD4wLjAxPC9BbW91bnQ+PEJhdGNoTm8+MDAwMDAxPC9CYXRjaE5vPjxWb3VjaGVyTm8+MDAwMDcyPC9Wb3VjaGVyTm8+PEhvc3REYXRlPjIwMTkvMDkvMDI8L0hvc3REYXRlPjxIb3N0VGltZT4xNDoyNjowNTwvSG9zdFRpbWU+PFBheVR5cGU+RVAwNzI8L1BheVR5cGU+PE5vdGlmeVR5cGU+MTwvTm90aWZ5VHlwZT48aVJzcFJlZj45MkVDRVAwMTE0MjU0OTY0OTAyOTwvaVJzcFJlZj48QWNjRGF0ZT4yMDE5MDkwMjwvQWNjRGF0ZT48QWNxRmVlPjAuMDA8L0FjcUZlZT48SXNzRmVlPjAuMDA8L0lzc0ZlZT48L1RyeFJlc3BvbnNlPjwvTWVzc2FnZT48U2lnbmF0dXJlLUFsZ29yaXRobT5TSEExd2l0aFJTQTwvU2lnbmF0dXJlLUFsZ29yaXRobT48U2lnbmF0dXJlPkt0WGFYa0pXaVZrYlpVeVgrRTlWMlBTV1FDVXUwS054T3F6NU1HZ1p4Sm03Nm9HSXFQMC9rL0ZCNXF5RC9vSmNqNXdNT0xkWktTa3RiQVNHenlvaVAzMU5iUlhBRWpYeXVPZ0psYjJjWG1qV1JiZ3JGaWFuRHRRTHRRdXJIbk1YRE5EQ09vZHd0U3ZMYjh2MjdsSVNxbXZDWVdvU0I0NzF6SXNkQWdJWTJHbz08L1NpZ25hdHVyZT48L01TRz4=");
            tResult.init(Request["MSG"]);
            var strResult = tResult.getOriginalResponseMessage().ToString();            
            log4net.ILog log = log4net.LogManager.GetLogger("logInfo");
            log.Info(string.Format("BankMsg:{0}", strResult));
            if (tResult.isSuccess())
            {
                string no = tResult.getValue("OrderNo");
                dysoft.Data.CAccessDataClass oData = new dysoft.Data.CAccessDataClass();
                try
                {
                    if (oData.State == System.Data.ConnectionState.Closed)
                    {
                        oData.Open();
                    }
                    oData.ExecuteSQL(System.Data.CommandType.Text, @"update tSvcOtherIncome set iState=2 where cIncomeCode =@orderNo", new System.Data.SqlClient.SqlParameter[]
                    {
                        new System.Data.SqlClient.SqlParameter("@orderNo", no)
                    });
                }
                catch(Exception ex)
                {
                    log.Error(string.Format("exception:{0}", ex.Message));
                }
                finally
                {
                    if (oData.State == System.Data.ConnectionState.Open)
                    {
                        oData.Close();
                    }
                }
            }
            else
            {
                //4、支付失败

                //"ReturnCode   = [" + tResult.ReturnCode + "]"
                //"ErrorMessage = [" + tResult.ErrorMessage + "]"                                
                log.Error(string.Format("ReturnCode:{0}, ErrorMessage:{1}", tResult.ReturnCode, tResult.ErrorMessage));
            }
        }
    }
}

 

posted on 2019-09-09 09:05  不及格的程序员-八神  阅读(54)  评论(0编辑  收藏  举报