Ho costruito un sito di e-commerce in CodeIgniter, anche facendo integrazione perfetta con Paypal.
Non sembra che ci fossero involucri orientati agli oggetti suuuuper piuttosto begli quando ho fatto la mia caccia, ma ho notato alcuni buoni tentativi.
La mia soluzione è stata un po 'insipida. Ho scaricato l'API di PHP da qui: https://cms.paypal.com/cms_content/US/en_US/files/developer/PP_PHP_NVP_Samples.zip
ho salvato il file CallerService.php
come application/helpers/paypal_helper.php
e ha aggiunto a application/config/autoload.php
per tirarlo in app.
Ora, richiede constants.php
, quindi è necessario copiarlo e incollarlo oppure includere il file constants.php
nella directory dell'help. Ho appena copiato e incollato. Quindi, assicurati di configurare tutte le costanti per il tuo account.
Una volta impostato, il mio codice appena si presentava così:
$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'].
}
Non è troppo elegante, ma funziona decisamente bene.
Inoltre, è SICURAMENTE necessario un certificato SSL. Questi possono essere acquistati per $ 30 circa per un singolo dominio. All'inizio sono un po 'difficili da configurare, ma non puoi saltare questo passaggio. SSL protegge la trasmissione tra il computer del cliente e il server, quindi le informazioni CC non possono essere lette mentre passa attraverso tutti i server e router (o annusato tramite wifi) lungo la strada. Assicurati, quindi, che nel modulo utilizzato per le informazioni CC, il modulo venga inviato a https: // e non a un http non protetto: //.
Grazie Alan! Questo è quello che stavo cercando .. mi avrebbe aiutato molto a partire da questo pensiero e forse creare una bella lib wrapper che possiamo usare anche nei futuri progetti di CI. Se avete altri suggerimenti/suggerimenti/cose da non cadere in, per favore fatemelo sapere. – Obaid