工商银行B2C支付接口JAVA版(未完)

本文档详细介绍了使用JAVA实现工商银行B2C支付接口的过程,包括阅读文档、构造表单、加密字段、处理时间同步问题以及解决错误代码等关键步骤。在实施过程中,作者遇到并解决了如时间不一致、加密错误等问题,为开发者提供了实践参考。
摘要由CSDN通过智能技术生成

工商银行银联支付接口。




发现网上的资料对于JAVA版本并不是很详细。
正好公司要做,我也边摸索边学习一下~



要做银联支付,先是测这个工商银行的接口。


给我发了一个文件:


我是用的JAVA,你们看自己用的什么看对应demo哈~微笑


首先当然是看最下面那个doc文档,里面有个发送数据和接受数据的表单,定义了很多字段。我们就是要把这个发送数据表单构造出来,传给银行,然后银行再把接收数据的表单发给我们。文档我不截图了,自己去看~百度文库也一大堆的。


参考了这个:http://www.tuicool.com/articles/YBRZNnz


下面是纯JAVA的说明。按照步骤做。测试证书和key(不在上面的文件夹里,是另外发给我的)放在D盘(之后会改成配置文件获取),导入jar包,把javaApiDemo.jsp里的password改成银行发给你的那个密码。


放到服务器上,返回如下页面:



欧卡~接下来开始正式的。


建立了一个表单对应的ICBC类和TranData类(放在一个类就可以了,我开始弄错了就分开了 ,一个类里面更省事儿)


ICBC:

package com.mvc.product.model;


public class ICBC {
	
	//必输:1,选输:2
	
    // 
//	private String orderPostUrl = "https://B2C.icbc.com.cn/servlet/ICBCINBSEBusinessServlet";
    // 1接口版本号
    private String interfaceName = "ICBC_PERBANK_B2C";
    // 1交易日期时间
    private String interfaceVersion = "1.0.0.11";

    
    // 1交易数据
    // 整合所有交易数据形成的xml明文串,并做BASE64编码;
    // 具体格式定义见下文;
    // 注意:
    // 需有xml头属性;整个字段使用BASE64编码;
    // xml明文中没有回车换行和多余空格;
    private String tranData;

    //  1订单签名数据
    //  必输,
    //	商户使用工行提供的签名API和商户证书将tranData的xml明文串进行签名,得到二进制签名数据,然后进行BASE64编码后得到可视的merSignMsg;
    //	注意:签名时是针对tranData的xml明文,不是将tranData进行BASE64编码后的串;
    private String merSignMsg;

    //  1商城证书公钥
    //  商户用二进制方式读取证书公钥文件后,进行BASE64编码后产生的字符串;
    private String merCert;

	public String getInterfaceName() {
		return interfaceName;
	}

	public void setInterfaceName(String interfaceName) {
		this.interfaceName = interfaceName;
	}

	public String getInterfaceVersion() {
		return interfaceVersion;
	}

	public void setInterfaceVersion(String interfaceVersion) {
		this.interfaceVersion = interfaceVersion;
	}

	public String getTranData() {
		return tranData;
	}

	public void setTranData(String tranData) {
		this.tranData = tranData;
	}

	public String getMerSignMsg() {
		return merSignMsg;
	}

	public void setMerSignMsg(String merSignMsg) {
		this.merSignMsg = merSignMsg;
	}

	public String getMerCert() {
		return merCert;
	}

	public void setMerCert(String merCert) {
		this.merCert = merCert;
	}

}

TranData:

public class TranData {
	
	//必输:1,选输:2
    // 1接口版本号
    private String interfaceName = "ICBC_PERBANK_B2C";
    // 1交易日期时间
    private String interfaceVersion = "1.0.0.11";
    // 1交易日期时间:目前要求在银行系统当前时间的前后十分钟范围内,否则判定交易时间非法。
    private String orderDate;
    // 1订单号:客户支付后商户网站产生的一个唯一的定单号,该订单号应该在相当长的时间内不重复。工行通过订单号加订单日期来唯一确认一笔订单的重复性。
    private Long orderid;
    // 1订单金额:客户支付订单的总金额,一笔订单一个,以分为单位。不可以为零,必需符合金额标准。
    private Double amount;
    // 1分期付款期数:取值:1、3、6、9、12、18、24;1代表全额付款,必须为以上数值,否则订单校验不通过。
    private Integer installmentTimes = 1;
    // TODO
    // 1商户账号:商户入账账号,只能交易时指定。(商户付给银行手续费的账户,可以在开户的时候指定,也可以用交易指定方式;用交易指定方式则使用此商户账号)
    private String merAcct;
	// 2商品编号
    private String goodsID = "";
    // 1商品名称
    private String goodsName = "";
    // 2商品数量
    private Integer goodsNum = 1;
    // 2已含运费金额
    private Double carriageAmt;
    // 1检验联名标志:取值“1”:客户支付时,网银判断该客户是否与商户联名,是则按上送金额扣帐,否则展现未联名错误;取值“0”:不检验客户是否与商户联名,按上送金额扣帐。
    private Integer verifyJoinFlag = 0;
    // 2语言版本:默认为中文版 。取值:“EN_US”为英文版;取值:“ZH_CN”或其他为中文版。注意:大小写敏感。
    private String language = "ZH_CN";
    // 1支付币种:用来区分一笔支付的币种,目前工行只支持使用人民币(001)支付。 取值: “001”
    private String curType = "001";
    
    //TODO
    // 1商户代码:唯一确定一个商户的代码,由商户在工行开户时,由工行告知商户。
    private String merID;
    
    // 1支持订单支付的银行卡种类:默认“2”。取值范围为0、1、2,其中0表示仅允许使用借记卡支付,1表示仅允许使用信用卡支付,2表示借记卡和信用卡都能对订单进行支付
    private Integer creditType = 2;
    // 1通知类型
    // 在交易转账处理完成后把交易结果通知商户的处理模式。
    // 取值“HS”:在交易完成后实时将通知信息以HTTP协议POST方式,主动发送给商户,发送地址为商户端随订单数据提交的接收工行支付结果的URL即表单中的merURL字段;
    // 取值“AG”:在交易完成后不通知商户。商户需使用浏览器登录工行的B2C商户服务网站,或者使用工行提供的客户端程序API主动获取通知信息。
    private String notifyType = "HS";
    // 2结果发送类型
    // 选输
    // 取值“0”:无论支付成功或者失败,银行都向商户发送交易通知信息;
    // 取值“1”,银行只向商户发送交易
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值