Java SDK 使用说明

简介

目前 Adapay 的 Java SDK 支持的交易模块包括 支付(Charge)、退款(Refund)、查询、关单功能,具体可参考 API文档

下载地址

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));
    }
}
  • 返回数据示例

不同事件异步消息返回数据,详见 异步消息数据示例