实例介绍
【实例简介】
【实例截图】
目录 1. 简介...........................................................................................................................................5 1.1 目的.............................................................................................................................................................5 1.2 功能描述.....................................................................................................................................................5 1.3 总体架构图.................................................................................................................................................5 2. 接口开发软件包说明...............................................................................................................6 3. 安装步骤.................................................................................................................................10 3.1 安装前检查...............................................................................................................................................10 3.2 接口开发软件包安装.............................................................................................................................. 10 3.3 接口开发软件包配置.............................................................................................................................. 10 3.4 配置测试应用...........................................................................................................................................10 4. 配置文件说明.........................................................................................................................11 4.1 从配置文件中读取配置项...................................................................................................................... 11 4.1.1 TrustMerchant.properties 文件.....................................................................................................11 单个商户配置说明.......................................................................................................................................11 多商户配置说明...........................................................................................................................................12 4.1.2 ConfigSource.properties 文件...................................................................................................... 13 4.2 从数据库中读取配置项.......................................................................................................................... 13 4.2.1 ConfigSource.properties 文件...................................................................................................... 13 5. 客户本地化开发.....................................................................................................................14 6. 交易说明.................................................................................................................................16 6.1 交易流程...................................................................................................................................................16 6.1.1 支付交易...........................................................................................................................................16 6.1.2 确保支付结果正确送达商户网站的措施...................................................................................... 18 6.1.3 其它交易...........................................................................................................................................19 6.2 交易使用时机...........................................................................................................................................19 6.3 支付请求...................................................................................................................................................21 6.3.1 方式 1:通过与农行服务器建立连接访问农行支付平台服务...................................................21 6.3.2 方式 2:通过页面传参提交表单方式访问农行支付平台服务...................................................24 6.4 两种接收支付结果方式的区别.............................................................................................................. 26 6.4.1 通过显示给消费者的支付结果接收页面通知商户......................................................................26 6.4.2 通过支付平台服务器通知商户...................................................................................................... 27 6.4.3 区别...................................................................................................................................................29 6.5 支付结果接收页面...................................................................................................................................30 6.6 单笔退款...................................................................................................................................................31 6.7 批量退款...................................................................................................................................................33 6.8 批量退款查询...........................................................................................................................................35 6.9 单笔交易查询...........................................................................................................................................37 6.10 交易明细查询.........................................................................................................................................38 6.11 对账单查询.............................................................................................................................................39 6.12 网上 K 码支付—账单发送....................................................................................................................41 6.13 网上 K 码支付—支付请求....................................................................................................................44 6.14 网上 K 码支付—验证码重发................................................................................................................46 6.15 授权支付签约(银行端).................................................................................................................... 47 6.16 授权支付签约(商户端)—申请........................................................................................................ 48 农行网上支付平台 商户接口编程指南 – Java Edition – V3.1.6 网上支付平台开发小组 3 of 165 6.17 授权支付签约(商户端)—确认........................................................................................................ 49 6.18 授权支付签约(商户端)—验证码重发............................................................................................ 50 6.19 授权支付解约.........................................................................................................................................51 6.20 授权支付签约/解约结果查询............................................................................................................... 52 6.21 单笔授权扣款.........................................................................................................................................53 6.22 批量授权扣款.........................................................................................................................................55 6.23 批量授权扣款结果查询........................................................................................................................ 57 6.24 身份验证(页面跳转)........................................................................................................................ 58 6.25 身份验证结果接收................................................................................................................................ 59 6.26 身份验证(非页面跳转).................................................................................................................... 60 6.27 预授权确认/取消................................................................................................................................... 61 6.28 实时账单查询.........................................................................................................................................62 6.29 缴费结果接收.........................................................................................................................................63 6.30 微信支付请求.........................................................................................................................................64 6.31 支付宝支付请求.....................................................................................................................................69 6.32 二级商户信息同步................................................................................................................................ 73 6.33 内转交易请求.........................................................................................................................................75 6.34 出金交易请求.........................................................................................................................................76 6.35 二级商户余额查询................................................................................................................................ 77 6.36 微信支付宝对账单下载........................................................................................................................ 78 6.37 内转出金对账单下载............................................................................................................................ 80 6.38 电子回单下载.........................................................................................................................................81 6.39 垫资户模式微信支付宝对账单下载.................................................................................................... 81 6.40 平台商户对账单下载............................................................................................................................ 83 6.41 鉴权交易查询.........................................................................................................................................84 6.42 出金查询.................................................................................................................................................85 6.43 订单撤销请求.........................................................................................................................................85 附录一、程序范例.......................................................................................................................87 附录二、响应码一览表...............................................................................................................88 附录三、TRUSTPAY CLIENT API..........................................................................................90 COM.ABC.PAY.CLIENT.TRXRESPONSE.............................................................................................................90 COM.ABC.PAY.CLIENT.TRXREQUEST............................................................................................................... 91 COM.ABC.PAY.CLIENT.EBUS.PAYMENTREQUEST............................................................................................ 92 COM.ABC.PAY.CLIENT.EBUS.PAYMENTRESULT............................................................................................... 96 COM.ABC.PAY.CLIENT.EBUS.QUERYORDERREQUEST....................................................................................98 COM.ABC.PAY.CLIENT.EBUS.REFUNDREQUEST............................................................................................104 COM.ABC.PAY.CLIENT.EBUS.SETTLEREQUEST............................................................................................. 106 COM.ABC.PAY.CLIENT.EBUS.AGENTBATCHPAYMENTQUERYREQUEST.......................................................108 COM.ABC.PAY.CLIENT.EBUS.AGENTBATCHPAYMENTREQU 农行网上支付平台 商户接口编程指南 – Java Edition – V3.1.6 网上支付平台开发小组 4 of 165 COM.ABC.PAY.CLIENT.EBUS.QUICKIDENTITYVERIFYREQUEST.................................................................... 134 COM.ABC.PAY.CLIENT.EBUS.QUICKPAYMENTREQUEST............................................................................... 135 COM.ABC.PAY.CLIENT.EBUS.QUICKPAYMENTRESEND.................................................................................138 COM.ABC.PAY.CLIENT.EBUS.QUICKPAYMENTSEND......................................................................................139 COM.ABC.PAY.CLIENT.EBUS.PAYMENTMERCHANT....................................................................................... 141 COM.ABC.PAY.CLIENT.EBUS.PAYMENTMERCHANTBEAN..............................................................................142 COM.ABC.PAY.CLIENT.EBUS.UNIFIEDPAYMENTREQUEST............................................................................ 143 COM.ABC.PAY.CLIENT.EBUS.REGSUBMERCHANTINFOREQUEST................................................................ 147 COM.ABC.PAY.CLIENT.EBUS.SETTLEREQUESTALIWX................................................................................. 149 COM.ABC.PAY.CLIENT.EBUS.SETTLEREQUESTTRANSFER........................................................................... 151 COM.ABC.PAY.CLIENT.EBUS.ALIPAYREQUEST.............................................................................................. 152 COM.ABC.PAY.CLIENT.EBUS.INNERPAYMENTREQUEST................................................................................156 COM.ABC.PAY.CLIENT.EBUS.OUTPAYMENTREQUEST...................................................................................157 COM.ABC.PAY.CLIENT.EBUS.SUBMERACCBALQRYREQUEST..................................................................... 159 COM.ABC.PAY.CLIENT.EBUS.GETRECEIPTREQUEST.................................................................................... 159 COM.ABC.PAY.CLIENT.EBUS.SETTLEREQUESTALIWXDZH......................................................................... 160 COM.ABC.PAY.CLIENT.EBUS.SETTLEREQUESTPLATFORM...........................................................................162 COM.ABC.PAY.CLIENT.EBUS.AUTHENMERCHANTQUERYREQUEST............................................................. 163 COM.ABC.PAY.CLIENT.EBUS.TRANSFEROUTQUERYREQUEST.....................................................................164 COM.ABC.PAY.CLIENT.EBUS.PAYCANCELREQUEST..................................................................................... 165
【核心代码】
package com.guolaiwan.app.abcpay.controller;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.abc.pay.client.Constants;
import com.abc.pay.client.JSON;
import com.abc.pay.client.ebus.PaymentRequest;
import com.abc.pay.client.ebus.PaymentResult;
import com.abc.pay.client.ebus.RefundRequest;
import com.guolaiwan.app.abcpay.PaymentRequestBo;
import com.guolaiwan.app.abcpay.RefundRequestBo;
import com.guolaiwan.app.web.website.controller.WebBaseControll;
@Controller
@RequestMapping("/abcpay")
public class AbcpayController extends WebBaseControll {
/**
* 农行对接支付
* 地址定义为http://www.guolaiwan.net/abcpay/MerchantPayment
* @param request
* @throws Exception
*/
@ResponseBody
@RequestMapping(value = "/MerchantPayment")
public Object MerchantPayment(HttpServletRequest request, HttpServletResponse response, PaymentRequestBo tPaymentRequestBo)
throws Exception{
request.setCharacterEncoding("GBK");
response.setHeader("Cache-Control", "no-cache");
//1、生成订单对象
PaymentRequest tPaymentRequest = new PaymentRequest();
tPaymentRequest.dicOrder.put("PayTypeID", tPaymentRequestBo.getPayTypeID());//设定交易类型
tPaymentRequest.dicOrder.put("OrderDate", tPaymentRequestBo.getOrderDate());//设定订单日期 (必要信息 - YYYY/MM/DD)
tPaymentRequest.dicOrder.put("OrderTime", tPaymentRequestBo.getOrderTime());//设定订单时间 (必要信息 - HH:MM:SS)
tPaymentRequest.dicOrder.put("orderTimeoutDate", tPaymentRequestBo.getOrderTimeoutDate());//设定订单有效期
tPaymentRequest.dicOrder.put("OrderNo", tPaymentRequestBo.getOrderNo());//设定订单编号 (必要信息)
tPaymentRequest.dicOrder.put("CurrencyCode", tPaymentRequestBo.getCurrencyCode());//设定交易币种
tPaymentRequest.dicOrder.put("OrderAmount", tPaymentRequestBo.getOrderAmount());//设定交易金额
tPaymentRequest.dicOrder.put("Fee", tPaymentRequestBo.getFee());//设定手续费金额
tPaymentRequest.dicOrder.put("AccountNo", tPaymentRequestBo.getAccountNo());//设定支付账户
tPaymentRequest.dicOrder.put("OrderDesc", tPaymentRequestBo.getOrderDesc());//设定订单说明
tPaymentRequest.dicOrder.put("OrderURL", tPaymentRequestBo.getOrderURL());//设定订单地址
tPaymentRequest.dicOrder.put("ReceiverAddress", tPaymentRequestBo.getReceiverAddress());//收货地址
tPaymentRequest.dicOrder.put("InstallmentMark", tPaymentRequestBo.getInstallmentMark());//分期标识
if (tPaymentRequestBo.getInstallmentMark() == "1" && tPaymentRequestBo.getPayTypeID() == "DividedPay")
{
tPaymentRequest.dicOrder.put("InstallmentCode", request.getParameter("InstallmentCode"));//设定分期代码
tPaymentRequest.dicOrder.put("InstallmentNum", request.getParameter("InstallmentNum"));//设定分期期数
}
tPaymentRequest.dicOrder.put("CommodityType", tPaymentRequestBo.getCommodityType());//设置商品种类
tPaymentRequest.dicOrder.put("BuyIP", tPaymentRequestBo.getBuyIP());//IP
tPaymentRequest.dicOrder.put("ExpiredDate", tPaymentRequestBo.getExpiredDate());//设定订单保存时间
//3、生成支付请求对象
String paymentType = tPaymentRequestBo.getPaymentType();
tPaymentRequest.dicRequest.put("PaymentType", paymentType);//设定支付类型
String paymentLinkType = tPaymentRequestBo.getPaymentLinkType();
tPaymentRequest.dicRequest.put("PaymentLinkType", paymentLinkType);//设定支付接入方式
if (paymentType.equals(Constants.PAY_TYPE_UCBP) && paymentLinkType.equals(Constants.PAY_LINK_TYPE_MOBILE))
{
tPaymentRequest.dicRequest.put("UnionPayLinkType",request.getParameter("UnionPayLinkType"));//当支付类型为6,支付接入方式为2的条件满足时,需要设置银联跨行移动支付接入方式
}
tPaymentRequest.dicRequest.put("ReceiveAccount", tPaymentRequestBo.getReceiveAccount());//设定收款方账号
tPaymentRequest.dicRequest.put("ReceiveAccName", tPaymentRequestBo.getReceiveAccName());//设定收款方户名
tPaymentRequest.dicRequest.put("NotifyType", tPaymentRequestBo.getNotifyType());//设定通知方式
tPaymentRequest.dicRequest.put("ResultNotifyURL", tPaymentRequestBo.getResultNotifyURL());//设定通知URL地址
tPaymentRequest.dicRequest.put("MerchantRemarks", tPaymentRequestBo.getMerchantRemarks());//设定附言
tPaymentRequest.dicRequest.put("ReceiveMark", tPaymentRequestBo.getReceiveMark());//交易是否直接入二级商户账户
tPaymentRequest.dicRequest.put("ReceiveMerchantType", tPaymentRequestBo.getReceiveMerchantType());//设定收款方账户类型
tPaymentRequest.dicRequest.put("IsBreakAccount", tPaymentRequestBo.getIsBreakAccount());//设定交易是否分账、交易是否支持向二级商户入账
tPaymentRequest.dicRequest.put("SplitAccTemplate", tPaymentRequestBo.getSplitAccTemplate());//分账模版编号
JSON json = tPaymentRequest.postRequest();
String ReturnCode = json.GetKeyValue("ReturnCode");
String ErrorMessage = json.GetKeyValue("ErrorMessage");
Map<String, Object> ret = new HashMap<String, Object>();
if (ReturnCode.equals("0000"))
{
ret.put("status", "success");
System.out.println("ReturnCode = [" ReturnCode "]<br/>");
System.out.println("ErrorMessage = [" ErrorMessage "]<br/>");
System.out.println("PaymentURL-->" json.GetKeyValue("PaymentURL"));
response.sendRedirect(json.GetKeyValue("PaymentURL"));
}
else
{
ret.put("status", "failed");
ret.put("code", ReturnCode);
ret.put("message", ErrorMessage);
System.out.println("ReturnCode = [" ReturnCode "]");
System.out.println("ErrorMessage = [" ErrorMessage "]");
}
return ret;
}
/**
* 农行对接支付结果
* 地址定义为http://www.guolaiwan.net/abcpay/MerchantResult
* @param request
* @throws Exception
*/
@ResponseBody
@RequestMapping(value = "/MerchantResult")
public Object MerchantResult(HttpServletRequest request) throws Exception{
//1、取得MSG参数,并利用此参数值生成支付结果对象
String msg = request.getParameter("MSG");
PaymentResult tResult = new PaymentResult(msg);
Map<String, Object> ret = new HashMap<String, Object>();
//2、判断支付结果状态,进行后续操作
if (tResult.isSuccess()) {
//3、支付成功并且验签、解析成功
System.out.println("TrxType = [" tResult.getValue("TrxType" ) "]<br>");
System.out.println("OrderNo = [" tResult.getValue("OrderNo" ) "]<br>");//订单号
System.out.println("Amount = [" tResult.getValue("Amount" ) "]<br>");//订单金额
System.out.println("BatchNo = [" tResult.getValue("BatchNo" ) "]<br>");//交易批次号
System.out.println("VoucherNo = [" tResult.getValue("VoucherNo" ) "]<br>");//交易凭证号
System.out.println("HostDate = [" tResult.getValue("HostDate" ) "]<br>");//银行交易日期
System.out.println("HostTime = [" tResult.getValue("HostTime" ) "]<br>");//银行交易时间
System.out.println("MerchantRemarks = [" tResult.getValue("MerchantRemarks") "]<br>");//商户备注信息
System.out.println("PayType = [" tResult.getValue("PayType" ) "]<br>");//消费者支付方式
System.out.println("NotifyType = [" tResult.getValue("NotifyType" ) "]<br>");//支付结果通知方式
System.out.println("TrnxNo = [" tResult.getValue("iRspRef" ) "]<br>");//银行返回交易流水号
System.out.println("BankType = [" tResult.getValue("bank_type" ) "]<br>");//付款银行(微信)
System.out.println("ThirdOrderNo = [" tResult.getValue("ThirdOrderNo" ) "]<br>");//第三方订单号(微信和支付宝)
ret.put("status", "success");
}
else {
//4、支付成功但是由于验签或者解析报文等操作失败
System.out.println("ReturnCode = [" tResult.getReturnCode () "]<br>");
System.out.println("ErrorMessage = [" tResult.getErrorMessage() "]<br>");
ret.put("status", "failed");
ret.put("code", tResult.getReturnCode ());
ret.put("message", tResult.getErrorMessage());
}
return ret;
}
/**
* 农行对接退款及退款结果
* 地址定义为http://www.guolaiwan.net/abcpay/MerchantRefund
* @param request
* @throws Exception
*/
@ResponseBody
@RequestMapping(value = "/MerchantRefund")
public Object MerchantRefund(HttpServletRequest request, HttpServletResponse response, RefundRequestBo tRefundRequestBo)
throws Exception{
request.setCharacterEncoding("gb2312");
response.setHeader("Cache-Control", "no-cache");
//1、生成退款请求对象
RefundRequest tefundRequest = new RefundRequest();
tefundRequest.dicRequest.put("OrderDate", tRefundRequestBo.getOrderDate());//订单日期(必要信息)
tefundRequest.dicRequest.put("OrderTime", tRefundRequestBo.getOrderTime());//订单时间(必要信息)
tefundRequest.dicRequest.put("OrderNo", tRefundRequestBo.getOrderNo()); //原交易编号(必要信息)
tefundRequest.dicRequest.put("NewOrderNo", tRefundRequestBo.getNewOrderNo());//交易编号(必要信息)
tefundRequest.dicRequest.put("CurrencyCode", tRefundRequestBo.getCurrencyCode());//交易币种(必要信息)
tefundRequest.dicRequest.put("TrxAmount", tRefundRequestBo.getTrxAmount());//退货金额 (必要信息)
tefundRequest.dicRequest.put("RefundType", tRefundRequestBo.getRefundType());//退货类型 (非必要信息)
tefundRequest.dicRequest.put("MerchantRemarks", tRefundRequestBo.getMerchantRemarks());//附言
//3、传送退款请求并取得退货结果
JSON json = tefundRequest.postRequest();
//4、判断退款结果状态,进行后续操作
StringBuilder strMessage = new StringBuilder("");
String ReturnCode = json.GetKeyValue("ReturnCode");
String ErrorMessage = json.GetKeyValue("ErrorMessage");
Map<String, Object> ret = new HashMap<String, Object>();
if (ReturnCode.equals("0000"))
{
//5、退款成功/退款受理成功
System.out.println("ReturnCode = [" ReturnCode "]<br/>");
System.out.println("ErrorMessage = [" ErrorMessage "]<br/>");
System.out.println("OrderNo = [" json.GetKeyValue("OrderNo") "]<br/>");
System.out.println("NewOrderNo = [" json.GetKeyValue("NewOrderNo") "]<br/>");
System.out.println("TrxAmount = [" json.GetKeyValue("TrxAmount") "]<br/>");
System.out.println("BatchNo = [" json.GetKeyValue("BatchNo") "]<br/>");
System.out.println("VoucherNo = [" json.GetKeyValue("VoucherNo") "]<br/>");
System.out.println("HostDate = [" json.GetKeyValue("HostDate") "]<br/>");
System.out.println("HostTime = [" json.GetKeyValue("HostTime") "]<br/>");
System.out.println("iRspRef = [" json.GetKeyValue("iRspRef") "]<br/>");
ret.put("status", "success");
}
else
{
//6、退款失败
System.out.println("ReturnCode = [" ReturnCode "]<br>");
System.out.println("ErrorMessage = [" ErrorMessage "]<br>");
ret.put("status", "failed");
ret.put("code", ReturnCode);
ret.put("message", ErrorMessage);
}
return ret;
}
/**
* 农行对接支付(备用)
* demo中MerchantPayment.jsp代码
* @param request
* @throws Exception
*/
@ResponseBody
@RequestMapping(value = "/MerchantPaymentDemo")
public void MerchantPaymentDemo(HttpServletRequest request, HttpServletResponse response) throws Exception{
request.setCharacterEncoding("GBK");
response.setHeader("Cache-Control", "no-cache");
//1、生成订单对象
PaymentRequest tPaymentRequest = new PaymentRequest();
tPaymentRequest.dicOrder.put("PayTypeID", request.getParameter("PayTypeID")); //设定交易类型
tPaymentRequest.dicOrder.put("OrderDate", request.getParameter("OrderDate") ); //设定订单日期 (必要信息 - YYYY/MM/DD)
tPaymentRequest.dicOrder.put("OrderTime", request.getParameter("OrderTime")); //设定订单时间 (必要信息 - HH:MM:SS)
tPaymentRequest.dicOrder.put("orderTimeoutDate", request.getParameter("orderTimeoutDate")); //设定订单有效期
tPaymentRequest.dicOrder.put("OrderNo", request.getParameter("OrderNo")); //设定订单编号 (必要信息)
tPaymentRequest.dicOrder.put("CurrencyCode", request.getParameter("CurrencyCode")); //设定交易币种
tPaymentRequest.dicOrder.put("OrderAmount", request.getParameter("PaymentRequestAmount")); //设定交易金额
tPaymentRequest.dicOrder.put("Fee", request.getParameter("Fee")); //设定手续费金额
tPaymentRequest.dicOrder.put("AccountNo", request.getParameter("AccountNo")); //设定支付账户
tPaymentRequest.dicOrder.put("OrderDesc", request.getParameter("OrderDesc")); //设定订单说明
tPaymentRequest.dicOrder.put("OrderURL", request.getParameter("OrderURL")); //设定订单地址
tPaymentRequest.dicOrder.put("ReceiverAddress", request.getParameter("ReceiverAddress")); //收货地址
tPaymentRequest.dicOrder.put("InstallmentMark", request.getParameter("InstallmentMark")); //分期标识
if (request.getParameter("InstallmentMark") == "1" && request.getParameter("PayTypeID") == "DividedPay")
{
tPaymentRequest.dicOrder.put("InstallmentCode", request.getParameter("InstallmentCode")); //设定分期代码
tPaymentRequest.dicOrder.put("InstallmentNum", request.getParameter("InstallmentNum")); //设定分期期数
}
tPaymentRequest.dicOrder.put("CommodityType", request.getParameter("CommodityType")); //设置商品种类
tPaymentRequest.dicOrder.put("BuyIP", request.getParameter("BuyIP")); //IP
tPaymentRequest.dicOrder.put("ExpiredDate", request.getParameter("ExpiredDate")); //设定订单保存时间
//2、订单明细
LinkedHashMap orderitem = new LinkedHashMap();
orderitem.put("SubMerName", "测试二级商户1"); //设定二级商户名称
orderitem.put("SubMerId", "12345"); //设定二级商户代码
orderitem.put("SubMerMCC", "0000"); //设定二级商户MCC码
orderitem.put("SubMerchantRemarks", "测试"); //二级商户备注项
orderitem.put("ProductID", "IP000001");//商品代码,预留字段
orderitem.put("ProductName", "中国移动IP卡");//商品名称
orderitem.put("UnitPrice", "1.00");//商品总价
orderitem.put("Qty", "1");//商品数量
orderitem.put("ProductRemarks", "测试商品"); //商品备注项
orderitem.put("ProductType", "充值类");//商品类型
orderitem.put("ProductDiscount", "0.9");//商品折扣
orderitem.put("ProductExpiredDate", "10");//商品有效期
tPaymentRequest.orderitems.put(1, orderitem);
orderitem = new LinkedHashMap();
orderitem.put("SubMerName", "测试二级商户1"); //设定二级商户名称
orderitem.put("SubMerId", "12345"); //设定二级商户代码
orderitem.put("SubMerMCC", "0000"); //设定二级商户MCC码
orderitem.put("SubMerchantRemarks", "测试"); //二级商户备注项
orderitem.put("ProductID", "IP000001");//商品代码,预留字段
orderitem.put("ProductName", "中国联通IP卡");//商品名称
orderitem.put("UnitPrice", "1.00");//商品总价
orderitem.put("Qty", "2");//商品数量
orderitem.put("ProductRemarks", "测试商品"); //商品备注项
orderitem.put("ProductType", "充值类");//商品类型
orderitem.put("ProductDiscount", "0.9");//商品折扣
orderitem.put("ProductExpiredDate", "10");//商品有效期
tPaymentRequest.orderitems.put(2, orderitem);
//3、生成支付请求对象
String paymentType = request.getParameter("PaymentType");
tPaymentRequest.dicRequest.put("PaymentType", paymentType); //设定支付类型
String paymentLinkType = request.getParameter("PaymentLinkType");
tPaymentRequest.dicRequest.put("PaymentLinkType", paymentLinkType); //设定支付接入方式
if (paymentType.equals(Constants.PAY_TYPE_UCBP) && paymentLinkType.equals(Constants.PAY_LINK_TYPE_MOBILE))
{
tPaymentRequest.dicRequest.put("UnionPayLinkType",request.getParameter("UnionPayLinkType")); //当支付类型为6,支付接入方式为2的条件满足时,需要设置银联跨行移动支付接入方式
}
tPaymentRequest.dicRequest.put("ReceiveAccount", request.getParameter("ReceiveAccount")); //设定收款方账号
tPaymentRequest.dicRequest.put("ReceiveAccName", request.getParameter("ReceiveAccName")); //设定收款方户名
tPaymentRequest.dicRequest.put("NotifyType", request.getParameter("NotifyType")); //设定通知方式
tPaymentRequest.dicRequest.put("ResultNotifyURL", request.getParameter("ResultNotifyURL")); //设定通知URL地址
tPaymentRequest.dicRequest.put("MerchantRemarks", request.getParameter("MerchantRemarks")); //设定附言
tPaymentRequest.dicRequest.put("ReceiveMark",request.getParameter("ReceiveMark")); //交易是否直接入二级商户账户
tPaymentRequest.dicRequest.put("ReceiveMerchantType",request.getParameter("ReceiveMerchantType")); //设定收款方账户类型
tPaymentRequest.dicRequest.put("IsBreakAccount", request.getParameter("IsBreakAccount")); //设定交易是否分账、交易是否支持向二级商户入账
tPaymentRequest.dicRequest.put("SplitAccTemplate", request.getParameter("SplitAccTemplate")); //分账模版编号
//4、添加分账信息
String[] SubMerchantID_arr = new String[]{};
String[] SplitAmount_arr = new String[]{};
SubMerchantID_arr = request.getParameterValues("SplitMerchantID");
SplitAmount_arr = request.getParameterValues("SplitAmount");
LinkedHashMap map = null;
if(SubMerchantID_arr != null){
for (int i = 0; i < SubMerchantID_arr.length; i )
{
map = new LinkedHashMap();
//map.put("SeqNo ", String.valueOf(i 1));
map.put("SplitMerchantID",SubMerchantID_arr[i]);
map.put("SplitAmount",SplitAmount_arr[i]);
tPaymentRequest.dicSplitAccInfo.put(i 1, map);
}
}
JSON json = tPaymentRequest.postRequest();
//JSON json = tPaymentRequest.extendPostRequest(1);
String ReturnCode = json.GetKeyValue("ReturnCode");
String ErrorMessage = json.GetKeyValue("ErrorMessage");
if (ReturnCode.equals("0000"))
{
System.out.println("ReturnCode = [" ReturnCode "]<br/>");
System.out.println("ErrorMessage = [" ErrorMessage "]<br/>");
System.out.println("PaymentURL-->" json.GetKeyValue("PaymentURL"));
response.sendRedirect(json.GetKeyValue("PaymentURL"));
}
else
{
System.out.println("ReturnCode = [" ReturnCode "]");
System.out.println("ErrorMessage = [" ErrorMessage "]");
}
}
}
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论