Creé un sitio de comercio electrónico en CodeIgniter, también haciendo integración perfecta de Paypal.
No parecía haber envoltorios orientados a objetos suuuuuuuuuuuper bonitos por ahí cuando hice mi búsqueda, pero sí noté algunos buenos intentos.
Mi solución terminó siendo un poco soso. He descargado la API de PHP desde aquí: https://cms.paypal.com/cms_content/US/en_US/files/developer/PP_PHP_NVP_Samples.zip
me guardó el archivo CallerService.php
como application/helpers/paypal_helper.php
y añadieron a application/config/autoload.php
de llevarlo a cabo en la aplicación.
Ahora, CallerService.php
requiere constants.php
, por lo que debe copiarlo y pegarlo, o incluir el archivo constants.php
en su directorio de ayudantes. Acabo de copiar y pegar. Luego, asegúrese de configurar todas las constantes para su cuenta.
Una vez que se ha configurado, mi código sólo se veía así:
$nvp_query_string = '&PAYMENTACTION=Sale'
. '&AMT='.urlencode($order->total)
. '&CREDITCARDTYPE='.urlencode($this->input->post('credit_card_type'))
. '&ACCT='.urlencode($this->input->post('acct'))
. '&EXPDATE='.urlencode(str_pad($this->input->post('exp_date_month'), 2, '0', STR_PAD_LEFT).'20'.$this->input->post('exp_date_year'))
. '&CVV2='.urlencode($this->input->post('cvv2_number'))
. '&FIRSTNAME='.urlencode($first_name)
. '&LASTNAME='.urlencode($last_name)
. '&STREET='.urlencode($order->billing_address_1)
. '&CITY='.urlencode($order->billing_city)
. '&STATE='.urlencode($order->billing_state)
. '&ZIP='.urlencode($order->billing_zip)
. '&COUNTRYCODE=US&CURRENCYCODE=USD';
$response = hash_call('doDirectPayment', $nvp_query_string);
if (strpos(strtoupper($response['ACK']), 'SUCCESS') !== false) {
// Product purchase was successful.
}
else {
// Product purchase was unsuccessful.
// The Paypal response will be in $response['ACK'].
// The Paypal error message to show the customer will be in $response['L_LONGMESSAGE0'].
}
No es demasiado elegante, pero definitivamente funciona bien.
Además, DEFINITIVAMENTE necesita un certificado SSL. Estos se pueden comprar por $ 30 o más por un solo dominio. Al principio son un poco difíciles de configurar, pero no puede omitir este paso. SSL protege la transmisión entre la computadora del cliente y su servidor, por lo que su información de CC no puede leerse a medida que pasa por todos los servidores y enrutadores (o detectados a través de wifi) en el camino. Por lo tanto, solo asegúrese de que, en el formulario que utiliza para tomar la información CC, el formulario se envíe a https: // y no a un http no garantizado.
Gracias Alan! Eso es lo que estaba buscando ... me ayudaría mucho comenzar con este pensamiento y quizás crear una buena versión de envoltura que también podamos usar en futuros proyectos de CI. Si tiene otros consejos/consejos/cosas para no caer, por favor hágamelo saber. – Obaid