苹果代币支付签名算法

  • KEY_WORD: 提供给小鹅通的密钥

  • nonce: 6 位随机字符

  • timestamp: 时间戳单位秒(5 分钟超时)

  • data :除上述以外的其他参数

/**
​
* 生成签名 *
* @param $data
* @param $nonce
* @param $timestamp
* @return string */
public static function generateSign($data, $nonce, $timestamp)
​{
    $secret = self::APP_SECRET;
    $timestamp = strval($timestamp);
    is_array($data) && $data = self::setSignArrData($data);
    $arr = compact('data', 'nonce', 'timestamp', 'secret');
    sort($arr);
    return md5(implode("", $arr));
}
​
/**
* 生成签名 data *
* @param $data
* @return string */
public static function setSignArrData($data)
{
    foreach($data as $each_key => $each_param){
    $data[$each_key] = strval($each_param);
}
    sort($data);
    return implode("", $data);
}
  • function setSignArrData()

    • data 对象的每一个值都需要转字符串

    • data 对象排序后,无符号拼接成字符串

  • function generateSign()

    • 时间戳(单位秒) 转成字符串,

    • data, nonce, timestamp, key_word 字段 排序后,无符号拼接成字符串

  • 最后 md5 加密,获得签名

返回值

返回格式

  • code : 状态码 0 成功 1 失败

  • msg :提示语

  • data :其他值

{
    "code": 1,
    "msg": "系统异常",
    "data": []
}

接口

检查订单是否付款成功接口(提供给小鹅通查询)

  • 调用支付后,小鹅通主动查询订单状态(避免支付回调错误)

  • url :**

  • method :POST

  • content-type :application/json

入参

字段名 类型 示例 备注
sign string 5b94924ae2aa36dfb7b024839b363754 签名
nonce string abcedf 随机字符串
timestamp string 1634550379 当前时间戳
out_trade_no string oo_6247cdccddbc5_9xPY0N4g 小鹅订单号

示例

{
    "sign": "5b94924ae2aa36dfb7b024839b363754",
    "timestamp": "1634550379",
    "out_trade_no": "oo_5ac1dd24803ae_GtfAOxiS1",
    "transaction_id": "42000000682018040207188274111",
    "nonce": "abcdef"
}

response

{
    "code": 0,    // 0 访问成功 1 系统错误 2 签名错误 3 参数错误 4 查无此单
    "msg": "ok",
    "data": {
        "order_state": 'UNPAID',      // UNPAID 未支付 FAILED 付款失败 DELETED 已删除 PAID 已付款 REFUND 已退款 CLOSED 已关闭
        "out_trade_id": 'oo_6247cdccddbc5_9xPY0N4g',//小鹅订单号
        "transaction_id": '2022040222001406041408616653'//交易号 
   }
}

退款通知(提供给小鹅通)

  • 小鹅通通知接入方发起退款,校验退款金额是否超出,并发起扣款

  • url :**

  • method :POST

  • content-type :application/json

入参

字段名 类型 示例 备注
sign string 5b94924ae2aa36df b7b024839b363754 签名
nonce string abcedf 随机字符串
timestamp string 1634550379 当前时间戳
out_trade_no string oo_6247cdccddbc5_9xPY0N4g 小鹅订单号
out_refund_no string oo_5c7799b5cb44c_UVUwvSmv 退款唯一交易编号
amount int 100 退款金额,单位分

示例

{
    "sign": "5b94924ae2aa36dfb7b024839b363754",
    "timestamp": "1634550379",
    "nonce": "abcdef",
    "out_trade_no": "oo_5ac1dd24803ae_GtfAOxiS1",
    "out_refund_no": "oo_5c7799b5cb44c_UVUwvSmv",
    "transaction_id": "42000000682018040207188274111",
    "amount": 100
}

response

{
    "code": 0,    // 0 访问成功 1 系统错误 2 签名错误 3 参数错误 4 查无此单
    "msg": "ok",
    "data": {
        "refund_status": 2,         //1 退款成功, 2 退款失败
        "reason": "超出订单金额",    //退款失败原因
    }
}

results matching ""

    No results matching ""