java聚合支付之工行



import com.icbc.api.DefaultIcbcClient;
import com.icbc.api.IcbcApiException;
import com.icbc.api.IcbcConstants;
import com.icbc.api.internal.util.internal.util.fastjson.JSON;
import com.icbc.api.request.CardbusinessQrcodeQrgenerateRequestV1;
import com.icbc.api.request.QrcodeScannedPaystatusRequestV1;
import com.icbc.api.request.QrcodeScannedPaystatusRequestV1.QrcodeScannedPaystatusRequestV1Biz;
import com.icbc.api.request.QrcodeScannedReturnRequestV1;
import com.icbc.api.request.QrcodeScannedReturnRequestV1.QrcodeScannedReturnRequestV1Biz;
import com.icbc.api.request.QrcodeScannedReturnstatusRequestV1;
import com.icbc.api.response.CardbusinessQrcodeQrgenerateResponseV1;
import com.icbc.api.response.QrcodeScannedPaystatusResponseV1;
import com.icbc.api.response.QrcodeScannedReturnResponseV1;
import com.icbc.api.response.QrcodeScannedReturnstatusResponseV1;
import org.springframework.beans.factory.annotation.Value;

/**
 * 二维码生成
 * @author Administrator
 *
 */
public class QRCodeCreate{
	//App_id
	static String App_id="";

	//网关公钥
	static String APIGW_PUBLIC_KEY="";

	//私钥
	static String MY_PRIVATE_KEY="";

	//商户线下档案编号
	static  String   mer_id="";

	//e生活档案编号
	static  String  store_code="" ;
	//创建连接对象
    static	DefaultIcbcClient client = new DefaultIcbcClient(App_id,IcbcConstants.SIGN_TYPE_RSA2, MY_PRIVATE_KEY, APIGW_PUBLIC_KEY);

	/**
	 *
	 * 二维码生成
	 * 请求参数:  outTradeNo:商户订单号   orderAmt:金额    tradeDate:年月日      tradeTime:时分秒
	 * 响应参数   barcode 条码    return_code返回码
	 */
	 public  static  CardbusinessQrcodeQrgenerateResponseV1  qrCodeCreate(String outTradeNo,String orderAmt,String tradeDate,String tradeTime){
		 //构建client 对象

		 // 设置请求对象request
		 CardbusinessQrcodeQrgenerateRequestV1 request = new CardbusinessQrcodeQrgenerateRequestV1();
		 request.setServiceUrl("");
		 CardbusinessQrcodeQrgenerateRequestV1.CardbusinessQrcodeQrgenerateRequestV1Biz bizContent = new CardbusinessQrcodeQrgenerateRequestV1.CardbusinessQrcodeQrgenerateRequestV1Biz();
		 request.setBizContent(bizContent);
		 //商户线下档案编号
		  bizContent.setMerId(mer_id);
		 //e生活档案编号
	      bizContent.setStoreCode(store_code);
		 //订单编号
	      bizContent.setOutTradeNo(outTradeNo);
		 //订单金额
	      bizContent.setOrderAmt(orderAmt);
		 //订单生成日期
	      bizContent.setTradeDate(tradeDate);
		 //订单生成时间
	      bizContent.setTradeTime(tradeTime);
		 //商户是否开启通知接口
		  bizContent.setTporderCreateIp("127.0.0.1");
	      bizContent.setNotifyFlag("1");
		 bizContent.setNotifyUrl("");
		 //二维码有效期
	      bizContent.setPayExpire("21600"); //二维码六小时失效
	      CardbusinessQrcodeQrgenerateResponseV1 response;
	       try {
	            response =client.execute(request, System.currentTimeMillis() + "");//msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
	            if (response.getReturnCode() == 0) {
                    System.out.println("response:" + JSON.toJSONString(response));
                    return  response;
	            } else {
					// 失败
	                System.out.println("response:" + JSON.toJSONString(response));
	                System.out.println("ReturnCode:" + response.getReturnCode());
	                System.out.println("ReturnMsg:" + response.getReturnMsg());
	                return response;
	            }
	        } catch (IcbcApiException e) {
	            e.printStackTrace();
	        }
	       return  null;
	}

	/**
	 * 二维码被扫支付状态接口  -1:下单失败,0:支付中,1:支付成功,2:支付失败
	 * 参数  merId: 商户编号    outTradeNo: 外部订单号   tradeDate:交易日期   (年月日)
	 */
	 public  static  QrcodeScannedPaystatusResponseV1  isPalyMoney(String  outTradeNo,String  tradeDate,String  msgId){
	        QrcodeScannedPaystatusRequestV1 request = new QrcodeScannedPaystatusRequestV1();
		 //4、根据测试环境和生产环境替换相应ip和端口
	        request.setServiceUrl("");
		 //5、请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
	        QrcodeScannedPaystatusRequestV1Biz bizContent = new QrcodeScannedPaystatusRequestV1Biz();
	        bizContent.setMerId(mer_id); //商户编号
	        bizContent.setOutTradeNo(outTradeNo); //外部订单号
	        bizContent.setTradeDate(tradeDate);//交易日期
	        request.setBizContent(bizContent);
	        QrcodeScannedPaystatusResponseV1 response;
	        try {
	            response = client.execute(request, msgId);//msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
	            if (response.isSuccess()) {
					// 6、业务成功处理,请根据接口文档用response.getxxx()获取同步返回的业务数据
                     return  response;
	            } else {
					// 失败
	                System.out.println("ReturnCode:"+response.getReturnCode());
	                System.out.println("ReturnMsg:"+response.getReturnMsg());
					System.out.println("response:" + response);
	                return  response;
	            }        
	        } catch (IcbcApiException e) {
	            e.printStackTrace();
	        }
	       return  null;
	 }

