男人和女人做哪个网站,做外贸仿牌都用哪些网站,研发外包公司,wordpress 开发语言以银联网站支付 - 消费类交易 为例 0. 大致逻辑 前端request-后台封装参数-后台进行签名-生成跳转页面#xff08;包含表单提交内容#xff09;-响应前端#xff08;将生成的html写到浏览器中完成自动跳转打开银联支付页面#xff09;
复制代码1.acp_sdk.p… 以银联网站支付 - 消费类交易 为例 0. 大致逻辑 前端request-后台封装参数-后台进行签名-生成跳转页面包含表单提交内容-响应前端将生成的html写到浏览器中完成自动跳转打开银联支付页面
复制代码1.acp_sdk.properties配置 测试环境acp_sdk.properties##############SDK配置文件证书方式签名################
# 说明
# 1. 使用时请删除后缀的“.证书”并将此文件复制到src文件夹下替换原来的acp_sdk.properties。
# 2. 具体配置项请根据注释修改。
#
##########################################################################入网测试环境交易发送地址线上测试需要使用生产环境交易请求地址###############################交易请求地址
acpsdk.frontTransUrlhttps://gateway.test.95516.com/gateway/api/frontTransReq.do
acpsdk.backTransUrlhttps://gateway.test.95516.com/gateway/api/backTransReq.do
acpsdk.singleQueryUrlhttps://gateway.test.95516.com/gateway/api/queryTrans.do
acpsdk.batchTransUrlhttps://gateway.test.95516.com/gateway/api/batchTrans.do
acpsdk.fileTransUrlhttps://filedownload.test.95516.com/
acpsdk.appTransUrlhttps://gateway.test.95516.com/gateway/api/appTransReq.do
acpsdk.cardTransUrlhttps://gateway.test.95516.com/gateway/api/cardTransReq.do#以下缴费产品使用其余产品用不到
acpsdk.jfFrontTransUrlhttps://gateway.test.95516.com/jiaofei/api/frontTransReq.do
acpsdk.jfBackTransUrlhttps://gateway.test.95516.com/jiaofei/api/backTransReq.do
acpsdk.jfSingleQueryUrlhttps://gateway.test.95516.com/jiaofei/api/queryTrans.do
acpsdk.jfCardTransUrlhttps://gateway.test.95516.com/jiaofei/api/cardTransReq.do
acpsdk.jfAppTransUrlhttps://gateway.test.95516.com/jiaofei/api/appTransReq.do######################################################################### 报文版本号固定5.1.0请勿改动
acpsdk.version5.1.0# 签名方式证书方式固定01请勿改动
acpsdk.signMethod01# 是否验证验签证书的CN测试环境请设置false生产环境请设置true。非false的值默认都当true处理。
acpsdk.ifValidateCNNamefalse# 是否验证https证书测试环境请设置false生产环境建议优先尝试true不行再false。非true的值默认都当false处理。
acpsdk.ifValidateRemoteCertfalse#后台通知地址填写接收银联后台通知的地址必须外网能访问
acpsdk.backUrlhttp://222.222.222.222:8080/ACPSample_B2C/backRcvResponse#前台通知地址填写银联前台通知的地址必须外网能访问
acpsdk.frontUrlhttp://localhost:8080/ACPSample_B2C/frontRcvResponse#########################入网测试环境签名证书配置 ################################
# 多证书的情况证书路径为代码指定可不对此块做配置。
# 签名证书路径必须使用绝对路径如果不想使用绝对路径可以自行实现相对路径获取证书的方法测试证书所有商户共用开发包中的测试签名证书生产环境请从cfca下载得到。
# windows样例
acpsdk.signCert.pathD:/certs/acp_test_sign.pfx
# linux样例注意在linux下读取证书需要保证证书有被应用读的权限后续其他路径配置也同此条说明
#acpsdk.signCert.path/SERVICE01/usr/ac_frnas/conf/ACPtest/acp700000000000001.pfx# 签名证书密码测试环境固定000000生产环境请修改为从cfca下载的正式证书的密码正式环境证书密码位数需小于等于6位否则上传到商户服务网站会失败
acpsdk.signCert.pwd000000
# 签名证书类型固定不需要修改
acpsdk.signCert.typePKCS12##########################加密证书配置################################
# 敏感信息加密证书路径(商户号开通了商户对敏感信息加密的权限需要对 卡号accNopin和phoneNocvn2expired加密如果这些上送的话对敏感信息加密使用)
acpsdk.encryptCert.pathd:/certs/acp_test_enc.cer##########################验签证书配置################################
# 验签中级证书路径(银联提供)
acpsdk.middleCert.pathD:/certs/acp_test_middle.cer
# 验签根证书路径(银联提供)
acpsdk.rootCert.pathD:/certs/acp_test_root.cer
##开发测试777290058110097
merId
复制代码正式环境acp_sdk.propertiesacpsdk.frontTransUrlhttps://gateway.95516.com/gateway/api/frontTransReq.do
acpsdk.backTransUrlhttps://gateway.95516.com/gateway/api/backTransReq.do
acpsdk.singleQueryUrlhttps://gateway.95516.com/gateway/api/queryTrans.do
acpsdk.batchTransUrlhttps://gateway.95516.com/gateway/api/batchTransReq.do
acpsdk.fileTransUrlhttps://filedownload.95516.com/
acpsdk.signCert.pathD\:\\certs\\自己的私钥.pfx
#acpsdk.signCert.path/SERVICE01/usr/ac_frnas/conf/ACPtest/acp700000000000001.pfx
acpsdk.signCert.pwd自己的私钥密码
acpsdk.signCert.typePKCS12
acpsdk.validateCert.dirD\:\\certs\\
#acpsdk.validateCert.dir/SERVICE01/usr/ac_frnas/conf/ACPtest/
#acpsdk.encryptCert.pathd:\\certs\\encrypt.cer
acpsdk.singleModetrue
merId自己的商户号原demo不是写在这边
复制代码2. request request_urlhttps://gateway.test.95516.com/gateway/api/frontTransReq.do 非测试环境https://gateway.95516.com/gateway/api/frontTransReq.doparameters详情请求参数此处不作说明可以直接到官网查看3. Demo 1.获取前端请求参数并进行封装请求信息 Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.setContentType(text/html; charset DemoBase.encoding);//前台页面传过来的String merId req.getParameter(merId);String txnAmt req.getParameter(txnAmt);String orderId req.getParameter(orderId);String txnTime req.getParameter(txnTime);MapString, String requestData new HashMapString, String();/***银联全渠道系统产品参数除了encoding自行选择外其他不需修改***/requestData.put(version, DemoBase.version); //版本号全渠道默认值requestData.put(encoding, DemoBase.encoding); //字符集编码可以使用UTF-8,GBK两种方式requestData.put(signMethod, SDKConfig.getConfig().getSignMethod()); //签名方法requestData.put(txnType, 01); //交易类型 01消费requestData.put(txnSubType, 01); //交易子类型 01自助消费requestData.put(bizType, 000201); //业务类型B2C网关支付手机wap支付requestData.put(channelType, 07); //渠道类型这个字段区分B2C网关支付和手机wap支付07PC,平板 08手机/***商户接入参数***/requestData.put(merId, merId); //商户号码请改成自己申请的正式商户号或者open上注册得来的777测试商户号requestData.put(accessType, 0); //接入类型0直连商户 requestData.put(orderId,orderId); //商户订单号8-40位数字字母不能含“-”或“_”可以自行定制规则 requestData.put(txnTime, txnTime); //订单发送时间取系统时间格式为YYYYMMDDhhmmss必须取当前时间否则会报txnTime无效requestData.put(currencyCode, 156); //交易币种境内商户一般是156 人民币 requestData.put(txnAmt, txnAmt); //交易金额单位分不要带小数点//requestData.put(reqReserved, 透传字段); //请求方保留域如需使用请启用即可透传字段可以实现商户自定义参数的追踪本交易的后台通知,对本交易的交易状态查询交易、对账文件中均会原样返回商户可以按需上传长度为1-1024个字节。出现{}[]符号时可能导致查询接口应答报文解析失败建议尽量只传字母数字并使用|分割或者可以最外层做一次base64编码(base64编码之后出现的等号不会导致解析失败可以不用管)。 requestData.put(riskRateInfo, {commodityName测试商品名称});//前台通知地址 需设置为外网能访问 http https均可支付成功后的页面 点击“返回商户”按钮的时候将异步通知报文post到该地址//如果想要实现过几秒中自动跳转回商户页面权限需联系银联业务申请开通自动返回商户权限//异步通知参数详见open.unionpay.com帮助中心 下载 产品接口规范 网关支付产品接口规范 消费交易 商户通知requestData.put(frontUrl, DemoBase.frontUrl);//后台通知地址需设置为【外网】能访问 http https均可支付成功后银联会自动将异步通知报文post到商户上送的该地址失败的交易银联不会发送后台通知//后台通知参数详见open.unionpay.com帮助中心 下载 产品接口规范 网关支付产品接口规范 消费交易 商户通知//注意:1.需设置为外网能访问否则收不到通知 2.http https均可 3.收单后台通知后需要10秒内返回http200或302状态码 // 4.如果银联通知服务器发送通知后10秒内未收到返回状态码或者应答码非http200那么银联会间隔一段时间再次发送。总共发送5次每次的间隔时间为0,1,2,4分钟。// 5.后台通知地址如果上送了带有的参数例如http://abc/web?abcd 在后台通知处理程序验证签名之前需要编写逻辑将这些字段去掉再验签否则将会验签失败requestData.put(backUrl, DemoBase.backUrl);// 订单超时时间。// 超过此时间后除网银交易外其他交易银联系统会拒绝受理提示超时。 跳转银行网银交易如果超时后交易成功会自动退款大约5个工作日金额返还到持卡人账户。// 此时间建议取支付时的北京时间加15分钟。// 超过超时时间调查询接口应答origRespCode不是A6或者00的就可以判断为失败。requestData.put(payTimeout, new SimpleDateFormat(yyyyMMddHHmmss).format(new Date().getTime() 15 * 60 * 1000));////// 报文中特殊用法请查看 PCwap网关跳转支付特殊用法.txt/////**请求参数设置完毕以下对请求参数进行签名并生成html表单将表单写入浏览器跳转打开银联页面**/MapString, String submitFromData AcpService.sign(requestData,DemoBase.encoding); //报文中certId,signature的值是在signData方法中获取并自动赋值的只要证书配置正确即可。String requestFrontUrl SDKConfig.getConfig().getFrontRequestUrl(); //获取请求银联的前台地址对应属性文件acp_sdk.properties文件中的acpsdk.frontTransUrlString html AcpService.createAutoFormHtml(requestFrontUrl, submitFromData,DemoBase.encoding); //生成自动跳转的Html表单LogUtil.writeLog(打印请求HTML此为请求报文为联调排查问题的依据html);//将生成的html写到浏览器中完成自动跳转打开银联支付页面这里调用signData之后将html写到浏览器跳转到银联页面之前均不能对html中的表单项的名称和值进行修改如果修改会导致验签不通过resp.getWriter().write(html);
}
复制代码2.网关页面请求页面生成 /*** 功能前台交易构造HTTP POST自动提交表单br* param action 表单提交地址br* param hiddens 以MAP形式存储的表单键值br* param encoding 上送请求报文域encoding字段的值br* return 构造好的HTTP POST交易表单br*/
public static String createAutoFormHtml(String reqUrl, MapString, String hiddens,String encoding) {StringBuffer sf new StringBuffer();sf.append(htmlheadmeta http-equiv\Content-Type\ content\text/html; charsetencoding\//headbody);sf.append(form id \pay_form\ action\ reqUrl \ method\post\);if (null ! hiddens 0 ! hiddens.size()) {SetEntryString, String set hiddens.entrySet();IteratorEntryString, String it set.iterator();while (it.hasNext()) {EntryString, String ey it.next();String key ey.getKey();String value ey.getValue();sf.append(input type\hidden\ name\ key \ id\ key \ value\ value \/);}}sf.append(/form);sf.append(/body);sf.append(script type\text/javascript\);sf.append(document.all.pay_form.submit(););sf.append(/script);sf.append(/html);return sf.toString();
}
复制代码