ДеньгиOnline

2017-07-29 03:29:09

Алгоритм получения ключа для подписи запроса

Ключ формируется на основании параметров, передаваемых в запросе.

Образец запроса:

<request> 
	<project>1290</project> 
	<action>pay</action> 
	<timestamp>20141021120912</timestamp> 
	<params> 
		<paysystem>2</paysystem> 
		<account>9211234567</account> 
		<amount>100</amount> 
		<extra> 
			<firstname>Василий</firstname> 
			<lastname>Пупкин</lastname> 
		</extra> 
	</params> 
</request>

Используя данные запроса, выполните следующие шаги:

  1. Соберите массив из элементов, имеющих текстовое содержание: 

    project=1290 
    action=pay 
    timestamp=20141021120912 
    paysystem=2 
    account=9211234567 
    amount=100 
    firstname=Василий 
    lastname=Пупкин
  2. Отсортируйте массив по алфавиту:

    account=9211234567 
    action=pay 
    amount=100 
    firstname=Василий 
    lastname=Пупкин 
    paysystem=2 
    project=1290 
    timestamp=20141021120912
  3. Составьте из полученного массива строку, используя & (амперсанд) в качестве разделителя элементов:

    account=9211234567&action=pay&amount=100&firstname=Василий&lastname=Пупкин&paysystem=2&project=1290&timestamp=20141021120912
    Внимание! Если внутри одного параметра встречаются знаки пробела, то перед формированием подписи их надо заменить на '+'. Например, VASILIY PUPKIN станет VASILIY+PUPKIN.
  4. Добавьте в начало строки подстроку "secret=ваш_секретный_ключ&":

    secret=MyP@ssw0rd&account=9211234567&action=pay&amount=100&firstname=Василий&lastname=Пупкин&paysystem=2&project=1290&timestamp=20141021120912
  5. Возьмите хеш (SHA-1) от итоговой строки:

    sha1('secret=MyP@ssw0rd&account=9211234567&action=pay&amount=100&firstname=Василий&lastname=Пупкин&paysystem=2&project=1290&timestamp=20141021120912') = e03ce4b2fb45248832a2072abc0f22cd7c33f9c7
  6. Поместите полученную строку в узел sign в запросе:

    <request> 
    	<project>1290</project> 
    	<action>pay</action> 
    	<timestamp>20141021120912</timestamp> 
    	<params> 
    		<paysystem>2</paysystem> 
    		<account>9211234567</account> 
    		<amount>100</amount> 
    		<extra> 
    			<firstname>Василий</firstname> 
    			<lastname>Пупкин</lastname> 
    		</extra> 
    	</params> 
    	<sign>e03ce4b2fb45248832a2072abc0f22cd7c33f9c7</sign> 
    </request>