苹果代币支付签名算法
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": "超出订单金额", //退款失败原因
}
}