Buone librerie PHP autorize.net
-
06-07-2019 - |
Domanda
Sto lavorando a un progetto PHP e sto cercando un buon gateway autorize.net. Voglio qualcosa con codice maturo che è stato testato. L'obiettivo è evitare di scrivere e testare tutto da solo sulla base dei documenti API di authorize.net.
Qualcuno conosce qualche buona libreria PHP per questo? Ho cercato Google inutilmente.
Soluzione
Authorize.net fornisce il proprio SDK per PHP e altre lingue . Probabilmente non è necessario cercare altrove.
Altri suggerimenti
Sei fortunato. Questo è quello che uso (per il gateway SIM):
include("../../simdata.php");
...
<!--form action="https://test.authorize.net/gateway/transact.dll" method="POST"-->
<FORM action="https://secure.authorize.net/gateway/transact.dll" method="POST">
<?
$x_description = "website.com";
$currency = "";
$tstamp = time();
// Seed random number for security and better randomness.
srand(time());
$sequence = rand(1, 1000);
$data = "$x_loginid^$sequence^$tstamp^$total^$currency";
#echo "data = $data\n";
#echo $x_tran_key;
$fingerprint = bin2hex(mhash(MHASH_MD5, $data, $x_tran_key));
# php 5 only $fingerprint = hash_hmac("md5", $data, $x_tran_key);
echo ("<input type='hidden' name='x_fp_sequence' value='" . $sequence . "'>\n" );
echo ("<input type='hidden' name='x_fp_timestamp' value='" . $tstamp . "'>\n" );
echo ("<input type='hidden' name='x_fp_hash' value='" . $fingerprint . "'>\n" );
echo ("<input type=\"hidden\" name=\"x_description\" value=\"" . $x_description . "\">\n" );
echo ("<input type=\"hidden\" name=\"x_login\" value=\"$x_loginid\">\n");
echo ("<input type=\"hidden\" name=\"x_amount\" value=\"$total\">\n");
?>
<input type="hidden" name="x_first_name" value="<?=firstName($_SESSION['user']['name'])?>">
<input type="hidden" name="x_last_name" value="<?=lastName($_SESSION['user']['name'])?>">
<input type="hidden" name="x_company" value="<?=$_SESSION['user']['company']?>">
<input type="hidden" name="x_address" value="<?=$_SESSION['user']['address']?>">
<input type="hidden" name="x_city" value="<?=$_SESSION['user']['city']?>">
<input type="hidden" name="x_state" value="<?=$_SESSION['user']['state']?>">
<input type="hidden" name="x_zip" value="<?=$_SESSION['user']['zip']?>">
<input type="hidden" name="x_phone" value="<?=$_SESSION['user']['phone']?>">
<input type="hidden" name="x_email" value="<?=$_SESSION['user']['email']?>">
<input type="hidden" name="x_cust_id" value="<?=$_SESSION['user']['username']?>">
<INPUT TYPE="HIDDEN" name="x_logo_url" VALUE= "https://secure.authorize.net/mgraphics/logo_99999.gif">
<INPUT type="hidden" name="x_show_form" value="PAYMENT_FORM">
<!--INPUT type="hidden" name="x_test_request" value="TRUE"-->
<!--input type="hidden" name="x_receipt_link_method" value="POST">
<input type="hidden" name="x_receipt_link_text" value="Click for listings">
<input type="hidden" name="x_receipt_link_url" value="http://website.com/confirmation.php"-->
<input type="hidden" name="x_relay_response" value="TRUE">
<input type="hidden" name="x_relay_url" value="http://website.com/confirmation.php">
<input type="hidden" name="<?=session_name()?>" value="<?=session_id()?>">
<input type="hidden" name="" value="">
<input type="hidden" name="" value="">
<input type="hidden" name="" value="">
<? if ($total==0) { ?>
<a href="account.php">Your Account</a>
<? } else { ?>
<INPUT type="submit" value="Accept Order">
<? } ?>
</form>
E questo è quello che uso per la conferma.php
include("../../simdata.php");
#print_r($_POST);
// verify transaction comes from authorize.net and save user details
$responseCode = $_POST['x_response_code'];
if ( $responseCode == 1) { // approved
$md5 = $_POST['x_MD5_Hash'];
$transId = $_POST['x_trans_id'];
$amount = $_POST['x_amount'];
$myMD5 = strtoupper(md5("$x_tran_key$x_loginid$transId$amount"));
#echo $myMD5;
#print_r ($_POST);
#print_r ($_SESSION['user']);
if ($myMD5 == $md5) { // authenticated response from authorize.net
...
} else {
$error = "Unauthenticated response.";
}
} else if (isset($_POST['x_response_code'])) { // error
$error = $_POST['x_response_reason_text'].", #".$_POST['x_response_code'].'.'.$_POST['x_response_subcode'].
'.'.$_POST['x_response_reason_code'];
}
Il metodo form è un modo insicuro di trasmettere queste informazioni. Una scommessa migliore sta usando il loro metodo API AIM.
Un ottimo tutorial può essere trovato qui: http://www.johnconde.net/blog / esercitazione-integrazione-the-AuthorizeNet-aim-api-con-php
Magento supporta Authorize.Net. Estrai il codice che ti serve poiché Magento è ben testato e ha un codice di buona qualità.
Penso che simdata.php contenga solo i dati della transazione ... come l'importo, il nome della persona, ecc.
James Gifford ha creato del codice Authorize.net per codeigniter. Scarica qui ...
http://jamesgifford.com/programming/codeigniter-authorize-net-library /
Sto usando il php sdk che ho ricevuto direttamente dal sito di sviluppo di Authorize.nets ...
questa è una libreria decente da usare in CodeIgniter, ma può essere usata autonomamente:
http://code.google.com /p/authorizenetlib/downloads/detail?name=Authorize_net-1.0.php
credito: james gifford per il codice.
Ho usato il modulo di pagamento incluso in Kohana 2.3.x con il driver incorporato Authorize.Net. http://docs.kohanaphp.com/addons/payment
http: //www.micahcarrick com / 2005/04/19 / php-AuthorizeNet-aim-interfacciamento-class.html
Questa è la classe che uso. Abbastanza semplice da usare. Dovrai comunque scavare nell'API, per capire quali variabili vuoi inviare e quali no.