Appearance
Hexpay SDK
简介
欢迎使用 Hexpay支付收银台 SDK!
适用于 Java 语言、JDK 版本 1.8 及以上的开发环境
为帮助你 高效对接支付收银台能力,文档将以「最简流程」为核心:通过 初始化配置 → 调用收银台 → 处理结果回调 3 步,即可快速完成支付功能集成。
SDK坐标
在pom.xml中导入dependency坐标,刷新Maven
- xml
<dependency> <groupId>io.gitee.hexbit</groupId> <artifactId>hexpay-sdk-java</artifactId> <version>1.0.13</version> </dependency>
指定环境:Hexpay.overrideApiBase(baseUrl);
SDK使用示例
1、创建交易订单
功能描述:商户传订单信息创建交易订单返回含payOrderId的收银台URL
业务请求参数
| 字段名 | 类型 | 最大长度 | 是否必输 | 说明 |
|---|---|---|---|---|
| mchNo | String | 30 | 是 | 商户号 |
| mchOrderNo | String | 64 | 是 | 商户订单号(唯一) |
| currency | String | 10 | 是 | 订单币种,可选值:USDT、USDC(参考CurrencyTypeEnum) |
| network | String | 30 | 是 | 网络,可选值:Solana、Ethereum、Polygon、Arbitrum、Binance_smart_chain、Tron【维护中】(参考ChainTypeEnum) |
| amount | BigDecimal | 长度20,小数位6 | 是 | 订单金额 |
| mchUserId | String | 32 | 是 | 商户侧用户id |
| goods | Goods Type | - | 是 | 商品说明 |
| appId | String | 64 | 是 | 应用id,商户平台创建应用分配 |
| notifyUrl | String | 256 | 否 | 异步通知地址(订单状态回调)【可以在商户后台进行配置】 |
| successUrl | String | 256 | 否 | 成功后跳转页面(商户侧)【可以在商户后台进行配置】 |
| failUrl | String | 256 | 否 | 失败跳转页面(商户侧)【可以在商户后台进行配置】 |
| priKey | String | 是 | 商户私钥 | |
| bizCode | Integer | 否 | 通道编号,不确定时不要传,由接口自动适配 |
示例代码
java
public class HexPayCreateTrade {
public static void main(String[] args) {
//初始化SDK :传入在hexpay创建的的appId、sign-generator生成的priKey(商户私钥)
HexpayClient hexpayClient = HexpayClient.getInstance(Hexpay.appId, Hexpay.priKey);
//构造请求参数以调用接口
PayOrderCreateRequest request = new PayOrderCreateRequest();
PayOrderCreateReqModel model = new PayOrderCreateReqModel();
//业务类型(0-稳定币支付,1-法币支付)
model.setBizCode(0);
// 设置商户号
model.setMchNo(Hexpay.mchNo);
// 设置应用Id
model.setAppId(Hexpay.appId);
// 设置订单币种
model.setCurrency("USDC");
// 设置商户订单号
model.setMchOrderNo("47382118895");
// 设置订单总金额
model.setAmount(3l);
// 设置网络
model.setNetwork("Solana");
// 设置用户id
model.setMchUserId("134673");
// 设置商品信息
Goods goods = new Goods();
goods.setGoodsName("t-shirt");
goods.setGoodsType("A sleek, breathable cotton t-shirt with a classic fit, perfect for everyday comfort and effortless style.");
goods.setGoodsDetail("shop");
model.setGoods(goods);
request.setBizModel(model);
try {
PayOrderCreateResponse response = hexpayClient.execute(request);
_log.info("response:{}", response);
_log.info("getData():{}", response.getData());
} catch (HexpayException e) {
_log.error(e.getMessage());
}
}
}2、查询订单状态
功能描述:根据[支付订单号/商户订单号] (至少传1个) 查询订单状态
业务请求参数
| 字段名 | 类型 | 最大长度 | 是否必输 | 说明 |
|---|---|---|---|---|
| appId | String | 64 | 是 | 应用id,商户后台创建 |
| mchNo | String | 30 | 是 | 商户号 |
| signType | String | 10 | 是 | 签名类型:RSA2默认 |
| payOrderId | String | 30 | 与mchOrderNo至少传1个 | 支付订单Id |
| mchOrderNo | String | 64 | 与payOrderId至少传1个 | 商户订单号 |
示例代码
java
public class HexPayCreateTrade {
public static void main(String[] args) {
//初始化SDK :传入在hexpay创建的的appId、sign-generator生成的priKey(商户私钥)
HexpayClient hexpayClient = HexpayClient.getInstance(Hexpay.appId, Hexpay.priKey);
//构造请求参数以调用接口
PayOrderQueryRequest request = new PayOrderQueryRequest();
PayOrderQueryReqModel model = new PayOrderQueryReqModel();
// 设置商户号
model.setMchNo(Hexpay.mchNo);
// 设置应用Id
model.setAppId(Hexpay.appId);
// 设置商户订单号
model.setMchOrderNo("47382118895");
// 设置支付订单Id
model.setPayOrderId("P1947931395550150657");
request.setBizModel(model);
// 调用
PayOrderQueryResponse response = hexpayClient.execute(request);
_log.info("response.getData():{}", response.getData());
_log.info("response:{}", response);
}
}3、查询余额信息
功能描述:根据商户号、币种类型查询余额信息
业务请求参数
| 字段名 | 类型 | 最大长度 | 是否必输 | 说明 |
|---|---|---|---|---|
| appId | String | 64 | 是 | 应用id,商户后台创建 |
| mchNo | String | 30 | 是 | 商户号 |
| version | String | 10 | 是 | 版本:v1.0 |
| signType | String | 10 | 是 | 签名类型:RSA2默认 |
| currency | String | 10 | 否 | 币种,可选值:USDT、USDC(参考CurrencyTypeEnum) |
java
public class HexPayBalanceQuery {
public static void main(String[] args) {
//初始化SDK :传入在hexpay创建的的appId、sign-generator生成的priKey(商户私钥)
HexpayClient hexpayClient = HexpayClient.getInstance(Hexpay.appId, Hexpay.priKey);
//构造请求参数以调用接口
BalanceQueryRequest request = new BalanceQueryRequest();
BalanceQueryReqModel model = new BalanceQueryReqModel();
// 设置币种
model.setCurrency(CurrencyTypeEnum.USDC.getValue());
// 设置商户号
model.setMchNo("M1752564528");
// 设置应用Id
model.setAppId(appId);
request.setBizModel(model);
//调用
BalanceQueryResponse response = hexpayClient.execute(request);
_log.info("response:{}", response);
_log.info("response.getData():{}", response.getData());
}
}4、响应验签
功能描述:使用平台私钥对系统的异步回调信息进行验签
java
/**
* 验签参数:
* 1、响应参数jsonObject
* 2、平台公钥Hexpay.PLAT_FORM_PUB_KEY
* 3、签名值sign
**/
RSA2Utils.verify(jsonObject, Hexpay.PLAT_FORM_PUB_KEY, jsonObject.get("sign").toString());