2013-03-19 2 views
2

Я пытаюсь создать хеш-пароль в coldfusion для нашего безопасного платежного шлюза, чтобы принять транзакцию.Хеш в coldfusion для безопасного платежного шлюза

К сожалению, платежный шлюз отказывается принять мой сгенерированный хэш.

Форма отправляется через все элементы транзакции и отправляет сгенерированный хэш на основе пяти разных полей.

В PHP это это-:

<?php 
echo hash('sha256', ' 
test_site1234 
GBP 
OrderTotal 
OrderID 
PASSWORD 
');; 
?> 

Правильно ли я думать код в ColdFusion должен быть -:

<cfset sitesecurity = Hash("test_site1234"&"GBP"&#OrderTotal#&#URL.ThisOrderID#&"PASSWORD", "SHA-256")> 

<cfoutput>#sitesecurity#</cfoutput> 
+0

Если вы пытаетесь соответствовать Hash из ColdFusion и PHP см этот пост - [? Хэш-функция, которая работает одинаково на ColdFusion MX7 и PHP 5.x] (http://stackoverflow.com/questions/10036931/hash-function-that-works-identically-on-coldfusion-mx7-and-php-5-x). –

ответ

4

Я считаю ссылку Miguel-F отправил исправит проблему. Хеш-выход Coldfusion находится во всех верхних регистрах, где большинство (всех?) Других выходов, которые я видел, находятся в нижнем регистре. В зависимости от того, как ваш шлюз обрабатывает чувствительность к регистру, вы должны попробовать передать строчный хэш.

<cfset sitesecurity = lCase(hash("test_site1234GBP"&OrderTotal&URL.ThisOrderID&"PASSWORD", "SHA-256"))> 
+0

HUZZAH !!! Это была проблема с нижним регистром, спасибо Тревису и частичная к MiguelF и Matt B – matthew

1

Код должен функционировали так, как она есть, но в моем мнение лучше создать значение хэш как одну большую строку. Добавление к строкам является «дорогостоящим», потому что каждый раз, когда вы добавляете строку, создается новая строка, а старая - уничтожается. Если вы обрабатываете одну транзакцию в минуту, вы никогда не заметите разницы, но это хорошая практика в любом случае. Я хотел бы использовать.

<cfset sitesecurity = Hash("test_site1234GBP#OrderTotal##URL.ThisOrderID#PASSWORD", "SHA-256")> 

Теперь вы можете иметь проблемы с получением Хэш в PHP, чтобы соответствовать HASH в ColdFusion, но это отдельный вопрос.

Образец

<cfset OrderTotal = 10> 
<cfset url.ThisOrderID = 50> 
<cfset sitesecurity = Hash("test_site1234GBP#OrderTotal##URL.ThisOrderID#PASSWORD", "SHA-256")> 
<cfdump var="#sitesecurity#" abort> 

Возвращает

92A14E1D03833CB3FD6932A8E240861CDEC66E46723A544DFBC3C592D5EE7E66 
+0

спасибо! попробовал это, но двойные значения хэша найдены в 'OrderTotal ## URL.ThisOrder' из-за недопустимой ошибки cfml – matthew

+0

вы можете отправить сообщение об ошибке? Это действительно CFML с использованием CF10. В ответе я опубликовал рабочий пример. –

+0

Мэтт, моя ошибка сработала, я пропустил цитату. Спасибо! Это расстраивает, хотя наш безопасный платежный шлюз все еще не принимает хеш – matthew

Смежные вопросы