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)); } } } }
南来地,北往的,上班的,下岗的,走过路过不要错过!
======================个性签名=====================
之前认为Apple 的iOS 设计的要比 Android 稳定,我错了吗?
下载的许多客户端程序/游戏程序,经常会Crash,是程序写的不好(内存泄漏?刚启动也会吗?)还是iOS本身的不稳定!!!
如果在Android手机中可以简单联接到ddms,就可以查看系统log,很容易看到程序为什么出错,在iPhone中如何得知呢?试试Organizer吧,分析一下Device logs,也许有用.