企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 苹果代币支付签名算法 * 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": "超出订单金额",    //退款失败原因 } } ~~~