{
"code": "00000000",
"msg": "Success",
"data": {
"outTradeNo": "394916B2ADFD4D6CAD6CC624C88990D0",
"merchantId": "2022000000008454",
"tradeNo": "111781085063240962",
"amount": "10.30",
"currency": "PHP",
"status": "success",
"reference": "test",
"responseCode": "00000000",
"responseMsg": "Success",
"redeemCode": "",
"payFinishTime": "2024-04-17T06:35:09 +0000",
"transId": "20240418SAARNBARNB1B44410558522170"
}
}{
"errMessage": "成功",
"errCode": "00000000"
}付款
付款结果通知
当付款成功后,通过开发者webhook配置,开发平台会发送通知给商户,当接受不成功或者发送失败时, 会重发8次, 时间间隔为5s,20s,1m,5m,30m,2h,24h
WEBHOOK
paymentAdvice
{
"code": "00000000",
"msg": "Success",
"data": {
"outTradeNo": "394916B2ADFD4D6CAD6CC624C88990D0",
"merchantId": "2022000000008454",
"tradeNo": "111781085063240962",
"amount": "10.30",
"currency": "PHP",
"status": "success",
"reference": "test",
"responseCode": "00000000",
"responseMsg": "Success",
"redeemCode": "",
"payFinishTime": "2024-04-17T06:35:09 +0000",
"transId": "20240418SAARNBARNB1B44410558522170"
}
}{
"errMessage": "成功",
"errCode": "00000000"
}Authorizations
Example: MIIEpQIBAAKCAQEA...(Base64编码的签名字符串)
加签
加签是开放平台和商户对于交互消息完整性的校验。加签行为主要发生两个部分:
- 商户服务器端针对向PayAllGlobal开放平台发送的请求报文进行加签;
- PayAllGlobal开放平台针对通知商户的异步消息进行加签。 PayAllGlobal平台要求使用 RSA 私钥进行加签, 使用 RSA 公钥进行验签。 因此,在以上两部分描述的交互中, 存在商户公私钥、PayAllGlobal 公私钥,开发者需要使用商户私钥,对第一部分报文进行加签,使用 PayAllGlobal 公钥对第二部分消息进行验签。
加签规则如下:
使用商户私钥对请求体进行 SHA256withRSA 签名后,再进行 Base64 编码的结果。
- 使用 商户私钥对待
request.body进行签名(SHA256WithRSA 计算原始数据的SHA-256哈希值。 使用私钥对哈希值进行签名,即使用私钥对哈希值进行RSA加密。此时得到的加密结果就是数字签名。);
Signature signature = Signature.getInstance("SHA256withRSA"); signature.initSign(privateKey); // 计算 SHA256withRSA 签名时,需要以 utf-8 的编码转换 byte 流,否则可能导致含中文参数的签名计算不正确 signature.update(request.body); byte[] signedHash = signature.sign();
- 将加签内容进行 Base64 编码;
String signature = Base64.getEncoder().encodeToString(signedHash);
- 将编码后的内容放在请求头部 signature 参数中。 注意,加签是对 request.body 进行签名,当查询等 request.body 为空时,则无需加签。
Headers
使用平台私钥对requestBody做了加签, 请使用平台公钥对requestBody做签名验证
Body
application/json