海关申报

  • 下载地址

SDK下载

Demo下载

  • SDK 版本记录

版本

日期

说明

v1.0.1

2021-11-18

java sdk上线

海关申报?

  • 简介

针对指定交易进行支付单申报,由商户调用该接口发起。

  • 调用示例

Java

  
	// 商户的私钥(base64编码格式)
	String base64PrivateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMpT/BKCrfkPKbMggoIQVpYL8chw8e9do+vuh5f5OsZNVm+BAtpJY+nGTBW4ggWEbtDWh4e+IsCVDzeXVDUmPO4GXro0o7QZpOVN+bo28k1x69tw65HMLTgjx3jjrQK7JdON7cqbtqWN624GVMgk5mJGu0ua+eBiOPuIBM3Re+61AgMBAAECgYEAqWvWIjHnOCzoQCSy4/KGbrKlzbA2BrgksUVVqX57Jt5PyKMBHoRh87mmsHGF/tS8boeViac/NoAa8/P2AWN5lGFl8Z9A4NlpXojA+vn7bn2fIjDzsB8s2txkmskuzzoDhUSeiPGf/HjPG7w6fl1BiHiix2xRr8Bw5wTeMJmsXQECQQDwrktdw8NP0FzmqmyFzTfz97UDsexKQfLSaFq31YydMoYlHEwsZcZhNTTBx71tni7/2eEQdVtFToAQRbEvGJBVAkEA1zTDC18DBHeGQdMwywrdc9BhbYY4a2ucc8XhRHScQzzyG4WgSFTrorLAH6QohpmFHfHm0Ws6AfDDhdQwuNTE4QJARI6hUTguLlH/5ISvHP3z7j6lBURtNknKzTyEetENmMmHhJKm8A6dj5sESB6JSuxAHwkFHxcOxJMzz27KpcutcQJAfnQNS6g3kK9e31zmJdiriXrfVMjybAReeRTEKkJO859jL9LT/MyRbReVlsIR4g1hT9gtZc6Y1j0P1pp5SpITYQJAdxwKEBXokaZwWy2gzEt3XdXBYoR5lvg/3T4GSEMBJZRmlmZpBOTbg/yYaf7lXtGUm+mZ3UZsCfJvwufit314sw==";
	
	// 汇付国际的公钥(base64编码格式)
	String base64PublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvBaKblsfXTEAFLujPiQ3PlWL1TJd+l/ApN/16BcArl6Oo18Tb6xOCLlcFBr3xgmVokc8DP32PHAQdtmS8/Y9HziMFaf8NxTNH9whA7GobU1dmVP+tI31z1S5ZO82knNW9ghbcDwLCo251AWHg5tP4wgRCBOJS+bSuyRuAW15M/wIDAQAB";
	
	// 进口海关申报服务的url(测试环境)
	String serverUrl = "https://hfgj.testpnr.com/custom/applyImptDec.do";
	
	// 实例化客户端
	GcbPayClient gcbPayClient = new DefaultGcbPayClient(serverUrl, base64PrivateKey, base64PublicKey);
	
	// 构建请求对象
	GcbCustomsImportDecApplyRequest request = new GcbCustomsImportDecApplyRequest();
	
	//必填,商户系统接受报关结果的后台地址【url公网可以访问,否则接收不到通知】
	request.setBgUrl("http://localhost:8080/receiveCustomBg.do"); 
	//必填,会员账号,由我司提供的商户号+01,共13位数字
	request.setMerchantAcctId("1001215986501"); 
	//必填,终端号,由我司提供的终端号
	request.setTerminalId("0010001");	
	//必填,对应原支付交易成功时我司返回的dealId的值
	request.setDealId("1110000364062");
	//必填,海关编码,参照海关编码附录
	request.setCustomCode("GZHG");
	// 非必填,海关版本。预留,为空即可
	request.setCustomVersion("");
	//必填,商户海关备案号,商户在海关的备案号 (注:非汇付备案号)
	request.setMerCustomCode("1000001");
	//必填,电商平台的海关注册登记名称
	request.setMerCustomName("测试商户");
	//必填,证件类型,证件类型默认为身份证:1-身份证
	request.setPayerIdType("1");
	//必填,购买人中文姓名
	request.setPayerName("李财水");
	//必填,购买人身份证号,字符串,18位身份证号。
	request.setPayerIdNumber("320125198805232313");
	//必填,商户订单号,字符串,只允许使用字母、数字、_、-,并以_,字母或数字开头,每商户提交的订单号,必须在自身账户交易中唯一;合并支付时,填写商户子订单号
	String orderId = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
	request.setOrderId(orderId);
	//必填,默认CNY
	request.setOrderCurrency("CNY");
	//必填,订单金额,整型数字,单位为分。日韩元支持的最小单位为元。需满足orderAmt=freightAmt+goodsAmt+taxAmt-offsetAmt
	request.setOrderAmt("100");
	//必填,物流费,没值传0,整型数字,以分为单位。比方10元,提交时金额应为1000,商户页面显示金额可以转换成以元为单位显示
	request.setFreightAmt("0");
	//必填,货款,没值传0,整型数字,以分为单位。比方10元,提交时金额应为1000,商户页面显示金额可以转换成以元为单位显示
	request.setGoodsAmt("100");
	//必填,税款,没值传0,整型数字,以分为单位。比方10元,提交时金额应为1000,商户页面显示金额可以转换成以元为单位显示
	request.setTaxAmt("0");
	//必填,抵扣金额,没值传0,整型数字,以分为单位。比方10元,提交时金额应为1000,商户页面显示金额可以转换成以元为单位显示
	request.setOffsetAmt("0");
	//必填,填写电商平台在检验检疫的备案号,推送南沙时请准确填写,其他海关填写一固定值SHHF即可
	request.setEcpShortName("SHHF");
	//必填,电商平台域名
	request.setEcpDomainName("www.test.com");
	// 非必填,拆单标识 Split表示拆单,其他值不拆单
	request.setBizType("");
	//非必填,扩展字段1,英文或中文字符串支付完成后,按照原样返回给商户
	request.setExt1("ext1");
	//非必填,扩展字段2,英文或中文字符串支付完成后,按照原样返回给商户
	request.setExt2("ext2");
	
	// 发送请求
	GcbCustomsImportDecApplyResponse response = gcbPayClient.execute(request);
	
	//根据响应结果,进行业务逻辑处理
	// ......
		
  													
									
  • 接收异步示例

