在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例企业应用开发/EJB → 农行网上支付平台-商户接口编程指南-Java_Edition-V3.1.6.pdf

农行网上支付平台-商户接口编程指南-Java_Edition-V3.1.6.pdf

企业应用开发/EJB

下载此实例
  • 开发语言:Java
  • 实例大小:4.13M
  • 下载次数:19
  • 浏览次数:1678
  • 发布时间:2019-11-11
  • 实例类别:企业应用开发/EJB
  • 发 布 人:spitefulsoul
  • 文件格式:.pdf
  • 所需积分:2
 相关标签: 实例 接口

实例介绍

【实例简介】

【实例截图】

from clipboard



目录
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 "]");
}

}
}


标签: 实例 接口

实例下载地址

农行网上支付平台-商户接口编程指南-Java_Edition-V3.1.6.pdf

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警