互联网支付-B2C商户名称显示中文问题
来源:互联网 发布:js分离文件 编辑:程序博客网 时间:2024/05/08 07:13
互联网支付中无论我们做消费还是退款,商户名称和商户地址要展示出来,但是我们的代码中如果这两个字段是中文就会发生验签失败的错误,这边B2C的模式是输入了除银行卡号之外的所有信息之后就点击下一步(不截图了)往银联发报文请求,才能跳转到银联的界面,才开始还没跳转到这个jsp页面,就发生验签失败的错误,认为是后台对这两个中文字段的编码和解码有问题,使劲改后台代码,发现不奏效,后来认真分析日志发现,日志中在利用我们发送给银联的报文字段,动态拼接jsp页面,也就是点击下一步后跳转的页面,查看该页面的源代码。不是正常的jsp的格式,都是获取数据,来动态拼接的。这个页面里面有两处地方存在编码格式,下面的源代码已经修改。我们修改了jsp的编码格式,不再报验签失败,能够正常跳转到银联的页面。 当然其他的支付方式可能就不是简简单单改改jsp页面的编码格式就能完成了,可能要改后台代码什么的,不能一概而论,这里只是记述一种修改方法。
<%@ page language="java" import="java.util.*,com.murong.ecp.app.cashier.util.*,org.apache.commons.lang.*"pageEncoding="UTF-8"%><%@ include file="/include/page.jsp"%><% HashMap root = (HashMap)request.getAttribute("EDB"); //out.println("root:[" + root.toString() + "]"); //out.println("==================================================="); String bankStr; HashMap bank = new HashMap(); if( root != null ) { bankStr = (String)root.get("bank_str"); //out.println("bank_STR:"+bankStr); if (bankStr != null) { //首先用<hi:$$>分割 //String[] items = bankStr.split("[<hi:$$>]{7}"); bankStr = bankStr.replaceAll(SystemUtils.LINE_SEPARATOR,""); String[] items = StringUtils.splitByWholeSeparator(bankStr,"<hi:$$>"); if (items!=null) { //out.println("items len:"+items.length); for (int i=0;i<items.length;i++) { String item = (String)items[i]; if (item!=null) { //每个参数的名字和值用<hi:=>分割 //String[] element = item.split("[<hi:=>]{6}"); //String[] element = StringUtils.splitByWholeSeparator(item,"<hi:=>"); String[] element=item.split("<hi:=>"); if (element!=null && element.length==2) { //out.println("name:"+element[0]+" value:"+element[1]); //把值放在MAP中 bank.put(element[0],element[1]); } } } } } request.setAttribute("bank",bank); }%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><script language="JavaScript" type="text/JavaScript">var sumbit_flg = true;function dosubmit() {var url = "${bank.url}";if (url == null) {alert("银行URL地址为空!")return;}if (sumbit_flg) {document.turn2bank.submit();}sumbit_flg = false;}</script></head><body onload="dosubmit()" ><form name="turn2bank" action="${bank.url}" method="${bank.method}"><table style="width:100%"><c:forEach items="${bank}" var="li"><c:if test="${li.key != 'url'}"><c:if test="${li.key != 'method'}"><input type="text" name="${li.key}" value="${li.value}" /></c:if></c:if></c:forEach></table></form></body></html>
0 0
- 互联网支付-B2C商户名称显示中文问题
- 通联互联网支付网关商户接口技术规范
- 互联网支付:商户T+2的結算方式
- 【ecmall】商户页不能安装支付宝插件的问题
- 解决Strut2下载名称显示中文乱码的问题
- 关于微信的APP支付、公众号(服务号)支付,商户问题
- 微信支付商户平台
- 微信支付商户-APP支付接入
- ios应用名称怎么显示为中文
- 支付宝无线商户签约指南
- 汇付天下支付接口商户分类分析
- 商户如何接入微信支付
- 支付宝公钥和商户私钥
- 微信支付:商户订单号重复
- 商户端 和 支付宝 通讯验证
- 微信支付商户号的调研
- 微信支付-商户后台(1)
- 微信支付-商户后台(2)
- js判断浏览器类型
- Blowfish for IOS
- LeetCode 384. Shuffle an Array
- Java连接数据库
- 第一章 MAD:Erlang 容器
- 互联网支付-B2C商户名称显示中文问题
- Java设计模式之原型模式
- POJ 1509 Glass Beads 笔记
- 冒泡排序由浅入深详细分析图解
- Shiro Shiro Web Support - WebIniSecurityManagerFactory IniFilterChainResolverFactory
- node.js之全局对象process
- cocos2dx 中tinyxm12 解析Xml文件,换行问题
- day16Map
- Material Design学习之CollapsingToolbarLayout