Java

  
	// 汇付国际的公钥(base64编码格式)
	String base64PublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvBaKblsfXTEAFLujPiQ3PlWL1TJd+l/ApN/16BcArl6Oo18Tb6xOCLlcFBr3xgmVokc8DP32PHAQdtmS8/Y9HziMFaf8NxTNH9whA7GobU1dmVP+tI31z1S5ZO82knNW9ghbcDwLCo251AWHg5tP4wgRCBOJS+bSuyRuAW15M/wIDAQAB";
	
	// 实例化通知解析器
	GcbPayCallbackMessageParser gcbMessageParser = new DefaultGcbPayCallbackMessageParser(base64PublicKey);
	
	// 解析通知结果
	GcbCustomsImportDecResult result = gcbMessageParser.parse(httpServeletRequest, GcbCustomsImportDecResult.class);

	//根据结果,进行业务逻辑处理
	// ......
  													
									
  • 参数说明

调用参数详见 海关申报接口

AT海关直连申报?

  • 简介

针对对接汇付收单支付方式为支付宝直连APP支付、微信直连APP支付进行海关申报,商户也可自行对接支付宝或微信进行申报。

  • 申报申请示例

Java

  
	// 商户的私钥(base64编码格式)
	String base64PrivateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMpT/BKCrfkPKbMggoIQVpYL8chw8e9do+vuh5f5OsZNVm+BAtpJY+nGTBW4ggWEbtDWh4e+IsCVDzeXVDUmPO4GXro0o7QZpOVN+bo28k1x69tw65HMLTgjx3jjrQK7JdON7cqbtqWN624GVMgk5mJGu0ua+eBiOPuIBM3Re+61AgMBAAECgYEAqWvWIjHnOCzoQCSy4/KGbrKlzbA2BrgksUVVqX57Jt5PyKMBHoRh87mmsHGF/tS8boeViac/NoAa8/P2AWN5lGFl8Z9A4NlpXojA+vn7bn2fIjDzsB8s2txkmskuzzoDhUSeiPGf/HjPG7w6fl1BiHiix2xRr8Bw5wTeMJmsXQECQQDwrktdw8NP0FzmqmyFzTfz97UDsexKQfLSaFq31YydMoYlHEwsZcZhNTTBx71tni7/2eEQdVtFToAQRbEvGJBVAkEA1zTDC18DBHeGQdMwywrdc9BhbYY4a2ucc8XhRHScQzzyG4WgSFTrorLAH6QohpmFHfHm0Ws6AfDDhdQwuNTE4QJARI6hUTguLlH/5ISvHP3z7j6lBURtNknKzTyEetENmMmHhJKm8A6dj5sESB6JSuxAHwkFHxcOxJMzz27KpcutcQJAfnQNS6g3kK9e31zmJdiriXrfVMjybAReeRTEKkJO859jL9LT/MyRbReVlsIR4g1hT9gtZc6Y1j0P1pp5SpITYQJAdxwKEBXokaZwWy2gzEt3XdXBYoR5lvg/3T4GSEMBJZRmlmZpBOTbg/yYaf7lXtGUm+mZ3UZsCfJvwufit314sw==";
	
	// 汇付国际的公钥(base64编码格式)
	String base64PublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvBaKblsfXTEAFLujPiQ3PlWL1TJd+l/ApN/16BcArl6Oo18Tb6xOCLlcFBr3xgmVokc8DP32PHAQdtmS8/Y9HziMFaf8NxTNH9whA7GobU1dmVP+tI31z1S5ZO82knNW9ghbcDwLCo251AWHg5tP4wgRCBOJS+bSuyRuAW15M/wIDAQAB";
	
	// AT海关申报服务的url(测试环境)
	String serverUrl = "https://hfgj.testpnr.com/atcustom/declareApply.htm";
	
	// 实例化客户端
	GcbPayClient gcbPayClient = new DefaultGcbPayClient(serverUrl, base64PrivateKey, base64PublicKey);
	
	// 构建请求对象
	GcbATCustomsDecApplyRequest request = new GcbATCustomsDecApplyRequest();
	
	//必填,会员账号,由我司提供的商户号+01,共13位数字
	request.setMerchantAcctId("1001215986501"); 
	//必填,终端号,由我司提供的终端号
	request.setTerminalId("0010001");	
	//必填,请求流水号,只允许使用字母、数字、_,每个商户提交的流水号,必须在自身账户交易中唯一该参数用于商户与汇付交易记录的唯一性保证
	String requestId = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
	request.setRequestId(requestId);
	//必填,请求时间, 数字串,一共14位。格式: yyyyMMddHHmmss
	String requestTime = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
	request.setRequestTime(requestTime);
	//必填,汇付支付单号
	request.setDealId("1110000364062");
	//必填,报关流水号, 微信时为支付时返回的商家订单号
	request.setOutTradeNo("20150806125346");
	//必填,微信/支付宝支付单号,交易接口的bankDealId的值
	request.setTradeNo("2013111511001004390000105126");
	//必填,海关,参考微信/支付宝的海关列表	
	request.setCustoms("SHANGHAI");
	//必填,商户海关备案号
	request.setMchCustomsNo("1000001");
	//非必填,商户海关备案名称
	request.setMchCustomsName("测试商户");
	//非必填,报关金额, 整型数字以分为单位。比方10元,提交时金额应为1000 拆单时amount=transportFee+productfee
	request.setAmount("2000");
	//非必填,报关操作类型:Add-新增、Modify-修改、Repush-重推,默认Add。
	request.setActionType("Add");
	//必填,是否拆单 Y-拆单,N-不拆单
	request.setIsSplit("N");
	//条件必填,子订单号, isSplit=Y时必填
	request.setSubOutTradeNo("");
	//必填,物流费整型数字以分为单位。比方10元,提交时金额应为1000
	request.setTransportFee("1000");
	//必填,商品价格整型数字以分为单位。比方10元,提交时金额应为1000
	request.setProductFee("1000");
	//非必填,关税整型数字以分为单位。比方10元,提交时金额应为1000
	request.setDuty("0");
	//非必填,订购人姓名
	request.setBuyerName("");
	//非必填,订购人身份证号
	request.setBuyerIdNo("");
	//非必填,扩展字段1,英文或中文字符串支付完成后,按照原样返回给商户
	request.setExt1("ext1");
	//非必填,扩展字段2,英文或中文字符串支付完成后,按照原样返回给商户
	request.setExt2("ext2");
	
	// 发送请求
	GcbATCustomsDecApplyResponse response = gcbPayClient.execute(request);
	
	//根据响应结果,进行业务逻辑处理
	// ......
  													
											
  • 申报结果查询示例

