Pregunta

Ya tengo un pago expreso integrado con mi aplicación CodeInigniter. Ahora quiero integrar a PayPal sin costuras, donde recopilo la información de CC y la paso a PayPal (a través de Backend) y una vez que todo está aprobado, mi aplicación lo muestra al usuario. Todo esto sin ir al sitio web de PayPal.

Sé que PayPal ofrece un montón de código de muestra, pero tienen muchos productos diferentes que anuncian para hacer lo mismo.

¿Hay alguna biblioteca de envoltorio en PHP que pueda usar para manejar todo esto?

¿Qué tipo de decisión de diseño está involucrada en la migración a dicho sistema? ¿Necesitaría certificados SSL para esto?

¿Fue útil?

Solución

Construí un sitio de comercio electrónico en Codeigniter, también haciendo una integración de PayPal perfecta.

No parecía haber envoltorios orientados a objetos de suuuuuper cuando hice mi caza, pero noté algunos buenos intentos.

Mi solución terminó siendo un poco sosa. Descargué la API PHP de aquí:https://cms.paypal.com/cms_content/us/en_us/files/developer/pp_php_nvp_samples.zip

Guardé el CallerService.php archivo como application/helpers/paypal_helper.php y lo agregó a application/config/autoload.php para llevarlo a la aplicación.

Ahora, CallerService.php requerimiento constants.php, por lo que necesita copiarlo y pegarlo, o incluir el constants.php Archivo en su directorio de ayuda. Acabo de copiar y pegar. Luego, asegúrese de configurar todas las constantes para su cuenta.

Una vez que eso está configurado, mi código 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 más o menos por un solo dominio. Al principio son un poco difíciles de configurar, pero no puedes 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 se puede leer a medida que pasa por todos los servidores y enrutadores (o olfateados a través de WiFi) en el camino. Por lo tanto, solo asegúrese de que, en el formulario que utilice para tomar información CC, el formulario envíe a https: // y no un http: // no garantizado.

Otros consejos

Estoy bastante seguro de que no importa qué pasa si su sitio web está tomando datos confidenciales (es decir, el número de tarjeta de crédito), entonces necesita un certificado SSL. A menos que estén en el servidor de otra persona (paypal.com), debe encargarse de eso. Y, como dijiste, no quieres enviarlos a PayPal.com, así que sí, necesitarás uno.

Además, si ya tiene un checkout expreso integrado, debería usar un certificado SSL para eso de todos modos, ¿verdad?

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