Skip to main content

Java

本文档用于帮助Java应用程序与Ksher支付网关进行集成。

准备#

  • Java 11

    - 已经在Java 11环境进行测试和运行。

  • Ksher 沙箱账号

    - 申请沙箱账号,请联系 support@ksher.com

  • API_URL

    - 除了沙箱账号外,您还将收到一个API_URL:s[指定名称].vip.ksher.net。

  • API_TOKEN

    - 使用给定的沙箱账号登录到API_URL并获得令牌。请参见 如何获取API令牌

如何安装#

在项目的pom.xml文件中添加的依赖项,具体请查看文档

没有找到包#

如果提示没有找到包,请更新settings.xml文件,具体请查看文档

如何使用#

首先,您需要初始化支付对象,然后您可以使用它来:

  • 初始化支付对象
  • 创建订单
  • 查询订单状态
  • 订单退款

初始化支付对象#

Ksher 支付网关有多种API类型:

  • Redirect API 用于PC端和移动端集成
  • Settlement API 用于查询结算信息
  • Miniapp API 用于微信和支付宝小程序集成
  • Event API 用于检查已发送事件
  • C scan B API 用于 客户 扫描 商户 支付码,或者Kiosk集成
  • B scan C API 用于 商户 扫码 客户 支付码,或者POS集成

具体内容可以查看文档

当前Java API 仅支持 Redirect APIC scan B API

Redirect API#

String gateway_domain = "https://sandboxbkk.vip.ksher.net";
String token = "testtoken1234";
KsherPay ksherPay = new KsherPay(gateway_domain, token, KsherPay.ApiType.REDIRECT);

C Scan B API#

String gateway_domain = "https://sandboxbkk.vip.ksher.net";
String token = "testtoken1234";
KsherPay ksherPay = new KsherPay(gateway_domain, token, KsherPay.ApiType.CSCANB);

创建订单#

merchant_order_id 必须是唯一的,否则请求将会报错

要创建新的订单,每种类型的API所需的参数略有不同

Redirect API#

HashMap<String, String> data = new HashMap<>();
Date date = Calendar.getInstance().getTime();
DateFormat dateFormat = new SimpleDateFormat("yyyyMMddhhmmss");
String orderId = "OrderAt_" + dateFormat.format(date);
data.put("amount", "100");
data.put("redirect_url", "https://www.google.com");
data.put("redirect_url_fail", "https://www.yahoo.com");
data.put("merchant_order_id", orderId);
KsherPay ksherPay = new KsherPay(gateway_domain, token, KsherPay.ApiType.REDIRECT);
HashMap<String, String> resp = ksherPay.create(data);
System.out.println("create order's resp : " + resp);

C Scan B API#

对于C Scan B API,不需要redirect_url,您可以一次指定一个通道。

HashMap<String, String> data = new HashMap<>();
Date date = Calendar.getInstance().getTime();
DateFormat dateFormat = new SimpleDateFormat("yyyyMMddhhmmss");
String orderId = "OrderAt_" + dateFormat.format(date);
data.put("amount", "100");
data.put("channel", "truemoney");
data.put("merchant_order_id", orderId);
KsherPay ksherPay = new KsherPay(gateway_domain, token, KsherPay.ApiType.CSCANB);
HashMap<String, String> resp = ksherPay.create(data);
System.out.println("create order's resp : " + resp);

查询订单状态#

resp = ksherPay.query(orderId);

退款#

Refund_id 必须是唯一的,否则请求将会报错

Sting amount = "100"; // this mean refund 1 bath
resp = ksherPay.refund(orderId,"refund_" + orderId, data.get("amount"));