Skip to content

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

业务请求参数

字段名类型最大长度是否必输说明
mchNoString30商户号
mchOrderNoString64商户订单号(唯一)
currencyString10订单币种,可选值:USDT、USDC(参考CurrencyTypeEnum)
networkString30网络,可选值:Solana、Ethereum、Polygon、Arbitrum、Binance_smart_chain、Tron【维护中】(参考ChainTypeEnum)
amountBigDecimal长度20,小数位6订单金额
mchUserIdString32商户侧用户id
goodsGoods Type-商品说明
appIdString64应用id,商户平台创建应用分配
notifyUrlString256异步通知地址(订单状态回调)【可以在商户后台进行配置】
successUrlString256成功后跳转页面(商户侧)【可以在商户后台进行配置】
failUrlString256失败跳转页面(商户侧)【可以在商户后台进行配置】
priKeyString商户私钥
bizCodeInteger通道编号,不确定时不要传,由接口自动适配

示例代码

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个) 查询订单状态

业务请求参数

字段名类型最大长度是否必输说明
appIdString64应用id,商户后台创建
mchNoString30商户号
signTypeString10签名类型:RSA2默认
payOrderIdString30与mchOrderNo至少传1个支付订单Id
mchOrderNoString64与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、查询余额信息

功能描述:根据商户号、币种类型查询余额信息

业务请求参数

字段名类型最大长度是否必输说明
appIdString64应用id,商户后台创建
mchNoString30商户号
versionString10版本:v1.0
signTypeString10签名类型:RSA2默认
currencyString10币种,可选值: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());