Ce document détaille l'intégration du système de paiement Alipay, en présentant les différentes requêtes et les paramètres nécessaires pour initier et gérer les transactions.
Configuration de la transaction
Pour initier un paiement via Alipay, plusieurs paramètres doivent être inclus dans la requête. Ces paramètres définissent les détails de la transaction, les informations du vendeur et de la'cheteur, ainsi que les URLs de notification.
Exemple de formulaire de paiement GET
Le formulaire ci-dessous illustre la structure d'une requête GET pour créer une transaction de paiement direct.
<form action="https://www.alipay.com/cooperate/gateway.do" id="paymentForm" method="GET">
Agent:<input type="text" name="agent" value="C4335319945672464113"><br>
Service:<input type="text" name="service" value="create_direct_pay_by_user"><br>
Partenaire:<input type="text" name="partner" value="2088002129928641"><br>
Charset:<input type="text" name="_input_charset" value="utf-8"><br>
URL de notification:<input type="text" name="notify_url" value="http://www.example.com/notify_handler"><br>
URL de retour:<input type="text" name="return_url" value="http://www.example.com/return_handler"><br>
Objet:<input type="text" name="subject" value="ECMall Commande:12345"><br>
N° de commande externe:<input type="text" name="out_trade_no" value="ORDERID123"><br>
Prix:<input type="text" name="price" value="10.50"><br>
Quantité:<input type="text" name="quantity" value="1"><br>
Type de paiement:<input type="text" name="payment_type" value="1"><br>
Type de logistique:<input type="text" name="logistics_type" value="EXPRESS"><br>
Frais de logistique:<input type="text" name="logistics_fee" value="5.00"><br>
Paiement logistique:<input type="text" name="logistics_payment" value="BUYER_PAY_AFTER_RECEIVE"><br>
Email vendeur:<input type="text" name="seller_email" value="seller@example.com"><br>
Signature:<input type="text" name="sign" value="generated_signature"><br>
Type de signature:<input type="text" name="sign_type" value="MD5"><br>
<input type="submit" value="Payer avec Alipay">
</form>
<script>
// Optionnel : soumission automatique du formulaire
// document.getElementById('paymentForm').submit();
</script>
Exemple de formulaire de paiement POST
Une alternative utilise la méthode POST, notamment pour les transferts de données plus importants ou sensibles.
<form id='alipaySubmit' name='alipaySubmit' action='https://mapi.alipay.com/gateway.do?_input_charset=utf-8' method='post'>
<input type='hidden' name='_input_charset' value='utf-8'/>
<input type='hidden' name='body' value='Description détaillée de l'achat'/>
<input type='hidden' name='notify_url' value='http://www.example.com/api/alipay/callback'/>
<input type='hidden' name='out_trade_no' value='UNIQUE_ORDER_ID_5678'/>
<input type='hidden' name='partner' value='2088002129928641'/>
<input type='hidden' name='payment_type' value='1'/>
<input type='hidden' name='return_url' value='http://www.example.com/api/alipay/redirect'/>
<input type='hidden' name='seller_id' value='2088002129928641'/>
<input type='hidden' name='service' value='create_direct_pay_by_user'/>
<input type='hidden' name='subject' value='Produit XYZ'/>
<input type='hidden' name='total_fee' value='50.00'/>
<input type='hidden' name='sign' value='generated_signature_post'/>
<input type='hidden' name='sign_type' value='MD5'/>
<input type='submit' value='Confirmer le paiement' style='display:none;'/>
</form>
Gestion des notifications
Après une transaction, Alipay anvoie des notificatinos aux URLs spécifiées pour informer le système des mises à jour du statut de la commande. Ces notifications contiennent des paramètres essentiels pour le suivi.
Exemple de paramètres de notification
Lorsqu'une notification est reçue, elle contient des données structurées, par exemple :
array(17) {
["buyer_email"]=> string(11) "buyer@example.com"
["buyer_id"]=> string(16) "ALIPAY_BUYER_ID"
["exterface"]=> string(25) "create_direct_pay_by_user"
["is_success"]=> string(1) "T"
["notify_id"]=> string(74) "UNIQUE_NOTIFICATION_ID"
["notify_time"]=> string(19) "2017-03-01 17:15:05"
["notify_type"]=> string(17) "trade_status_sync"
["out_trade_no"]=> string(6) "ORDERID123"
["payment_type"]=> string(1) "1"
["seller_email"]=> string(18) "seller@example.com"
["seller_id"]=> string(16) "2088002129928641"
["subject"]=> string(14) "Paiement pour article"
["total_fee"]=> string(4) "10.50"
["trade_no"]=> string(28) "ALIPAY_TRADE_NUMBER"
["trade_status"]=> string(13) "TRADE_SUCCESS"
["sign"]=> string(32) "notification_signature"
["sign_type"]=> string(3) "MD5"
}
URL de notification exemple
Une URL de notification typique peut ressembler à ceci, incluant tous les paramètres nécessaires pour le traitement côté serveur :
http://www.example.com/handle_notification?buyer_email=...&out_trade_no=...&total_fee=...&trade_status=TRADE_SUCCESS&sign=...