代收异步通知
# 代收异步通知
请注意:当前业务只有在订单支付成功的时候才有回调通知接收到。
进行验签时,要用 **
商户后台-收付款配置-API配置
中提供的平台公钥
**进行解密!!!数字货币有两种特殊情况:无单模式以及支付金额与下单金额不符,为此我们将异步通知进行了调整,如下:
1.如果是上述特殊情况,我们会生成一笔新的成功订单进行通知,您需要根据通知的信息进行验证,并生成新的订单;
2.根据通知的商户订单号(orderNum)查询是否您的系统存在该订单,建议您在下单成功时同时存储我们的平台订单号(platOrderNum),做双步校验;
3.根据通知的参数specialStatus(0-默认,1-特殊状态)判断,如果为1则判断为上述特殊情况.
TopPay结果异步通知后,需响应 **
SUCCESS
**字符串否则TopPay将继续向下游发起5次通知
import com.google.gson.JsonObject;
public class TopPayNotify {
// 测试账号
private static final String MCH_ID = "PH0000001"; // 商户号
private static final String PLAT_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2JoMfFqLsSJjAiCahEnlP3aRj8yCT+WHzR+VvPBTw9S1i7iYWb+MY09CG/HYuHF4+IxshXDJygmndxKf/esuwPybS8mAd//yubHpmZsmBqg1FffT8VH1APa6ZRWASUp4U01ZrbCCp35QA8FuWrJGMJxGx4xk7KUtV2yujxC8noQIDAQAB"; // 平台公钥
public static void main(String[] args) throws Exception {
// 代收
JsonObject notifyBody = new jsonObject();
boolean verifyResult = TopPayRequestUtil.verifySign(notifyBody,PLAT_PUBLIC_KEY);
if (verifyResult) {
// ... 签名验证通过,处理正常的业务逻辑
} else {
// ... 签名验证错误
}
}
}
# 通知参数
参数 | 描述 | 示例 |
---|---|---|
platOrderNum | 平台订单号 | BK_1563278763273 |
orderNum | 商户订单号 | T1231511321515 |
mchNo | 商户编号 | PH0000001 |
amount | 代收金额 | 100000 |
fee | 手续费 | 500 |
status | 状态 | SUCCESS ,参考订单状态 |
hashCode | 交易哈希 | 5e5c356af0ewrhgnf3d757h8a6a5506cc66354620 |
sendAddress | 发送地址 | TDBbbeAB32WE576DVGE82GEC5BhsZs4 |
inAddress | 接收地址 | TDBbbeAB32WE576DVGE82GEC5BhsZs4 |
mchUserId | 商户用户ID | M00001 |
specialStatus | 特殊状态(0-默认,1-特殊状态) | 0 |
currency | 币种 | USDT |
netWork | 链网络 | TRC20 |
version | 版本号 | 1 |
sign | 平台签名 | ja6R8eukQY9jc8zrhtf34654ungj7u8sdgdfjfs |