								　      ─────────────────────────────────────────     
								           产品名称：  签约支付产品
								      JDK：  本示例JDK版本基于jdk1.8.0_231以上建议1.8.0_231
								                   日期：  2024-08-19
								    ─────────────────────────────────────────
───────────
 **重要**
1） 声明：本开发包代码只是为了方便商户测试而提供的样例代码，商户可以根据自己需要，按照技术文档编写。该代码仅供参考，不提供编码，性能，规范性等方面的保障。
2）联调前请仔细阅读以下说明。
3）测试时一定要注意配置好配置文件中的各种证书文件的路径。
4）注意使用国密必须更新bc的jar。
───────────

───────────
示例工程目录结构
───────────

ACPSample_Contract
  │
  ├src┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈类文件夹
  │  │
  │  ├assets ┈┈┈┈┈┈┈┈┈相关资源目录
  │  │  │  
  │  │  ├apache_httpclient┈┈┈┈┈┈┈┈┈apache中的http post方法 
  │  │  │
  │  │  ├测试环境证书和配置文件_RSA
  │  │  │   │
  │  │  │   ├acp_test_enc.cer ┈┈┈┈┈┈┈┈┈ 【重要】测试环境敏感信息加密证书（所有商户固定使用同一个）  
  │  │  │   │  
  │  │  │   ├acp_test_sign.pfx ┈┈┈┈┈┈┈┈┈ 【重要】 测试环境签名私钥证书（所有商户固定使用同一个）
  │  │  │   │
  │  │  │   ├acp_sdk.properties ┈┈┈┈┈┈┈┈┈ 【重要】 测试环境配置文件样例（证书方式签名）（使用方式请看文件里的说明）
  │  │  │   │
  │  │  │   └acp_test_verify_sign.cer ┈┈┈┈┈┈┈┈┈ 【重要】 测试环境验签公钥证书证书  （所有商户固定使用同一个）
  │  │  │
  │  │  ├测试环境证书和配置文件_SM2
  │  │  │   │
  │  │  │   ├acp_test_enc_SM2.cer ┈┈┈┈┈┈┈┈┈ 【重要】测试环境敏感信息加密证书（所有商户固定使用同一个）
  │  │  │   │
  │  │  │   ├acp_test_sign.sm2 ┈┈┈┈┈┈┈┈┈ 【重要】 测试环境签名私钥证书（所有商户固定使用同一个）
  │  │  │   │
  │  │  │   ├acp_sdk.properties ┈┈┈┈┈┈┈┈┈ 【重要】 测试环境配置文件样例（证书方式签名）（使用方式请看文件里的说明）
  │  │  │   │
  │  │  │   └acp_test_verify_sign_SM2.cer ┈┈┈┈┈┈┈┈┈ 【重要】 测试环境验签公钥证书证书  （所有商户固定使用同一个）
  │  │  │
  │  │  ├生产环境证书和配置文件_RSA
  │  │  │   │
  │  │  │   ├acp_prod_enc.cer ┈┈┈┈┈┈┈┈┈ 【重要】生产环境敏感信息加密证书（所有商户固定使用同一个）
  │  │  │   │
  │  │  │   ├acp_sdk.properties ┈┈┈┈┈┈┈┈┈ 【重要】 生产环境配置文件样例（证书方式签名）（使用方式请看文件里的说明）
  │  │  │   │
  │  │  │   └acp_prod_verify_sign.cer ┈┈┈┈┈┈┈┈┈ 【重要】 生产环境验签公钥证书证书  （所有商户固定使用同一个）
  │  │  │
  │  │  ├生产环境证书和配置文件_SM2
  │  │  │   │
  │  │  │   ├acp_prod_enc_SM2.cer ┈┈┈┈┈┈┈┈┈ 【重要】生产环境敏感信息加密证书（所有商户固定使用同一个）
  │  │  │   │
  │  │  │   ├acp_sdk.properties ┈┈┈┈┈┈┈┈┈ 【重要】 生产环境配置文件样例（证书方式签名）（使用方式请看文件里的说明）
  │  │  │   │
  │  │  │   └acp_prod_verify_sign_SM2.cer ┈┈┈┈┈┈┈┈┈ 【重要】 生产环境验签公钥证书证书  （所有商户固定使用同一个）
  │  │  │
  │  │  │
  │  │  ├使用国密算法需做改动┈┈┈┈┈┈┈┈┈需要使用国密算法时的替换类和说明
  │  │  │
  │  │  ├机构接入需做改动
  │  │  │   ├acp_test_sign_inst.pfx ┈┈┈┈┈┈┈┈┈【重要】 收单机构接入的测试环境签名私钥证书（所有机构固定使用同一个）
  │  │  │   └机构接入需做改动.txt
  │  │  │
  │  │
  │  ├com.unionpay.acp.demo
  │  │  │
  │  │	├acp7Contract ┈┈┈┈┈┈┈┈┈签约支付交易相关
  │  │  │   │
  │  │  │   ├card
  │  │  │   │   ├Demo10_2_ContractCreate_Card.java┈┈┈┈┈签约下单示例类（前台）
  │  │  │	│   │
  │  │  │	│   ├Demo10_3_ContractSign_Card.java┈┈┈┈┈签约示例类（前台）
  │  │  │	│   │
  │  │  │   │   ├Demo10_4_ContractPaySms_Card.java┈┈┈┈┈签约支付短信示例类（前台）
  │  │  │	│   │
  │  │  │   │   ├Demo10_5_ContractPay_Card.java┈┈┈┈┈签约支付示例类（前台）
  │  │  │	│   │
  │  │  │   │   ├Demo10_6_ContractCancel_Card.java┈┈┈┈┈解除签约关系示例类（前台）
  │  │  │	│   │
  │  │  │   │   ├Demo10_7_ContractRoleQuery_Card.java┈┈┈┈┈签约方信息查询示例类（前台）
  │  │  │	│   │
  │  │  │   │   ├Demo10_8_DiscountListQuery_Card.java┈┈┈┈┈营销活动列表查询示例类（前台）
  │  │  │	│   │
  │  │  │   │   └Demo10_9_DiscountBalanceQuery_Card.java┈┈┈┈┈营销活动余额查询示例类（前台）
  │  │  │   │
  │  │  │   ├back
  │  │  │   │   ├Demo10_1_ContractDirectSignPreproc_Back.java┈┈┈┈┈签约预处理（后台）
  │  │  │	│   │
  │  │  │   │   ├Demo10_2_ContractDirectSignSms_Back.java┈┈┈┈┈签约短信示例类（后台）
  │  │  │	│   │
  │  │  │	│   ├Demo10_3_ContractDirectSign_Back.java┈┈┈┈┈签约示例类（后台）
  │  │  │	│   │
  │  │  │   │   ├Demo10_4_ContractCancel_Back.java┈┈┈┈┈解约示例类（后台）
  │  │  │	│   │
  │  │  │   │   ├Demo10_5_ContractCardListQuery_Back.java┈┈┈┈┈签约银行卡列表查询示例类（后台）
  │  │  │	│   │
  │  │  │   │   ├Demo10_6_ContractPaySms_Back.java┈┈┈┈┈支付短信示例类（后台）
  │  │  │	│   │
  │  │  │   │   ├Demo10_7_ContractPay_Back.java┈┈┈┈┈支付示例类（后台）
  │  │  │	│   │
  │  │  │   │   ├Demo10_11_DiscountListQuery_Back.java┈┈┈┈┈营销活动列表查询示例类（后台）
  │  │  │	│   │
  │  │  │   │   └Demo10_12_DiscountBalanceQuery_Back.java┈┈┈┈┈营销活动余额查询示例类（后台）
  │  │  │	│
  │  │  │   ├back
  │  │  │   │   ├Demo10_2_ContractCreate_CardH5.java┈┈┈┈┈签约下单_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   ├Demo10_3_ContractSign_CardH5.java┈┈┈┈┈签约_卡片版（H5）
  │  │  │	│   │
  │  │  │	│   ├Demo10_4_ContractPaySms_CardH5.java┈┈┈┈┈支付短信_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   ├Demo10_5_ContractPay_CardH5.java┈┈┈┈┈签约支付_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   ├Demo10_6_ContractCancel_CardH5.java┈┈┈┈┈解除签约_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   ├Demo10_7_ContractRoleQuery_CardH5.java┈┈┈┈┈签约方信息查询示例类_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   ├Demo10_8_DiscountListQuery_CardH5.java┈┈┈┈┈营销活动列表查询查询示例类_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   ├Demo10_9_DiscountBalanceQuery_CardH5.java┈┈┈┈┈营销活动余额查询查询示例类_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   ├Demo10_10_ContractSmallsumClose_CardH5.java┈┈┈┈┈小额免验关闭示例类_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   ├Demo10_10_ContractSmallsumOpen_CardH5.java┈┈┈┈┈小额免验开通示例类_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   ├Demo10_11_ContractAuthSms_CardH5.java┈┈┈┈┈预授权短信_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   ├Demo10_12_ContractAuth_CardH5.java┈┈┈┈┈预授权_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   ├Demo10_13_ContractAuthCancel_CardH5.java┈┈┈┈┈预授权撤销_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   ├Demo10_14_ContractAuthFinish_CardH5.java┈┈┈┈┈预授权完成_卡片版（H5）
  │  │  │	│   │
  │  │  │   │   └Demo10_15_ContractAuthFinishCancel_CardH5.java┈┈┈┈┈预授权完成撤销_卡片版（H5）
  │  │  │	│
  │  │  │	│
  │  │  │   ├Demo10_Trade_Cancel.java┈┈┈┈┈消费撤销示例类
  │  │  │   │
  │  │  │   ├Demo10_Trade_Query.java┈┈┈┈┈交易状态查询示例类
  │  │  │   │
  │  │  │   └Demo10_Trade_Refund.java┈┈┈┈┈退货示例类
  │  │  │
  │  │  ├Acp7NotifyDemo.java┈┈┈┈┈7.0.1后台通知demo类
  │  │  │
  │  │  ├DemoUtil.java┈┈┈┈┈demo工具类
  │  │  │
  │  │  └多个商户号各自使用自己的私钥证书（多证书）使用方法.txt    
  │  │   
  │  ├com.unionpay.acp.sdk
  │  │  │
  │  │  ├Acp7Service.java┈┈┈┈┈┈全渠道7.0.1SDK API接口类
  │  │  │
  │  │  ├CertUtil.java┈┈┈┈┈┈证书处理工具类
  │  │  │
  │  │  ├AesUtils.java┈┈┈┈┈┈aes加解密工具类
  │  │  │
  │  │  ├HttpsUtil.java┈┈┈┈┈后台交易http post通讯类
  │  │  │
  │  │  ├SDKConfig.java┈┈┈┈┈┈┈读取acp_sdk.properties属性文件并填装配置的属性的配置类
  │  │  │
  │  │  ├SDKConstants.java┈┈┈┈┈┈┈常量类
  │  │  │
  │  │  ├SDKUtil.java┈┈┈┈┈┈┈SDK工具类，包含了对报文的签名，验签等方法
  │  │  │
  │  │  └SecureUtil.java┈┈┈┈┈┈┈安全相关工具类
  │  │
  │  │
  │  └lib（如果JAVA项目中包含这些架包，则不需要导入）
  │   	     │
  │   	     ├bcpkix-jdk15on-166.jar
  │   	     │
  │   	     ├bcprov-jdk15on-166.jar---------注意包名后缀版本，低版本的bc包不支持sdk使用的部分方法
  │   	     │
  │   	     ├commons-codec-1.6.jar
  │   	     │
  │   	     ├commons-io-2.2.jar
  │   	     │
  │   	     ├commons-lang-2.5.jar
  │   	     │
  │   	     ├java8583.jar
  │   	     │
  │   	     ├json.jar
  │   	     │
  │   	     ├junit-4.11-SNAPSHOT-20120416-1530.jar
  │   	     │
  │   	     ├log4j-1.2.17.jar
  │   	     │
  │   	     ├servlet-api-2.5.jar
  │   	     │
  │   	     ├slf4j-api-1.5.11.jar
  │   	     │
  │   	     └slf4j-log4j12-1.5.11.jar
  ├acp_sdk.properties ┈┈┈┈【重要】测试环境配置文件，请求银联地址，私钥签名证书，验签公钥路径，多证书的配置文件（这个文件切换生产的时候要替换成生产环境的配置文件）
  │
  ├log4j.properties ┈┈┈┈LogUtil.java日志工具类的配置文件
  │
  ├req.properties ┈┈┈┈请求参数的配置文件
  │
  └readme.txt ┈┈┈┈┈┈┈┈┈使用说明文本

