Я получаю другой хэш после оплаты через Authorize.Net DPM.
Это работало раньше, но с последних 1-2 дней это не работает.
Я использую следующую функцию для генерации отпечатка пальца для x_hp_hash -
$signature_key = hex2bin($signature_key);
if (function_exists('hash_hmac')) {
return hash_hmac("sha512", $api_login_id . "^" . $fp_sequence . "^" .
$fp_timestamp . "^" . $amount . "^", $signature_key);
}
return bin2hex(mhash(MHASH_SHA512, $api_login_id . "^" . $fp_sequence . "^" . $fp_timestamp . "^" . $amount . "^", $signature_key));
и хеш сравнивать после оплаты -
$hashFields = [
$_POST['x_trans_id'],
$_POST['x_test_request'],
$_POST['x_response_code'],
$_POST['x_auth_code'],
$_POST['x_cvv2_resp_code'],
$_POST['x_cavv_response'],
$_POST['x_avs_code'],
$_POST['x_method'],
$_POST['x_account_number'],
$_POST['x_amount'],
$_POST['x_company'],
$_POST['x_first_name'],
$_POST['x_last_name'],
$_POST['x_address'],
$_POST['x_city'],
$_POST['x_state'],
$_POST['x_zip'],
$_POST['x_country'],
$_POST['x_phone'],
$_POST['x_fax'],
$_POST['x_email'],
$_POST['x_ship_to_company'],
$_POST['x_ship_to_first_name'],
$_POST['x_ship_to_last_name'],
$_POST['x_ship_to_address'],
$_POST['x_ship_to_city'],
$_POST['x_ship_to_state'],
$_POST['x_ship_to_zip'],
$_POST['x_ship_to_country'],
$_POST['x_invoice_num'],
];
$hashString = '^'.implode('^', $hashFields).'^';
$signature_key = hex2bin($signature_key);
$generatedhash = strtoupper(HASH_HMAC('sha512', $hashString, $signature_key));
if (function_exists('hash_equals')) {
$equals = hash_equals($_POST['x_SHA2_Hash'], $generatedhash);
} else {
$equals = $_POST['x_SHA2_Hash'] === $generatedhash;
}
if($equals) {
//valid
} else{
//not valid
}
Всегда давать недействительно. Это работало раньше. Я обновил этот код в начале января 2019 года, и с тех пор он работал.
значения $ _POST для среды тестирования -
Array
(
[x_response_code] => 1
[x_response_reason_code] => 1
[x_response_reason_text] => (TESTMODE) This transaction has been approved.
[x_avs_code] => P
[x_auth_code] => 000000
[x_trans_id] => 0
[x_method] => CC
[x_card_type] => MasterCard
[x_account_number] => XXXX5100
[x_first_name] => Vikk
[x_last_name] => kkk
[x_company] => kkk
[x_address] => kkk
[x_city] => kkk
[x_state] => kkk
[x_zip] => 98979
[x_country] => nn
[x_phone] =>
[x_fax] =>
[x_email] =>
[x_invoice_num] =>
[x_description] => description givne
[x_type] => auth_capture
[x_cust_id] =>
[x_ship_to_first_name] =>
[x_ship_to_last_name] =>
[x_ship_to_company] =>
[x_ship_to_address] =>
[x_ship_to_city] =>
[x_ship_to_state] =>
[x_ship_to_zip] =>
[x_ship_to_country] =>
[x_amount] => 5.69
[x_tax] => 0.00
[x_duty] => 0.00
[x_freight] => 0.00
[x_tax_exempt] => FALSE
[x_po_num] =>
[x_MD5_Hash] =>
[x_SHA2_Hash] => C0E2B949E5C80F5634380CF8DB8CE3EDD5EF5DF1AB1BB819F1120142F92C7B7684EE775502E410538F8A005CFF4249090F18A38B43A7D4859AFBA0009A6A5A29
[x_cvv2_resp_code] =>
[x_cavv_response] =>
[x_test_request] => true
[payment_mode] => dpm
[x_current_url] => www.websiteurl.com
[x_final_url] => www.websiteurl.com
)