SDK 与示例
平台提供 Java / PHP / Go 三语言 SDK 与示例:签名/验签、下单/查询/余额、回调验签服务,零第三方依赖,与平台签名实现做过逐字节一致性校验。沙箱开通时由平台交付,在线下载稍后提供。
下单示例
go
client := &sunpay.Client{BaseURL: base, MerchantNo: "M100001", AppID: "app_10001",
KeyVersion: 1, PrivateKeyPEM: pem}
resp, err := client.PayCreate(map[string]any{
"mch_order_no": "T20260601001", "product_code": "QRPH",
"amount": int64(10000), "currency": "PHP",
})php
$client = new SunPayClient($base, 'M100001', 'app_10001', 1, $privatePem);
$resp = $client->payCreate([
'mch_order_no' => 'T20260601001', 'product_code' => 'QRPH',
'amount' => 10000, 'currency' => 'PHP',
]);java
SunPayClient client = new SunPayClient(base, "M100001", "app_10001", 1, privatePem);
SunPayClient.Response resp = client.payCreate(Map.of(
"mch_order_no", "T20260601001", "product_code", "QRPH",
"amount", 10000L, "currency", "PHP"));- Go:
go test一致性自测;demo 含回调验签服务。 - PHP:单文件接入,仅需
openssl+curl扩展(PHP 8.0+)。 - Java:Java 11+,零第三方依赖(含回调验签与内置回调服务示例)。
回调验签要点
- 读取原始请求体(JSON);
- 取出
sign与key_version,用对应版本的平台公钥验签(canonical 规则同 签名算法); - 验签通过 → 按「
platform_order_no+ 通知类型」幂等处理(代付另有payout.reversed冲正通知,与终态通知是两类,见 代付文档)→ 返回 HTTP 200 + 纯文本success; - 验签失败 → 不处理、不返回
success。
三语言 SDK 都内置了 verifyCallback,并附可直接运行的回调服务示例。
生产密钥生成
bash
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out merchant_private.pem
openssl pkey -in merchant_private.pem -pubout -out merchant_public.pemWARNING
私钥只能在服务端使用:不进前端/JS、不进日志、不进代码仓库;公钥(PEM)注册给平台。沙箱联调用的测试密钥严禁用于生产。