───────────
 **注意**

1.【接口规范】该接口参考文档位置：
      接口产品规范：open.unionpay.com帮助中心 下载  产品接口规范  《无跳转产品接口规范》,《04-中国银联全渠道支付平台指引（JSON版）产品卷 签约支付 卡片版（H5模式）》
      应答码规范：《平台接入接口规范-第5部分-附录》
      商户对账文件格式说明：《全渠道平台接入接口规范 第3部分 文件接口》

2.【测试商户号】开发包中使用的商户号777290058110097是open.unionpay.com注册的测试商户号，只能在入网测试环境使用；
      可以先使用这个商户调通交易(当然您也可以自己在这个网站注册一个777开头的测试商户号，自己注册后要开通权限：https://open.unionpay.com 登陆后 右上角我的测试-我的产品-将未测试的产品点击成测试状态，过10分钟后就有权限了）
      正式线上环境请替换成申请的正式商户号，并确保商户号有对应的权限，如果报了无此交易权限等错误，请联系您申请接入银联的业务人员确认您做的交易是否开通了对应的权限。
  
3.【关于配置文件】
      配置文件在src/assets文件夹下可以找到，src下面默认使用的是测试环境使用证书方式签名的配置文件。请按配置文件中的说明进行修改。
      使用时需要配置证书路径，证书文件除了生产环境的签名证书需要业务邮件发送下载方式下载，其余证书均在src/assets文件夹下面有提供，需要复制到配置文件配置的路径。

4.【测试过程遇到问题】
  1）优先在open平台中查找答案：
  	 调试过程中的问题或其他问题请在 https://open.unionpay.com/ajweb/help/faq/list 帮助中心 FAQ 搜索解决方案
             测试过程中产生的7位应答码问题疑问请在https://open.unionpay.com/ajweb/help/respCode/respCodeList 输入应答码搜索解决方案
  2）测试环境测试支付请使用测试卡号测试， FAQ搜索“测试卡”。
  3）切换生产环境要点请FAQ搜索“切换”。
  
5.【生产环境遇到问题】连接银联生产环境测试遇到的问题 如果通过open平台无法解决 请登陆merchant.unionpay.com 菜单"服务单管理"->"创建服务单"请求排查问题。

───────────

