Основные шаги
- Предположим, что все отправляемые или получаемые данные образуют набор M
- Параметры из набора M, которые участвуют в подписи, необходимо отсортировать по имени параметра в порядке возрастания ASCII (лексикографический порядок)
- Сформировать строку
stringAв формате URL-параметров (key1=value1&key2=value2...) - В конце
stringAдобавить&appSecret=ключ, чтобы получить строкуstringSignTemp - Выполнить операцию MD5 для
stringSignTemp - Преобразовать полученную строку полностью в верхний регистр, чтобы получить итоговое значение
signature
Важные правила
Пожалуйста, обратите особое внимание на следующие правила:
- Параметры должны быть отсортированы по ASCII-коду имени параметра (лексикографический порядок)
- Имена параметров чувствительны к регистру
- Параметр
signature, передаваемый в запросе, не участвует в формировании подписи; сгенерированная подпись используется для проверки значенияsignature - Интерфейс может добавлять новые поля, поэтому при проверке подписи необходимо поддерживать расширенные параметры
Пример (PHP)
Предположим, что передаются следующие параметры:
appId: 12345
chainType: 1
merchantOrderNo: 123123123123
productName: GoodsШаг 1: Сортировка параметров
Удалите параметры, которые не участвуют в подписи, затем отсортируйте параметры, участвующие в подписи, в формате key=value:
$stringA = 'appId=12345&chainType=1&merchantOrderNo=123123123123';Шаг 2: Добавление секретного ключа
$stringSignTemp = $stringA.'&appSecret=SECRET_KEY';Шаг 3: MD5 шифрование
$signature = md5($stringSignTemp);Шаг 4: Преобразование в верхний регистр
$signature = strtoupper($signature);