Skip to content

SDK 快速上手 ​

1. 获取密钥 ​

登录运营平台(:10900)→ 商户管理 → 应用管理 → 重置密钥,得到 appSecret(32 位随机串)。

2. 初始化客户端 ​

java
JeepayClient client = new JeepayClient(
        "http://<服务器IP>:9216",   // 支付网关
        "你的appSecret");           // 商户应用密钥

3. 完整流程示例 ​

java
import com.alibaba.fastjson.JSONObject;
import com.jeepay.sdk.JeepayClient;
import com.jeepay.sdk.JeepayResponse;
import com.jeepay.sdk.SignUtils;
import com.jeepay.sdk.model.*;
import java.util.Map;

public class QuickStart {
    public static void main(String[] args) {
        JeepayClient client = new JeepayClient("http://<服务器IP>:9216", "你的appSecret");
        String mchOrderNo = "QS-" + System.currentTimeMillis();

        // 统一下单
        JeepayResponse resp = client.unifiedOrder(new UnifiedOrderRequest()
                .mchNo("M1690858842671").appId("appId-demo")
                .mchOrderNo(mchOrderNo)
                .wayCode("qr_cashier").amount(100L).currency("CNY")
                .subject("测试商品").body("快速上手示例")
                .notifyUrl("https://your.domain/notify")
                .toParams());
        System.out.println("payOrderId=" + resp.getString("payOrderId"));
        System.out.println("payData=" + resp.getString("payData"));

        // 查单
        JeepayResponse q = client.queryOrder(new QueryOrderRequest()
                .mchNo("M1690858842671").appId("appId-demo")
                .mchOrderNo(mchOrderNo).toParams());
        System.out.println("state=" + q.getByte("state"));

        // 退款
        client.refundOrder(new RefundOrderRequest()
                .mchNo("M1690858842671").appId("appId-demo")
                .mchOrderNo(mchOrderNo)
                .mchRefundNo("RF-" + System.currentTimeMillis())
                .refundAmount(100L).currency("CNY")
                .refundReason("测试退款").toParams());
    }
}

4. 回调验签 ​

java
// 支付成功后平台向 notifyUrl 发送 form 表单参数(含 sign)
Map<String, Object> params = ...; // 从 HttpServletRequest 解析
String sign = String.valueOf(params.get("sign"));
boolean pass = SignUtils.verifySign(params, appSecret, sign);
if (pass) {
    // 校验金额与订单状态后,处理业务并响应 success
    response.getWriter().print("success");
}

Demo 工程 ​

仓库自带可运行 Demo:/www/wwwroot/jeepay/demos/java(本地仓库 demos/java),演示统一下单、支付查单、回调验签三个场景。

bash
# Maven 方式
mvn -f demos/java/pom.xml compile exec:java -Dexec.mainClass=Main

# 修改 Main.java 顶部的 GATEWAY_URL / MCH_NO / APP_ID / APP_SECRET 后运行

运行输出示例(未配置真实商户时,签名校验通过、业务侧返回商户不存在属正常现象):

text
[1] 统一下单 POST /api/pay/unifiedOrder
请求参数: {"mchNo":"M1690858842671","appId":"your-app-id",...}
下单结果: code=9999, msg=商户或商户应用不存在

[3] 回调验签演示(模拟支付成功异步通知参数)
平台下发签名: B822C46E7D73C293104A9A78FAFBFA40
本地验签结果: 通过

5. 投诉接口 ​

java
JeepayClient client = new JeepayClient("http://<服务器IP>:9216", appSecret);

// 分页查询(X-Api-Key,密钥为服务商投诉 API 密钥)
client.complaintList("服务商投诉API密钥",
        new ComplaintQueryRequest().pageNumber(1).pageSize(10).toParams());

// 商户在线回复 / 完结(appSecret 签名)
client.complaintReply(appSecret, mchNo, appId, "202601050001", "已与用户协商处理完毕");
client.complaintFinish(appSecret, mchNo, appId, "202601050001");