asp.net 隐藏支付宝表单信息

在用dz积分充值的之后,调用支付宝支付的时候,并不会显示如下信息:

 查看源代码如下:

 <form id='alipaysubmit' name='alipaysubmit' action='https://openapi.alipay.com/gateway.do?charset=UTF-8' method='post'><input  name='app_id' value='2018020202130779'/><input  name='biz_content' value='{"out_trade_no":"8730c344-ebd1-4ef1-93cc-df03da6185dc","product_code":"FAST_INSTANT_TRADE_PAY","qrcode_width":0,"subject":"测试","total_amount":"1"}'/><input  name='charset' value='UTF-8'/><input  name='format' value='json'/><input  name='method' value='alipay.trade.page.pay'/><input  name='notify_url' value='https://down.itsvse.com/Pay/Async'/><input  name='return_url' value='https://down.itsvse.com/Pay/Return'/><input  name='sign_type' value='RSA2'/><input  name='timestamp' value='2018-12-09 14:00:26'/><input  name='version' value='1.0'/><input  name='sign' value='ug2O0tc6dvbzH4wuoELCvkm30UNxgGCeWwH9R5sGv0KW9YmWmZOzzr7byWn3hgzPjpGuaRvDtw24/X1o2kVr+054Z3aaadheG+09aWoEqDTnrYVSUJwcgjTAPak6KEXSsiAd9207BaIFhDMsHowiP4swnh57pRIFXjldBUcCQczAjDUMpx3jwDN8+10d8iFk9jgIuzJM3kugFsua0lECUGEUJb+37+YQ=='/><input type='submit' value='post' style='display:none;'></form>

然后等待1秒钟,会显示如下支付界面:

查看支付宝的sdk代码,发现生成html代码的方法如下:

public string BuildHtmlRequest(IDictionary<string, string> sParaTemp, string strMethod, string strButtonValue)
        {
            //待请求参数数组
            IDictionary<string, string> dicPara = new Dictionary<string, string>();
            dicPara = sParaTemp;

            StringBuilder sbHtml = new StringBuilder();
            //sbHtml.Append("<head><meta http-equiv="Content-Type" content="text/html" charset= "" + charset + "" /></head>");

            sbHtml.Append("<form id='alipaysubmit' name='alipaysubmit' action='" + this.serverUrl + "?charset=" + this.charset + 
                 "' method='" + strMethod + "'>");
            ;
            foreach (KeyValuePair<string, string> temp in dicPara)
            {

                sbHtml.Append("<input  name='" + temp.Key + "' value='" + temp.Value + "'/>");

            }

            //submit按钮控件请不要含有name属性
            sbHtml.Append("<input type='submit' value='" + strButtonValue + "' style='display:none;'></form>");
            // sbHtml.Append("<input type='submit' value='" + strButtonValue + "'></form></div>");

            //表单实现自动提交
            sbHtml.Append("<scrip{过滤}t>document.forms['alipaysubmit'].submit();</scrip{过滤}t>");

            return sbHtml.ToString();
        }

在方法拼接form表单的时候,可以设置css样式来隐藏表单,但是需要重新编译dll,就放弃了。

解决方法:

可以在输入以上html代码的时候,head里面加上css样式就好了,代码如下:

response = client.pageExecute(request, null, "post");
                StringBuilder sb = new StringBuilder();
                sb.Append("<!DOCTYPE html>");
                sb.Append("<html>");
                sb.Append("<head>");
                sb.Append("<meta charset="utf-8">");
                sb.Append("<title>支付</title>");
                sb.Append("<style>");
                sb.Append("#alipaysubmit {display:none;}");
                sb.Append("</style>");
                sb.Append("</head>");
                sb.Append("<body>");
                sb.Append(response.Body);
                sb.Append("</body>");
                sb.Append("</html>");
                Response.Write(sb.ToString());
                Response.End();

拼接这么多html,就是想插入#alipaysubmit {display:none;}样式来隐藏表单。

猜你喜欢

转载自www.cnblogs.com/yu-shang/p/12163139.html
今日推荐