Pregunta

Estoy trabajando en un proyecto PHP y estoy buscando una buena puerta de enlace authorize.net. Quiero algo con código maduro que haya sido probado. El objetivo es evitar escribir y probar todo yo mismo según los documentos de la API de authorize.net.

¿Alguien sabe de alguna buena biblioteca PHP para esto? He buscado en Google en vano.

¿Fue útil?

Solución

Authorize.net proporciona su propio SDK para PHP y otros idiomas . Probablemente no haya necesidad de buscar en otro lado.

Otros consejos

Estás de suerte. Esto es lo que uso (para la puerta de enlace 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> 

Y esto es lo que uso para la confirmación.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'];
}

El método de formulario es una forma insegura de transmitir esta información. Una mejor apuesta es usar su método API AIM.

Un gran tutorial se puede encontrar aquí: http://www.johnconde.net/blog / tutorial-integrating-the-authorizenet-aim-api-with-php

Magento es compatible con Authorize.Net. Extraiga el código que necesita, ya que Magento está bien probado y es de buena calidad.

Creo que simdata.php solo contiene los datos de la transacción ... como la cantidad, el nombre de la persona, etc.

James Gifford creó un código de Authorize.net para codeigniter. Descargar aquí ...

http://jamesgifford.com/programming/codeigniter-authorize-net-library /

Estoy usando el php sdk que obtuve directamente del sitio de desarrollo Authorize.nets ...

http://developer.authorize.net/downloads/

esta es una biblioteca decente para usar en CodeIgniter, pero se puede usar de forma independiente:

http://code.google.com /p/authorizenetlib/downloads/detail?name=Authorize_net-1.0.php

crédito: james gifford por el código.

He utilizado el módulo de pago incluido en Kohana 2.3.x con el controlador Authorize.Net incorporado. http://docs.kohanaphp.com/addons/payment

http: //www.micahcarrick .com / 04-19-2005 / php-authorizenet-aim-interfacing-class.html

Esa es la clase que uso. Bastante simple de usar. Sin embargo, todavía tendrá que profundizar en la API para descubrir qué variables desea enviar y cuáles no.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top