Plusieurs fichiers de fonction du noyau d'Alipay:
AlipayFunction.java
package com.test.util.alipay; import java.io.filewriter; Importer java.io.ioException; Importer java.net.malformedUrlexception; Importer java.net.url; import java.util.arraylist; Importer java.util.collections; import java.util.hashmap; Importer java.util.list; importation java.util.map; import org.dom4j.Document; Import org.dom4j.DocumentException; import org.dom4j.node; import org.dom4j.io.saxreader; classe publique AlipayFunction {/ ** * Fonction: Générer le résultat de la signature * @param SATRAY Array à signer * @Param Key Key Security Code de vérification * @return Signature Result String * / public static string buildMySign (map sarray, string key) {String Prestr = CreateLinkString (sarray); // Spline tous les éléments du tableau en une chaîne en utilisant le caractère "&" en fonction du "Paramètre = Valeur de paramètre" Prest = Prest + Key; // Connectez directement la chaîne épissée avec la chaîne de code de contrôle de sécurité MySign = md5encrypt.md5 (prestch); retourner mySign; } / ** * Fonction: Supprimez les valeurs et les paramètres de signature nuls dans le tableau * @param SARAY Signature Paramet Group * @return Supprimez les valeurs nulles et le nouveau groupe de paramètres de signature * / Map statique public parafilter (map sarray) {list keys = new ArrayList (sarray.keyset ()); Map sarraynew = new hashmap (); for (int i = 0; i <keys.size (); i ++) {string key = (string) keys.get (i); String Value = (String) sarray.get (key); if (value == null || value.equals ("") || key.equalsignorecase ("signe") || key.equalsignorecase ("Sign_type")) {continuant; } sarraynew.put (clé, valeur); } return sarraynew; } / ** * Fonction: trier tous les éléments du tableau et les épisser en chaînes dans le modèle "&" Selon le modèle "Paramètre = Valeur du paramètre" * @param Params Params Groupes de paramètres qui doivent être triés et participés à l'épissage de caractères * @return String après l'épissage * / public static String CreateLlinkSt (); Collection.Sort (clés); String prestr = ""; for (int i = 0; i <keys.size (); i ++) {string key = (string) keys.get (i); String Value = (String) params.get (clé); if (i == keys.size () - 1) {// Lors de l'épissage, le dernier caractère n'est pas inclus Prestr = Prest + Key + "=" + valeur; } else {prestr = prestr + key + "=" + value + "&"; }} return prostr; } / ** * Fonction: Écrivez des journaux pour des tests faciles (voir les exigences du site Web, vous pouvez également changer pour stocker des enregistrements dans la base de données) * @param Sword Text Contenu à écrire dans le journal * / public static void LOGRESULT (String Sword) {// Ce fichier existe dans le même répertoire que le fichier de démarrage du serveur d'applications, le nom du fichier est le serveur Alipay Temps Server {FileWriter écrivain = nouveau) FileWriter ("d: // alipay_log" + system.currenttimemillis () + ".txt"); écrivain.write (épée); écrivain.close (); } catch (exception e) {e.printStackTrace (); }} / ** * Fonction: Utilisé pour empêcher le phishing, appelez l'interface Query_timestamp pour obtenir la fonction de traitement horodatoch query_timestamp (String Partner) lève MalformEdUrException, documentException, ioException {String strurl = "https://mapi.alipay.com/gateway.do?service=Query_timestamp&partner="+partner; StringBuffer Buf1 = new StringBuffer (); SAXREDER Reader = new saxReader (); Document Doc = Reader.read (New URL (Strurl) .OpenStream ()); List <Node> nodeList = doc.selectNodes ("// alipay / *"); pour (nœud nœud: nodeList) {// intercepter les informations qui n'ont pas besoin d'être analysées if (node.getName (). Equals ("is_success") && node.getText (). Equals ("t")) {// déterminer s'il existe une liste de marque réussie <Node> NodeList1 = doc.selectNodes ("// // // / TimStamp / *"); for (node node1: nodeList1) {buf1.append (node1.getText ()); }} return buf1.toString (); }}}Alipaynotify.java
package com.test.util.alipay; Importer java.io.bufferedReader; Importer java.io.inputStreamReader; import java.net.httpurlconnection; Importer java.net.url; importation java.util.map; import com.test.constants.alipayconfig; classe publique AlipayNotify {/ ** * Fonction: générer des résultats de signature basés sur les informations renvoyées * @param params NOTIFICATION DES PARAMETER RETOURNÉ * @Param Key Security Code de vérification * @return Signature Résultats générés * / public Static String GetMySign (Map Params, String Key) {Map Sparanew = AlipayFunction. String mySign = AlipayFunction.buildMySign (Sparanew, Key); // Get Signature Result Return MySign; } / ** * * Fonction: obtenez le résultat ATN du serveur distant, vérifiez l'URL de retour * @param notify_id notify de vérification ID * @return Server ATN Result * Vérifier le jeu de résultats: * Cette erreur se produit lorsque le paramètre de commande non valide est incorrect. Veuillez vérifier si le partenaire et la clé sont vides dans le processus de retour * True Return Informations correctes * Faux Veuillez vérifier les problèmes de port de blocage ou de serveur de serveur et vérifiez si le temps dépasse une minute * / public statique String Verify (String notify_id) {// Obtenez le résultat ATN du serveur distant et vérifiez s'il s'agit d'une demande envoyée par le serveur Alipay Transport = AlipayConfig.transport; String partenaire = AlipayConfig.Partner; Chaîne trèsfy_url = ""; if (transport.equalsignorecase ("https")) {trèsfy_url = "https://www.alipay.com/cooperate/gateway.do?service=notify_verify"; } else {trèsfy_url = "http://notify.alipay.com/trade/notify_query.do?"; } trèsfy_url = trèsfy_url + "& partenaire =" + partenaire + "¬ify_id =" + notify_id; String ResponseTxt = CheckUrl (trèsfy_url); return Responsetxt; } / ** * * Fonction: obtenez le résultat ATN du serveur distant * @param urlvalue Spécifiez l'adresse du chemin d'urgence * @return Server Résultat * Résultat de vérification: * Cette erreur se produit lorsque le paramètre de commande non valide est incorrect. Veuillez vérifier si le partenaire et la clé sont vides dans le processus de retour * TRUE RETOUR RETOUR Les informations correctes * FALSE, veuillez vérifier le pare-feu ou les problèmes de port de blocage du serveur et vérifier que le temps dépasse une minute * / public static string checkUrl (String UrlValue) {String inputLine = ""; essayez {url url = new url (urlvalue); HttpurlConnection urlConnection = (httpurlconnection) url .openconnection (); BufferedReader dans = new BufferedReader (new inputStreamReader (urlConnection.getInputStream ())); inputLine = in.readline (). toString (); } catch (exception e) {e.printStackTrace (); } return inputline; }}AlipayService.java
package com.test.util.alipay; import java.util.arraylist; import java.util.hashmap; Importer java.util.list; importation java.util.map; classe publique AlipayService {/ ** * Fonction: Construire la soumission de formulaire html * @param coopérative de partenaire ID * @param vendeur_email Signer le compte Alipay ou le vendeur Alipay Compte * @param return_url La page qui saute après le paiement doit être utilisée pour commencer par HTTP. Les paramètres personnalisés tels que? Id = 123 ne sont pas autorisés à être ajoutés * @param notify_url Pendant le processus de transaction, la page notifiée par le serveur doit utiliser le chemin complet du format ouvert par HTTP. Les paramètres personnalisés tels que? Id = 123 ne peuvent pas être ajoutés. * @param show_url L'adresse d'affichage du produit du site Web et les paramètres personnalisés tels que? Id = 123 ne peuvent pas être ajoutés. * @param out_trade_no Veuillez faire correspondre le numéro de commande unique dans le système de commande de votre site Web * @param Sujet Le nom de commande s'affiche dans le "nom du produit" dans le caissier Alipay et dans la liste du "nom du produit" dans la gestion des transactions d'Alipay. * @param Description de la commande corporelle, détails de la commande, notes de commande, affichée dans la "description du produit" dans le caissier Alipay * @param total_fee Le montant total de la commande est affiché dans le "Total Payabley" dans la caisse d'Alipay * @param PaymentMethod Default Method, quatre valeurs sont disponibles: BankPay (banque en ligne); dessin animé (dessin animé); DirectPay (équilibre); Cash (paiement Internet) * @param defaultBank Code bancaire en ligne par défaut, voir club.alipay.com/read.php?tid=8681379 * @param Encrypt_key Timestamp anti-phishing * @param exter_invoke_ip L'adresse IP de l'ordinateur local de l'acheteur * @param extra_common_param ne sera pas des paramètres personnalisés, qui ne seront pas sur des caractères spéciaux (sauf pour des caractères spéciaux, etc. La page * @param acheteur_émail par défaut Acheteur Alipay Compte * @param royalty_type Type d'engagement, qui est une valeur fixe: 10, et n'a pas besoin d'être modifiée * @param royalty_parameters Engagement Informations Ensemble, et d'obtenir dynamiquement chaque compte de collecte de bénéfices, de chaque montant de profit, et chaque description de profit pour chaque transaction basée sur la situation du site Web de Merchant. Seuls 10 caractères peuvent être configurés dans la plupart * @param input_charset Le format d'encodage des caractères prend actuellement en charge GBK ou UTF-8 * @Param Key Security Verification Code * @param SIGN_TYPE Le formulaire de signature n'a pas besoin d'être modifié * @Param Key Security Verification Code show_url, chaîne out_trade_no, sujet de chaîne, corps de chaîne, chaîne total_fee, chaîne payMethod, chaîne defaultBank, string anti_phishing_key, string exter_invoke_ip, chaîne extra_common_param, string acheteur_email, string royalty_type, royalty_payeters, string input_charset, string key, string sign_type, string it_b_pay) tu; spara = new hashmap (); spara.put ("service", "create_direct_pay_by_user"); Spara.put ("PAYS_TYPE", "1"); Spara.put ("partenaire", partenaire); spara.put ("Seller_email", seller_email); spara.put ("return_url", return_url); spara.put ("notify_url", notify_url); spara.put ("_ input_charset", input_charset); spara.put ("show_url", show_url); spara.put ("out_trade_no", out_trade_no); Spara.put ("Sujet", sujet); Spara.put ("corps", corps); spara.put ("total_fee", total_fee); Spara.put ("PayMethod", PayMethod); spara.put ("DefaultBank", defaultBank); spara.put ("anti_phishing_key", anti_phishing_key); spara.put ("exter_invoke_ip", exter_invoke_ip); spara.put ("extra_common_param", extra_common_param); spara.put ("acheteur_email", acheteur_email); spara.put ("royalty_type", royalty_type); spara.put ("royalty_parameters", royalty_parameters); spara.put ("it_b_pay", it_b_pay); Map Sparanew = alipayFunction.Parafilter (Spara); // Supprime les valeurs nuls dans le tableau et les paramètres de signature String MySign = AlipayFunction.BuildMySign (Sparanew, Key); // Générez le résultat de signature StringBuffer sbhtml = new StringBuffer (); List keys = new ArrayList (sparanew.KeySet ()); String Gateway = "https://www.alipay.com/cooperate/gateway.do?"; // Get Method Pass // sbhtml.append ("<form id = /" AlipaySubmit / "name = /" AlipaySubmit / "Action = /" "+ Gateway +" _Input_Charset = "+ Input_Charset +" / "Method = /" get / ">"); // POST Method Pass (get and post doit être sélectionné) sbhtml.append ("<form id = /" AlipaySubmit / "name = /" AlipaySubmit / "Action = /" "+ Gateway +" _Input_Charset = "+ input_charset +" / "Method = /" Post / ">"); for (int i = 0; i <keys.size (); i ++) {String name = (string) keys.get (i); String Value = (String) Sparanew.get (name); sbhtml.append ("<input type = /" Hidden / "name = /" "+ name +" / "value = /" + value + "/" // ");} sbhtml.append (" <input type = / "Hidden /" name = "signe /" value = / "" + mysign + "/" /> "); sbhtml. name = / "Sign_Type /" value = / "" + signe_type + "/" // "); // Soumettre le contrôle du bouton, veuillez ne pas contenir l'attribut de nom sbhtml.APPEND (" <input type = / "soumide /" value = / "Alipay Confirmation Payt /"> </ form> "); sbhtml.append ("<script> document.forms ['alipaysubmit'].Md5encrypt.java
package com.test.util.alipay; Importer java.io.UNSUPPORTEDENCODINGException; Importer Java.Security.MessagediGest; importer java.security.nosuchalgorithMexception; import com.test.constants.alipayconfig; / ** * Fonction: Alipay MD5 chiffre et traite les fichiers de base, et ne nécessite pas de modification * Version: 3.1 * Date de modification: 2010-11-01 * Description: * Le code suivant n'est qu'un exemple de code fourni pour la commodité pour les tests marchands. Les commerçants peuvent l'écrire selon les besoins de leur propre site Web et selon des documents techniques. Ce code n'est pas nécessairement requis. * This code is only for learning and researching the Alipay interface, but only provides a * */ public class Md5Encrypt { /** * Used building output as Hex */ private static final char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'F'}; / ** * MD5 Encryptage des chaînes * * @param texte * PlainText * * @return CiPherText * / public static String md5 (String Text) {MessagediGest msgDigest = null; essayez {msgdigest = messagediGest.getInstance ("md5"); } catch (NoSuchalgorithMexception e) {Throw New illégalStateException ("Le système ne prend pas en charge l'algorithme MD5."); } essayez {msgdigest.update (text.getBytes (alipayconfig.input_charset)); // Notez que la modification de l'interface est signée dans le format de codage spécifié} Catch (UnpportDenCcodingException e) {Throw New illégalStateException ("Système ne prend pas en charge votre EncodingException."); } byte [] bytes = msgdigest.digest (); String md5str = new String (encodeHex (bytes)); retour md5str; } public static char [] encodehex (byte [] data) {int l = data.length; char [] out = new char [l << 1]; // Deux caractères forment la valeur hexagonale. for (int i = 0, j = 0; i <l; i ++) {out [j ++] = chiffres [(0xf0 & data [i]) >>> 4]; out [j ++] = chiffres [0x0f & data [i]]; } return out; }}AlipayConfig.java Voici quelques paramètres pour le numéro de compte, la clé, l'adresse de connexion de rappel, etc.
package com.test.constants; import java.util.properties; import com.test.util.propertiesutil; classe publique AlipayConfig {private statique AlipayConfig alconfig = null; privé AlipayConfig () {} public static AlipayConfig getInstance () {if (alconfig == null) {alconfig = new AlipayConfig (); } return alconfig; } // Comment obtenir le code de vérification de la sécurité et l'ID du partenaire // 1. Visitez le centre de service Alipay Merchant (B.Alipay.com), puis connectez-vous à votre compte Alipay contracté. // 2. Accès aux "services techniques" → "Télécharger les documents d'intégration de la technologie" (https://b.alipay.com/support/helperapply.htm?action=seltegration) // 3. Dans "Aide à l'intégration de l'auto-service", cliquez sur "Partner ID Query" et "Séfidémie Code de vérification (clé)" // ↓ helpminèsminèsmincoursor d'orscédéciembrecédécéantissse ↓minemindancesmineancesmincisancesmincielancesmine d'orscriptiondéminellecédécéréecéréecéréecéréecéréecéréecéréenienie battue d'accordémentmine d'ordécédécéréciecéréscécérocéruculescélèculescéorèleminellesmine. Ches celles d'ordres. partenaire = "2088601003079118"; public static String Service = "create_direct_pay_by_user"; // Code de vérification de sécurité des transactions, chaîne 32 bits composée de nombres et de lettres de chaîne statique publique Key = "zxcdvxgksaam2zjrmv5cv0p4jqesaioh"; // Inscrivez-vous pour le compte Alipay ou le paiement du vendeur Alipay Compte Alipay STATIQUE STATIQUE STRAGNE FELLER_EMAIL = "[email protected]"; // Lire le fichier de configuration // notify_url La page de la notification du serveur pendant la transaction doit utiliser le chemin complet dans le format du format http: //, et des paramètres personnalisés tels que? Id = 123 ne sont pas autorisés à être ajoutés à la chaîne statique publique notify_url = "http: www.xxx.com/projectName/alipaytrade.action"; // La page qui saute après le paiement doit utiliser le chemin complet dans le format de http: //., Et les paramètres personnalisés tels que? Id = 123 ne sont pas autorisés à être ajoutés. Le nom de domaine de return_url ne peut pas être écrit comme http: //localhost/js_jsp_utf8/return_url.jsp, sinon l'exécution return_url sera invalide. // String statique publique return_url = "http: www.xxx.com/projectname/alipaytrade.action"; // L'adresse d'affichage du produit du site Web, les paramètres personnalisés tels que? Id = 123 ne sont pas autorisés à être ajoutés publics statiques publiques show_url = "http://www.alipay.com"; // le nom du bénéficiaire, tel que: nom de l'entreprise, nom du site Web, nom du bénéficiaire, etc. String statique public Mainname = "Nom du payeur"; // ↑↑↑cincielterneesesespépliciques ↑↑↑ 201esesviseestures String Transport = "http"; }Voici un processus d'application simple:
Je ne parlerai pas de ce que vous appelez de JSP, car cela vient de passer à l'arrière-plan, quel est le prix et d'autres paramètres.
Voici une description du traitement en arrière-plan:
PAYSACTION.JAVA
/ ** * Obtenez le numéro de commande de transaction Alipay * @return * / public synchronisé Static String GetOrderNum () {Date Date = new Date (); DateFormat df = new SimpledateFormat ("yyyymmddhhmmsssss"); return df.format (date); } protégé httpServLetRequest getRequest () {return servletActionContext.getRequest (); } // Numéro d'ordre de transaction Alipay String String OrderNum = GetOrderNum (); // le montant total de cette transaction getRequest (). SetAttribute ("TotalMoney", "0,01"); // le numéro de commande de cette transaction getRequest (). SetAttribute ("out_trade_no", ordonnance); // Nom du produit Description getRequest (). SetAttribute ("Subject", "Nom du produit"); // Le processus de stockage de ces informations de commande dans la base de données est omis icialipay.jsp
<% @ page import = "com.test.concstants.alipayconfig"%> <% @ page import = "com.test.util.alipay.utildate"%> <% @ page import = "com.test.util.alipay.alipayservice"%> <% / * function: la page d'urgence du produit (page d'entrée) * Détails: cette page est la page portale de l'interface, l'information sur le produit *. * Date: 2010-11-01 * Description: * Le code suivant n'est qu'un exemple de code fourni pour la commodité des tests marchands. Les commerçants peuvent l'écrire en fonction des besoins de leur propre site Web et selon des documents techniques, et il n'est pas nécessaire d'utiliser ce code. * Ce code est pour l'apprentissage et la recherche de l'interface Alipay uniquement et n'est fourni qu'en référence. *********************************. Nous aurons des ingénieurs techniques professionnels pour vous contacter pour vous aider à résoudre le problème. Vous pouvez également vous rendre sur le forum Alipay (http://club.alipay.com/read-htm-tid-8681712.html) pour trouver des solutions pertinentes. Les paramètres à adopter ne sont pas autorisés à être vides, ou ils n'apparaissent pas dans le tableau, les contrôles cachés ou les liens d'URL. ***************. <html> <éadfr> <méta http-equiv = "contenu-type" contenu = "text / html; charset = utf-8"> <itle> test </ title> <link rel = "shortcut icon" href = "favicon.ico"> <meta name = "keywords" contenu = "" /> <méta nom = "description" contenu = " type = "text / css"> .font_content {font-family: "客"; taille de police: 14px; Couleur: # FF6600; } .font_title {Font-Family: "客"; taille de police: 16px; Couleur: # FF0000; Police-poids: Bold; } table {border: 1px solide #cccccc; } </ style> <script type = "text / javascript"> var _gaq = _gaq || []; _gaq.push (['_ setAccount', 'UA-25469955-1']); _gaq.push (['_ trackPageView']); (function () {var ga = document.createelement ('script'); ga.type = 'text / javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol? 'https: // ssl': 'http: // www') + '.. = document.getElementsByTagName ('script') [0]; </cript> </-head> <% //request.Setcharacterencoding("utf-8 "); // Informations de configuration dans AlipyConfig.java (Impossible de modifier) String input_charset = alipayconfig.getInstance (). Input_charset; String Sign_Type = AlipayConfig.getInstance (). Sign_type; String seller_email = alipayconfig.getInstance (). Seller_email; String partenaire = AlipayConfig.getInstance (). Partenaire; String key = alipayconfig.getInstance (). Key; String show_url = alipayconfig.getInstance (). Show_url; String notify_url = alipayconfig.getInstance (). Notify_url; String return_url = alipayconfig.getInstance (). Return_url; String it_b_pay = alipayconfig.getInstance (). It_b_pay; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// / //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// / //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// / ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// / //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// / ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// / //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// / ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// / String sujet = (String) request.getAttribute ("Subject"); // Description de la commande, les détails de la commande, les notes de commande sont affichées dans la "description du produit" dans le corps de chaîne de caissier Alipay = (String) request.getAttribute ("Body"); // Le montant total de la commande est affiché dans le "Total Payable" dans la chaîne de caissier Alipay Total_Fee = (String) request.getAttribute ("TotalMoney"); // Paramètres de fonction étendue - Méthode de paiement par défaut // String Pay_Mode = request.getParameter ("Pay_bank"); String PaytMethod = ""; // Méthode de paiement de défaut, quatre valeurs sont disponibles: BankPay (banque en ligne); dessin animé (dessin animé); DirectPay (équilibre); Cash (paiement Internet) chaîne de défaut de défaut = ""; // Code bancaire en ligne par défaut, voir http://club.alipay.com/read.php?tid=8681379 /*if(pay_mode.equals("directPay ")) {PayMethod =" DirectPay "; } else {PayMethod = "BankPay"; DefaultBank = Pay_Mode; } * / // Paramètres de fonction étendue - Anti-Phishish // Veuillez choisir soigneusement l'activation de la fonction anti-phishing // Une fois que Exter_invoke_ip et Anti-Phishing_key ont été définis, ils deviendront les paramètres requis // Après avoir activé la fonction anti-phishing, le serveur et l'ordinateur local doivent prendre en charge l'analyse XML à distance, veuillez configurer l'environnement. // Il est recommandé d'utiliser la publication pour demander une chaîne de données anti_phishing_key = ""; // Strime d'horodatage anti-phishing exter_invoke_ip = ""; // Obtenez l'adresse IP du client, suggérez: écrivez un programme pour obtenir l'adresse IP du client // Par exemple: // anti-phishing_key = alipayfunction.query_timestamp (partenaire); // Obtenez une fonction d'horodatage anti-phishing // exter_invoke_ip = "202.1.1.1"; // Paramètres de fonction étendus - Autre chaîne extra_common_param = ""; // Paramètres personnalisés, peut stocker n'importe quel contenu (sauf des caractères spéciaux tels que = et &), et ne sera pas affiché sur la chaîne de page acheteur_email = "137672927"; // Acheteur par défaut Strime de compte Alipay Extend_param = ""; // Paramètres de fonction étendue - Split Profit (Si vous souhaitez l'utiliser, veuillez attribuer des valeurs en fonction du format requis par le commentaire) String royalty_type = ""; // Type de commission, cette valeur est une valeur fixe: 10, pas besoin de modifier la chaîne royalty_parameters = ""; // L'ensemble d'informations de commission, obtenez dynamiquement chaque compte de paiement partagé, chaque montant divisé et chaque description divisée de chaque transaction en fonction de la situation du site Web du marchand. Vous ne pouvez configurer que 10 éléments // la somme de chaque montant de partage doit être inférieure ou égale à Total_Fee // Le format de l'ensemble d'informations de commission est: Email_1 ^ Montant 1 ^ Remarque 1 | Email_2 ^ Montant 2 ^ Remarque 2 // Par exemple: // Royalty_Type = "10" // Royalty_Parameters = "[email protected]^0.01^^^^^rMark 1|[email protected]^0.01^REMARK 2 "// L'ensemble 1H avant sera retourné // Erreur Description: Désolé, le marchand n'a pas l'autorisation de délai de congé personnalisé à activer, veuillez contacter votre marchand. // Code d'erreur: self_timeout_not_support it_b_pay = ""; // Constructeur, générer une chaîne d'URL de demande shtmltext = alipayservice.buildform (partenaire, seller_email, return_url, notify_url, show_url, out_trade_no, sujet, body, total_fee, extramethod royalty_type, royalty_parameters, input_charset, key, signe_type, it_b_pay); %> <body> <table align = "Center" CellPadding = "5" Cellpacing = "0"> <tr> <td align = "Center" Colspan = "2"> Numéro de commande de commande: </td> </ TD Align = "Left"> <% = Out_trade_No %> <td align = "droite"> Montant de paiement total: </td> <td align = "Left"> <% = Total_Fee%> </td> </tr> <tr> <td align = "Center" ColSpan = "2"> <% = shtmltext%> </td> </tr> </pable> </ body> </html>Interface au rappel Alipay: Alipaynotify.java
package com.test.action.payment; Importer java.util.date; Importer java.util.list; import com.test.action.base.baseAction; import com.test.dao.model.paymentCenter.orderForm; import com.test.dao.model.paymentcenter.orderList; import com.test.dao.model.paymentcenter.userpurview; La classe publique AlipayNotify étend BaseAction {private static final long SerialVersionUID = 1l; String privé acheteur_email; Acheteur long privé_id; Exterface de chaîne privée; String privé is_success; chaîne privée notify_id; chaîne privée notify_time; chaîne privée Notify_type; chaîne privée out_trade_no; Private String Payment_Type; String privé seller_email; Private Long Seller_id; Sujet de chaîne privée; float privé total_fee; String privé Trade_no; String privé Trade_status; signe de chaîne privé; String privé Sign_Type; Commande privée de; //… les méthodes Get and Set sont omises ici……………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………. ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………. OF.SetTradestatus (1); de.setTradeno (this.trade_no); de.setNotifyTime (new Date ()); OrderFormService.UpdateoldModel (OF); // Update list <ordlist> orderList = OrderListService .FindOorderFormsByoutTradeno (this.out_trade_no); pour (OrderList ol: OrderList) {// Le code logique pour le traitement de l'ordre est omis ici ………………}} // Une fois le rappel réussi, renvoyez le succès à Alipay et renvoyez le succès; } return "échec"; }}De cette façon, l'interface d'arrivée du compte instantané d'Alipay est implémentée.
Ce qui précède est la mise en œuvre Java de la fonction de paiement instantanée en Alipay d'Alipay que je vous ai présenté. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!