J'ai construit un site de commerce électronique dans CodeIgniter, réalisant également une intégration transparente de Paypal.
Il ne semblait pas y avoir de wrappers orientés objet suuuuuper-pretty quand j'ai fait ma chasse, mais j'ai remarqué quelques bonnes tentatives.
Ma solution a fini par être un peu fade. J'ai téléchargé l'API PHP ici: https://cms.paypal.com/cms_content/US/en_US/files/developer/PP_PHP_NVP_Samples.zip
J'enregistré le fichier CallerService.php
comme application/helpers/paypal_helper.php
et ajouté à application/config/autoload.php
pour le tirer dans l'application.
Maintenant, CallerService.php
nécessite constants.php
, vous devez donc le copier et le coller, ou inclure le fichier constants.php
dans votre répertoire helpers. Je viens de copier et coller. Ensuite, assurez-vous de configurer toutes les constantes pour votre compte.
Une fois que est mis en place, mon code ressemblait à ceci:
$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'].
}
Il est pas trop élégant, mais ça fonctionne vraiment bien.
De plus, vous avez VRAIMENT besoin d'un certificat SSL. Ceux-ci peuvent être achetés pour 30 $ ou plus pour un seul domaine. Ils sont un peu difficiles à mettre en place au début, mais vous ne pouvez pas passer cette étape. SSL protège la transmission entre l'ordinateur du client et votre serveur, de sorte que leurs informations CC ne peuvent pas être lues lors de leur passage sur tous les serveurs et routeurs (ou reniflés via le wifi) en cours de route. Donc, assurez-vous que, sur le formulaire que vous utilisez pour prendre des informations CC, le formulaire soumet à https: // et non un http: // non sécurisé.
Merci Alan! C'est ce que je cherchais ... ça m'aiderait beaucoup à partir de cette idée et peut-être créer un joli wrapper lib que nous pourrons aussi utiliser dans de futurs projets CI. Si vous avez d'autres conseils/astuces/choses-à-ne-tomber-dans s'il vous plaît faites le moi savoir. – Obaid