代收异步通知

# 代收异步通知

  • 请注意:当前代收业务只有在订单支付成功的时候才有回调通知
  • 进行验签时,要用 **商户后台-收付款配置-API配置中提供的平台公钥**进行解密!!!
  • 接受异步通知后,需响应 SUCCESS 字符串
  • 否则TopPay将继续发起5次通知

import com.google.gson.JsonObject;

public class TopPayNotify {
  // 测试账号
  private static final String MCH_NO = "PHOT000001";  // 商户号
  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 {
      // ... 签名验证错误
    }
  }
}

<?php

$res = json_decode(file_get_contents('php://input'), true);
$platSign = $res['platSign'];
unset($res['platSign']);
$public_key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFJ/AmUV4Z8udG8aOBUt/kEwc/DbxF5Gtfw6Y00NHQ4Pz2X2x9IxjUZxn2dnFxmrmhqKNlfwXOqyejhBzi0pSHyGoI4XP9IEfZGO6YkSb9DCY1ZxX8fDl2G+tPCbWYTVO4JutFmzTWgk1Uhhu6L9dlOMUHvZf3/6czA/a9C7azXwIDAQAB';
$decryptSign = public_key_decrypt($platSign, $public_key);

$params = $res;
ksort($params);
$params_str = '';
foreach ($params as $key => $val) {
    $params_str = $params_str . $val;
}

if($params_str == $decryptSign) {
    if($res['code'] == '00') {
        echo 'success';
    }
    else {
        echo 'fail';
    }
}
else {
    echo 'fail';
}

function public_key_decrypt($data, $public_key)
{
    $public_key = '-----BEGIN PUBLIC KEY-----'."\n".$public_key."\n".'-----END PUBLIC KEY-----';
    $data = base64_decode($data);
    $pu_key =  openssl_pkey_get_public($public_key);
    $crypto = '';
    foreach (str_split($data, 128) as $chunk) {
        openssl_public_decrypt($chunk, $decryptData, $pu_key);
        $crypto .= $decryptData;
    }

    return $crypto;
}

# 通知参数

参数 描述 示例
platOrderNum 平台订单号 BK_1563278763273
orderNum 商户订单号 T1231511321515
method 支付方式 Requested method
name 客户名称 Neo
amount 代收金额 100000
fee 手续费 500
customerName 客户名 [email protected]
customerEmail 邮箱 123456798
customerPhone 手机号 123456798
status 状态 SUCCESS ,参考订单状态
version 版本号 1
sign 平台签名 ja6R8eukQY9jc8zrhtf34654ungj7u8sdgdfjfs