Java SDK 使用说明¶
SDK 版本记录¶
版本 |
日期 |
说明 |
v1.0.2 |
2019-08-30 |
优化接口返回 |
v1.0.1 |
2019-08-22 |
优化接口调用 |
v1.0.0 |
2019-08-08 |
Adapay 初版 |
版本要求¶
Java 8
接入方法¶
下载 SDK
下载文件里包含 SDK 和 Demo 两个目录。SDK 目录下为待添加到项目中的文件,Demo 目录下为示例项目,供接入时参考使用。
获取 API Key
API Key 是您在 Adapay 系统中的身份标识,凭此可使用 Adapay 提供的 SDK 以及 API 服务
API Key 获取路径:「控制台」->「商户信息管理」->「证书管理」
privateKey(RSA 私钥)
privateKey 为您本地生成的 RSA 私钥, SDK 在与 Adapay 服务端进行接口请求时,会使用此私钥进行加密。
对应的公钥请上传至「控制台」->「商户信息管理」->「证书管理」
publicKey(RSA 公钥)
publicKey 是 Adapay 为您生成的 RSA 公钥,SDK 在与 Adapay 服务端进行接口请求时 SDK 需要 publicKey 进行解签。
publicKey 可通过「控制台」->「商户信息管理」->「证书管理」进行下载。
导入第三方依赖库
接入本 SDK 需依赖以下第三方库
httpclient-4.5.2
spring-context-5.1.8.RELEASE
org.eclipse.paho.client.mqttv3-1.2.0
fastjson-1.2.48
INotifyCallback 和异步监听
SDK 需要设置异步监听,请实现 INotifyCallback 接口并启动异步监听,以实现异步通知处理。详情请参考 异步消息 。
使用方法¶
系统初始化
在使用 Adapay 前,请先完成系统初始化设置,否则可能导致交易异常。
调用示例
AdaPay.apiKey = "Your apiKey";
AdaPay.pubKey = "Your pubKey;
AdaPay.privateKey = "Your privateKey;
AdaPay.live = false;
AdaPay.iNotifyCallback = new YourNotifyCallback();
AdaPay.startNotifyListener();
发起支付¶
当您想发起一次支付请求时需要通过 Adapay 提供的创建方法获取一个新的 Charge对象,您可使用此 Charge对象 发起支付。对于支付结果,Adapay 会发送 异步消息通知_ 告知。
调用示例
Map<String, Object> chargeParams = new HashMap<String, Object>(10);
chargeParams.put("app_id", "your appid");
chargeParams.put("order_no", "jsdk_charge"+System.currentTimeMillis());
chargeParams.put("pay_channel", PayChannelEnum.ALIPAY_QR.getCode());
chargeParams.put("amount", "0.01");
chargeParams.put("currency", "cny");
chargeParams.put("subject", "your goods subject");
chargeParams.put("body", "your goods body");
Charge charge = Charge.create(chargeParams);
System.out.println("charge result="+JSON.toJSONString(charge));
参数说明
调用参数详见 创建支付 。
支付订单查询¶
查询已存在的 Charge对象
调用示例
Charge charge = Charge.query(id);
System.out.println("query result="+JSON.toJSONString(charge));
参数说明
调用参数详见 支付查询 。
发起退款¶
当您的业务需要发起退款时,可通过 Adapay 系统提供的创建 Refund对象 方法创建一个退款对象,发起退款请求。
调用示例
Map<String, Object> refundParams = new HashMap<String, Object>(2);
refundParams.put("amount", "0.01");
refundParams.put("app_id", "your appid");
refundParams.put("order_no", "jsdk_refund_"+System.currentTimeMillis());
Refund refund = Refund.create(chargeId, refundParams);
System.out.println("refund result="+JSON.toJSONString(refund));
参数说明
调用参数详见 创建退款 。
退款查询¶
通过 Refund对象 的 id 查询一个已创建的退款记录。
调用示例
Map<String, Object> chargeParams = new HashMap<String, Object>(1);
chargeParams.put("charge_id", chargeId);
Refund refund = Refund.query(chargeParams);
System.out.println("query by chargeid refund result="+JSON.toJSONString(refund));
参数说明
调用参数详见 退款查询 。
关闭订单¶
针对已经创建的 Charge对象,您可以调用关单接口进行交易的关闭。
调用示例
Charge charge = Charge.close(id);
System.out.println("close charge result="+JSON.toJSONString(charge));
参数说明
调用参数详见 关单 。
异步消息监听¶
Adapay 在支付成功、支付失败、关单成功、关单失败、退款成功、退款失败时,都会推送终态结果给到您,请务必监听异步结果并做好并发处理。
请实现以下方法
示例
import com.alibaba.fastjson.JSON;
import com.huifu.adapay.model.charge.Charge;
import com.huifu.adapay.model.refund.Refund;
import com.huifu.adapay.notify.INotifyCallback;
public class NotifyCallbackDemo implements INotifyCallback {
@Override
public void chargeSuccessMessageArrived(Charge charge) throws Exception {
System.out.println("receive chargeSuccess msg=" + JSON.toJSONString(charge));
}
@Override
public void chargeFailedMessageArrived(Charge charge) throws Exception {
System.out.println("receive chargeFailed msg=" + JSON.toJSONString(charge));
}
@Override
public void chargeCloseSuccessMessageArrived(Charge charge) throws Exception {
System.out.println("receive chargeCloseSuccess msg=" + JSON.toJSONString(charge));
}
@Override
public void chargeCloseFailedMessageArrived(Charge charge) throws Exception {
System.out.println("receive chargeCloseFailed msg=" + JSON.toJSONString(charge));
}
@Override
public void refundSuccessMessageArrived(Refund refund) throws Exception {
System.out.println("receive refundSuccess msg=" + JSON.toJSONString(refund));
}
@Override
public void refundFailedMessageArrived(Refund refund) throws Exception {
System.out.println("receive refundFailed msg=" + JSON.toJSONString(refund));
}
}
返回数据示例
不同事件异步消息返回数据,详见 异步消息数据示例 。