<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic PHP 4.4.9 without MHASH available . . . in Integration and Testing</title>
    <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/PHP-4-4-9-without-MHASH-available/m-p/12628#M7690</link>
    <description>Sorry, newbie question, but attempting to use SIM with a custom php shopping cart --&amp;nbsp; don't have MHASH on the server, and using PHP 4.4.9 . . . how does the fingerprint thing work without it?</description>
    <pubDate>Wed, 04 May 2011 23:09:15 GMT</pubDate>
    <dc:creator>metazai</dc:creator>
    <dc:date>2011-05-04T23:09:15Z</dc:date>
    <item>
      <title>PHP 4.4.9 without MHASH available . . .</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/PHP-4-4-9-without-MHASH-available/m-p/12628#M7690</link>
      <description>Sorry, newbie question, but attempting to use SIM with a custom php shopping cart --&amp;nbsp; don't have MHASH on the server, and using PHP 4.4.9 . . . how does the fingerprint thing work without it?</description>
      <pubDate>Wed, 04 May 2011 23:09:15 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/PHP-4-4-9-without-MHASH-available/m-p/12628#M7690</guid>
      <dc:creator>metazai</dc:creator>
      <dc:date>2011-05-04T23:09:15Z</dc:date>
    </item>
    <item>
      <title>Re: PHP 4.4.9 without MHASH available . . .</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/PHP-4-4-9-without-MHASH-available/m-p/12636#M7694</link>
      <description>&lt;P&gt;You can use the following code snippet to create the mhash() function which basically does the same thing as the mhash library:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;if (!function_exists('mhash'))&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (!defined('MHASH_MD5')) define('MHASH_MD5', 1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;function mhash($hash, $data, $key)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if ($hash == MHASH_MD5)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// RFC 2104 HMAC implementation for php.&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Creates an md5 HMAC.&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Eliminates the need to install mhash to compute a HMAC&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Hacked by Lance Rushing&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;$b = 64; // byte length for md5&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (strlen($key) &amp;gt; $b) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;$key = pack("H*",md5($key));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;$key&amp;nbsp; = str_pad($key, $b, chr(0x00));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;$ipad = str_pad('', $b, chr(0x36));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;$opad = str_pad('', $b, chr(0x5c));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;$k_ipad = $key ^ $ipad ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;$k_opad = $key ^ $opad;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return md5($k_opad&amp;nbsp; . pack("H*",md5($k_ipad . $data)));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;}&lt;/P&gt;</description>
      <pubDate>Thu, 05 May 2011 11:00:40 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/PHP-4-4-9-without-MHASH-available/m-p/12636#M7694</guid>
      <dc:creator>octavian</dc:creator>
      <dc:date>2011-05-05T11:00:40Z</dc:date>
    </item>
    <item>
      <title>Re: PHP 4.4.9 without MHASH available . . .</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/PHP-4-4-9-without-MHASH-available/m-p/12698#M7722</link>
      <description>&lt;P&gt;Many, many thanks.&amp;nbsp; I am, however, running into a 99 error now, I've been changing variables left and right but to no avail.&amp;nbsp; Any thoughts?&amp;nbsp; Code below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;lt;?php&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;// the parameters for the payment can be configured here&lt;BR /&gt;// the API Login ID and Transaction Key must be replaced with valid values&lt;BR /&gt;$loginID&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= "developer test login ID";&lt;BR /&gt;$transactionKey = "developer testtransaction Key";&lt;/P&gt;&lt;P&gt;//$proc_final_total is an XX.XX formatted number determined earlier on the page.&lt;/P&gt;&lt;P&gt;$amount &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= $proc_final_total;&lt;BR /&gt;$description &amp;nbsp;&amp;nbsp; &amp;nbsp;= "Sample Transaction";&lt;BR /&gt;$label &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= "Submit Payment"; // The is the label on the 'submit' button&lt;BR /&gt;$testMode&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= "false";&lt;BR /&gt;$url&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;= "&lt;A href="https://test.authorize.net/gateway/transact.dll" rel="nofollow" target="_blank"&gt;https://test.authorize.net/gateway/transact.dll&lt;/A&gt;";&lt;BR /&gt;&lt;BR /&gt;// If an amount or description were posted to this page, the defaults are overidden&lt;BR /&gt;if (array_key_exists("amount",$_REQUEST))&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{ $amount = $_REQUEST["amount"]; }&lt;BR /&gt;if (array_key_exists("amount",$_REQUEST))&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{ $description = $_REQUEST["description"]; }&lt;BR /&gt;&lt;BR /&gt;// an invoice is generated using the date and time&lt;BR /&gt;$invoice&amp;nbsp;&amp;nbsp; &amp;nbsp;= date(YmdHis);&lt;BR /&gt;// a sequence number is randomly generated&lt;BR /&gt;$sequence&amp;nbsp;&amp;nbsp; &amp;nbsp;= rand(1, 1000);&lt;BR /&gt;// a timestamp is generated&lt;BR /&gt;$timeStamp&amp;nbsp;&amp;nbsp; &amp;nbsp;= time();&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if (!function_exists('mhash'))&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!defined('MHASH_MD5')) define('MHASH_MD5', 1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function mhash($hash, $data, $key)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($hash == MHASH_MD5)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // RFC 2104 HMAC implementation for php.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Creates an md5 HMAC.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Eliminates the need to install mhash to compute a HMAC&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Hacked by Lance Rushing&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $b = 64; // byte length for md5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (strlen($key) &amp;gt; $b) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $key = pack("H*",md5($key));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $key&amp;nbsp; = str_pad($key, $b, chr(0x00));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ipad = str_pad('', $b, chr(0x36));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $opad = str_pad('', $b, chr(0x5c));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $k_ipad = $key ^ $ipad ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $k_opad = $key ^ $opad;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return md5($k_opad&amp;nbsp; . pack("H*",md5($k_ipad . $data)));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;}&lt;BR /&gt;&amp;nbsp;$fingerprint = bin2hex(mhash(MHASH_MD5, $loginID . "^" . $sequence . "^" . $timeStamp . "^" . $amount . "^", $transactionKey));&lt;BR /&gt;?&amp;gt;&lt;BR /&gt;&amp;lt;form method='post' action='&amp;lt;?php echo $url; ?&amp;gt;' &amp;gt;&lt;BR /&gt;&amp;lt;!--&amp;nbsp; Additional fields can be added here as outlined in the SIM integration&lt;BR /&gt;&amp;nbsp;guide at: &lt;A href="http://developer.authorize.net" rel="nofollow" target="_blank"&gt;http://developer.authorize.net&lt;/A&gt; --&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;input type='hidden' name='x_login' value='&amp;lt;?php echo $loginID; ?&amp;gt;' /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;input type='hidden' name='x_amount' value='&amp;lt;?php echo $amount; ?&amp;gt;' /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;input type='hidden' name='x_description' value='&amp;lt;?php echo $description; ?&amp;gt;' /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;input type='hidden' name='x_invoice_num' value='&amp;lt;?php echo $invoice; ?&amp;gt;' /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;input type='hidden' name='x_fp_sequence' value='&amp;lt;?php echo $sequence; ?&amp;gt;' /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;input type='hidden' name='x_fp_timestamp' value='&amp;lt;?php echo $timeStamp; ?&amp;gt;' /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;input type='hidden' name='x_fp_hash' value='&amp;lt;?php echo $fingerprint; ?&amp;gt;' /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;input type='hidden' name='x_test_request' value='&amp;lt;?php echo $testMode; ?&amp;gt;' /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;input type='hidden' name='x_show_form' value='PAYMENT_FORM' /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;input type='submit' value='&amp;lt;?php echo $label; ?&amp;gt;' /&amp;gt;&lt;BR /&gt;&amp;lt;/form&amp;gt;&lt;/P&gt;</description>
      <pubDate>Fri, 06 May 2011 01:13:02 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/PHP-4-4-9-without-MHASH-available/m-p/12698#M7722</guid>
      <dc:creator>metazai</dc:creator>
      <dc:date>2011-05-06T01:13:02Z</dc:date>
    </item>
    <item>
      <title>Re: PHP 4.4.9 without MHASH available . . .</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/PHP-4-4-9-without-MHASH-available/m-p/12702#M7724</link>
      <description>&lt;P&gt;Sorry, I should have removed the bin2hex() function, you no longer need it :)&lt;/P&gt;&lt;P&gt;Replace:&lt;/P&gt;&lt;P&gt;$fingerprint = bin2hex(mhash(MHASH_MD5, $loginID . "^" . $sequence . "^" . $timeStamp . "^" . $amount . "^", $transactionKey));&lt;/P&gt;&lt;P&gt;With:&lt;/P&gt;&lt;P&gt;&amp;nbsp;$fingerprint = mhash(MHASH_MD5, $loginID . "^" . $sequence . "^" . $timeStamp . "^" . $amount . "^", $transactionKey);&lt;/P&gt;</description>
      <pubDate>Fri, 06 May 2011 08:32:26 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/PHP-4-4-9-without-MHASH-available/m-p/12702#M7724</guid>
      <dc:creator>octavian</dc:creator>
      <dc:date>2011-05-06T08:32:26Z</dc:date>
    </item>
    <item>
      <title>Re: PHP 4.4.9 without MHASH available . . .</title>
      <link>https://community.developer.cybersource.com/t5/Integration-and-Testing/PHP-4-4-9-without-MHASH-available/m-p/12704#M7725</link>
      <description />
      <pubDate>Fri, 06 May 2011 10:39:10 GMT</pubDate>
      <guid>https://community.developer.cybersource.com/t5/Integration-and-Testing/PHP-4-4-9-without-MHASH-available/m-p/12704#M7725</guid>
      <dc:creator>metazai</dc:creator>
      <dc:date>2011-05-06T10:39:10Z</dc:date>
    </item>
  </channel>
</rss>