Java

  
	// 商户的私钥(base64编码格式)
	String base64PrivateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMpT/BKCrfkPKbMggoIQVpYL8chw8e9do+vuh5f5OsZNVm+BAtpJY+nGTBW4ggWEbtDWh4e+IsCVDzeXVDUmPO4GXro0o7QZpOVN+bo28k1x69tw65HMLTgjx3jjrQK7JdON7cqbtqWN624GVMgk5mJGu0ua+eBiOPuIBM3Re+61AgMBAAECgYEAqWvWIjHnOCzoQCSy4/KGbrKlzbA2BrgksUVVqX57Jt5PyKMBHoRh87mmsHGF/tS8boeViac/NoAa8/P2AWN5lGFl8Z9A4NlpXojA+vn7bn2fIjDzsB8s2txkmskuzzoDhUSeiPGf/HjPG7w6fl1BiHiix2xRr8Bw5wTeMJmsXQECQQDwrktdw8NP0FzmqmyFzTfz97UDsexKQfLSaFq31YydMoYlHEwsZcZhNTTBx71tni7/2eEQdVtFToAQRbEvGJBVAkEA1zTDC18DBHeGQdMwywrdc9BhbYY4a2ucc8XhRHScQzzyG4WgSFTrorLAH6QohpmFHfHm0Ws6AfDDhdQwuNTE4QJARI6hUTguLlH/5ISvHP3z7j6lBURtNknKzTyEetENmMmHhJKm8A6dj5sESB6JSuxAHwkFHxcOxJMzz27KpcutcQJAfnQNS6g3kK9e31zmJdiriXrfVMjybAReeRTEKkJO859jL9LT/MyRbReVlsIR4g1hT9gtZc6Y1j0P1pp5SpITYQJAdxwKEBXokaZwWy2gzEt3XdXBYoR5lvg/3T4GSEMBJZRmlmZpBOTbg/yYaf7lXtGUm+mZ3UZsCfJvwufit314sw==";
	
	// 汇付国际的公钥(base64编码格式)
	String base64PublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvBaKblsfXTEAFLujPiQ3PlWL1TJd+l/ApN/16BcArl6Oo18Tb6xOCLlcFBr3xgmVokc8DP32PHAQdtmS8/Y9HziMFaf8NxTNH9whA7GobU1dmVP+tI31z1S5ZO82knNW9ghbcDwLCo251AWHg5tP4wgRCBOJS+bSuyRuAW15M/wIDAQAB";
	
	// AT海关申报查询服务的url(测试环境)
	String serverUrl = "https://hfgj.testpnr.com/atcustom/declareQuery.htm";
	
	// 实例化客户端
	GcbPayClient gcbPayClient = new DefaultGcbPayClient(serverUrl, base64PrivateKey, base64PublicKey);
	
	// 构建请求对象
	GcbATCustomsDecQueryRequest request = new GcbATCustomsDecQueryRequest();
	
	//必填,会员账号,由我司提供的商户号+01,共13位数字
	request.setMerchantAcctId("1001215986501"); 
	//必填,终端号,由我司提供的终端号
	request.setTerminalId("0010001");	
	//必填,请求流水号,只允许使用字母、数字、_,每个商户提交的流水号,必须在自身账户交易中唯一该参数用于商户与汇付交易记录的唯一性保证
	String requestId = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
	request.setRequestId(requestId);
	//必填,请求时间, 数字串,一共14位。格式: yyyyMMddHHmmss
	String requestTime = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
	request.setRequestTime(requestTime);
	//必填,汇付支付单号
	request.setDealId("1110000364062");
	//必填,报关流水号, 微信时为支付时返回的商家订单号
	request.setOutTradeNo("20150806125346");
	//必填,微信/支付宝支付单号,交易接口的bankDealId的值
	request.setTradeNo("2013111511001004390000105126");
	//必填,海关,参考微信/支付宝的海关列表	
	request.setCustoms("SHANGHAI");
	//必填,是否拆单 Y-拆单,N-不拆单
	request.setIsSplit("N");
	//条件必填,子订单号, isSplit=Y时必填
	request.setSubOutTradeNo("");
	
	// 发送请求
	GcbATCustomsDecQueryResponse response = gcbPayClient.execute(request);
	
	//根据响应结果,进行业务逻辑处理
	// ......
  													
											
  • 参数说明

调用参数详见 AT直连海关申报接口