	/**
	 * 商户请求退款
	 * 请求参数String merId 商户档案号,String cusId //用户唯一标识,String outTradeNo,String rejectNo,String jectAmyt,String operId
	 */
	 public static  QrcodeScannedReturnResponseV1   refundMoney(String cusId,String outTradeNo,String rejectNo,String jectAmyt,String operId,String  msgId){
		
		 QrcodeScannedReturnRequestV1 request = new QrcodeScannedReturnRequestV1();
		 //请路径
		 request.setServiceUrl("");
		 //创建对象
		 QrcodeScannedReturnRequestV1Biz bizContent = new QrcodeScannedReturnRequestV1Biz();
		 //商户档案编号
		 bizContent.setMerId(mer_id);
		 //用户唯一标识
		 bizContent.setCustId(cusId);
		 bizContent.setOutTradeNo(outTradeNo);
		 //退单编号
		 bizContent.setRejectNo(rejectNo);
		 //退款金额
		 bizContent.setRejectAmt(jectAmyt);
		 //操作人员编号
		 bizContent.setOperId(operId);//该字段非必输项
		 request.setBizContent(bizContent);
		 QrcodeScannedReturnResponseV1 response;
	        try {
	            response = client.execute(request, msgId);//msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
	            if (response.isSuccess()) {
					// 6、业务成功处理,请根据接口文档用response.getxxx()获取同步返回的业务数据
	                return  response;
	            } else {
					// 失败
	                System.out.println("ReturnCode:"+response.getReturnCode());
	                System.out.println("ReturnMsg:"+response.getReturnMsg());
					return  response;
	            }        
	        } catch (IcbcApiException e) {
	            e.printStackTrace();
	        }
	        return  null;
	 }
	/**
	 * t退款状态查询
	 * 请求参数:  String cusId 用户表示:,String outTradeNo :订单号,String rejectNo :退单编号,String  msgId:消息号
	 */
	public  static   QrcodeScannedReturnstatusResponseV1  refundMoneyStatus(String cusId,String outTradeNo,String rejectNo,String  msgId){
		QrcodeScannedReturnstatusRequestV1 request = new QrcodeScannedReturnstatusRequestV1();
		request.setServiceUrl("");
		QrcodeScannedReturnstatusRequestV1.QrcodeScannedReturnstatusRequestV1Biz bizContent = new QrcodeScannedReturnstatusRequestV1.QrcodeScannedReturnstatusRequestV1Biz();
		bizContent.setMerId(mer_id);
		bizContent.setCustId(cusId);
		//该字段非必输项
		bizContent.setOutTradeNo(outTradeNo);//该字段非必输项,out_trade_no和order_id选一项上送即可
		bizContent.setRejectNo(rejectNo);
		request.setBizContent(bizContent);
		QrcodeScannedReturnstatusResponseV1 response;
		try {
			response = client.execute(request, msgId);//msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
			if (response.isSuccess()) {
				// 6、业务成功处理,请根据接口文档用response.getxxx()获取同步返回的业务数据
				System.out.println("ReturnCode:"+response.getReturnCode());
				System.out.println("response:" + response);
				return  response;
			} else {
				// 失败
				System.out.println("ReturnCode:"+response.getReturnCode());
				System.out.println("ReturnMsg:"+response.getReturnMsg());
				return  response;
			}
		} catch (IcbcApiException e) {
			e.printStackTrace();
		}
		 return  null;
	}
}

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java聚合支付系统源码是指使用Java语言开发的一个聚合支付系统的源代码。聚合支付系统是一种整合多种支付渠道的系统,通过一个平台接入多个支付渠道,实现多种支付方式的统一管理和使用。该系统的源码包括了系统的各个模块的实现代码。 Java聚合支付系统源码通常涵盖了以下几个方面的内容: 1. 支付渠道的接入和集成:通过源码可以了解和学习如何接入各种支付渠道,包括支付宝、微信支付、银联支付等。源码中会包含各种支付接口的封装和调用示例,以及接口回调的处理代码。 2. 支付流程的实现:聚合支付系统的核心功能是整合多个支付渠道,使得用户可以灵活选择支付方式。源码中会包含支付流程的具体实现,包括用户选择支付方式、提交支付请求、回调处理以及支付结果的返回等。 3. 订单管理和支付状态的管理:聚合支付系统需要对订单和支付状态进行管理和记录。源码中会包含订单创建、查询、更新等操作的代码,以及支付状态更新和查询的代码。 4. 安全和风控机制的实现:支付系统需要考虑安全和风险控制,源码中会包含支付数据的加密处理、防止订单重复提交的机制以及异常情况的处理代码。 Java聚合支付系统源码的实现需要使用Java的开发框架和技术,如Spring、MyBatis等。同时,也需要了解支付渠道的接口规范和开发文档。 通过阅读和理解Java聚合支付系统源码,可以了解和学习到支付系统的整体架构和设计思路,从而可以自行开发和定制符合自身需求的聚合支付系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值