7 kits de développement PHP pour accepter les paiements en ligne sur votre e-commerce
Il y a quelques jours, je vous listais des fournisseurs de services de paiement (PSP) permettant d’accepter les paiements en ligne sur votre boutique e-commerce. Je continue sur le même sujet en vous présentant quelques kits de développements PHP pour gérer les paiements. J’ai retenu 7 prestataires de paiement :
- PayPal
- MangoPay
- Stripe
- Payline
- BitPay
- Simplify
- Authorize.Net
Ces SDK permettent de gérer des paiements coté serveur en allant interroger une API REST sécurisée. C’est ainsi que vous passez les ordres (de tokenization, de capture ou autre) sur la plateforme du prestataire que vous aurez retenu. Vous aurez à minima besoin d’une clef API que vous récupérez lors de la création de votre compte sur l’une de ces plateformes.
Globalement, les process de paiement des PSP sont généralement identiques et suivent le workflow suivant :
- création d’une notion d’ordre de paiement (généralement un token) ;
- validation du paiement (soit via l’envoi de données de carte, soit via la validation manuelle du paiement par l’utilisateur) ;
- actions en cas de succès ou d’échec (généralement des URLs de callback ou de notifications selon les cas).
Vous devrez maîtriser ce process pour bien implémenter votre paiement en ligne.
Allez, c’est parti pour cette sélection de kits de développement PHP pour faire du paiement en ligne !
PayPal PHP SDK
Le SDK Paypal : https://paypal.github.io/PayPal-PHP-SDK/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$payer = new Payer();
$payer->setPaymentMethod("paypal");
$amount = new Amount();
$amount->setCurrency("USD")
->setTotal(20)
->setDetails($details);
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription("Payment description")
->setInvoiceNumber(uniqid());
$baseUrl = getBaseUrl();
$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl("$baseUrl/ExecutePayment.php?success=true")
->setCancelUrl("$baseUrl/ExecutePayment.php?success=false");
$payment = new Payment();
$payment->setIntent("sale")
->setPayer($payer)
->setRedirectUrls($redirectUrls)
->setTransactions(array($transaction));
MangoPay PHP SDK
Le SDK Mangopay : https://github.com/Mangopay/mangopay2-php-sdk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// register card
$cardRegister = new \\MangoPay\\CardRegistration();
$cardRegister->UserId = $createdUser->Id;
$cardRegister->Currency = ‘EUR’;
$createdCardRegister = $mangoPayApi->CardRegistrations->Create($cardRegister);
// build the return URL to capture token response
$returnUrl = ‘http’ . ( isset($_SERVER[‘HTTPS’]) ? ‘s’ :" ) . ‘://’ . $_SERVER[‘HTTP_HOST’];
$returnUrl .= substr($_SERVER[‘REQUEST_URI’], 0, strripos($_SERVER[‘REQUEST_URI’], ‘/’) + 1);
$returnUrl .= ‘payment.php’;
<form action="<?php print $createdCardRegister->CardRegistrationURL; ?>" method="post">
<input type="hidden" name="data" value="<?php print $createdCardRegister->PreregistrationData; ?>" />
<input type="hidden" name="accessKeyRef" value="<?php print $createdCardRegister->AccessKey; ?>" />
<input type="hidden" name="returnURL" value="<?php print $returnUrl; ?>" />
<label for="cardNumber">Card Number</label>
<input type="text" name="cardNumber" value="" />
<div class="clear"></div>
<label for="cardExpirationDate">Expiration Date</label>
<input type="text" name="cardExpirationDate" value="" />
<div class="clear"></div>
<label for="cardCvx">CVV</label>
<input type="text" name="cardCvx" value="" />
<div class="clear"></div>
<input type="submit" value="Pay" />
</form>
Stripe PHP SDK
Le SDK Stripe : https://github.com/stripe/stripe-php
1
2
3
4
\\Stripe\\Stripe::setApiKey(‘d8e8fca2dc0f896fd7cb4cb0031ba249’);
$myCard = array(‘number’ => ‘4242424242424242’, ‘exp_month’ => 8, ‘exp_year’ => 2018);
$charge = \\Stripe\\Charge::create(array(‘card’ => $myCard, ‘amount’ => 2000, ‘currency’ => ‘usd’));
Payline By Monext PHP SDK
Le SDK Payline : https://github.com/PaylineByMonext/payline-php-samples
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$array[‘version’] = $_POST[‘version’];
$array[‘transactionID’] = $_POST[‘transactionID’];
$array[‘sequenceNumber’] = $_POST[‘sequenceNumber’];
$array[‘media’] = $_POST[‘media’];
$response = $payline->doCapture($array);
if(isset($response[‘transaction’][‘id’])){
$res = insertTransactionData(
$array[‘payment’][‘contractNumber’],
",
$response[‘transaction’][‘id’],
$array[‘payment’][‘action’],
$array[‘payment’][‘amount’],
$array[‘payment’][‘currency’],
$response[‘result’][‘code’]
);
}
BitPay PHP SDK
Le SDK BitPay : https://github.com/bitpay/php-bitpay-client
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$token = new \\Bitpay\\Token();
$token->setToken($tokenString);
/*\*
\* Code that makes the invoice
\*/
$invoice = new \\Bitpay\\Invoice();
$item = new \\Bitpay\\Item();
$item
->setCode(‘skuNumber’)
->setDescription(‘General Description of Item’)
->setPrice(‘1.99’);
$invoice->setCurrency(new \\Bitpay\\Currency(‘USD’));
$invoice->setItem($item);
$client = $bitpay->get(‘client’);
$client->setToken($token);
try {
$client->createInvoice($invoice);
} catch (\\Exception $e) {
$request = $client->getRequest();
$response = $client->getResponse();
echo (string) $request.PHP_EOL.PHP_EOL.PHP_EOL;
echo (string) $response.PHP_EOL.PHP_EOL;
exit(1); // We do not want to continue if something went wrong
}
Simplify PHP SDK
Le SDK Simplify : https://www.simplify.com/commerce/docs/sdk/php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
require_once("./lib/Simplify.php");
Simplify::$publicKey = ‘YOUR_PUBLIC_API_KEY’;
Simplify::$privateKey = ‘YOUR_PRIVATE_API_KEY’;
$token = $_POST[‘simplifyToken’];
$payment = Simplify_Payment::createPayment(array(
‘amount’ => ‘1000’,
‘token’ => $token,
‘description’ => ‘prod description’,
‘currency’ => ‘USD’
));
if ($payment->paymentStatus == ‘APPROVED’) {
echo "Payment approved\\n";
}
Authorize.Net PHP SDK
Le SDK Authorize.Net : https://developer.authorize.net/hello_world/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Create the payment data for a credit card
$creditCard = new AnetAPI\\CreditCardType();
$creditCard->setCardNumber("4111111111111111" );
$creditCard->setExpirationDate( "2038-12");
$paymentOne = new AnetAPI\\PaymentType();
$paymentOne->setCreditCard($creditCard);
// Create a transaction
$transactionRequestType = new AnetAPI\\TransactionRequestType();
$transactionRequestType->setTransactionType("authCaptureTransaction");
$transactionRequestType->setAmount(151.51);
$transactionRequestType->setPayment($paymentOne);
$request = new AnetAPI\\CreateTransactionRequest();
$request->setMerchantAuthentication($merchantAuthentication);
$request->setRefId( $refId);
$request->setTransactionRequest($transactionRequestType);
$controller = new AnetController\\CreateTransactionController($request);
$response = $controller->executeWithApiResponse(\\net\\authorize\\api\\constants\\ANetEnvironment::SANDBOX);
C’est terminé ! J’espère que vous y voyez plus clair sur l’implémentation du paiement en ligne coté serveur sur votre site de vente en ligne.