1. Les packages inutiles avec des codes ACTION clés peuvent être éliminés.
importez-le.sauronssoftware.base64.Base64 ;
importer java.io.IOException ;
importer java.io.PrintWriter ;
importer java.net.HttpURLConnection ;
importer java.util.HashMap ;
importer java.util.Map ;
importer java.util.ResourceBundle ;
importer javax.servlet.http.HttpServletResponse ;
importer org.apache.struts2.ServletActionContext ;
importer org.dom4j.Document ;
importer org.springframework.stereotype.Controller ;
importer com.alibaba.fastjson.JSON ;
importer com.hzdracom.action.BaseAction ;
importer com.hzdracom.config.AlipayConfig ;
importer com.hzdracom.util.AlipaySubmit ;
importer com.hzdracom.util.HTTPService ;
importer com.hzdracom.util.UtilDate ;
importer com.hzlq.source.security.DESUtil ;
/*
* Interface de paiement Alipay
* @auteur ZhuangZi
* @Directions
* @version $Id : AliPayAction.java,v 0.1 2013-3-27 16:49:57 ZhuangZi Exp $
*/
@Contrôleur
la classe publique DokuAction étend BaseAction {
chaîne privée phoneCode ;
frais total de chaîne privée ;
/**
* Appelez l'interface Alipay
* @auteur ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @méthode Alipay
* @Directions appelle l'interface Alipay
* @date 2013-3-27 16:53:35 nul
*/
public void pay() {
essayer {
/*1****Générer un numéro de transaction Alipay, en fonction du temps jusqu'au niveau milliseconde*/
Chaîne out_trade_no = UtilDate.getOrderNum();
/*2*****↓↓↓↓↓↓↓↓↓↓Emballez les paramètres de la requête dans un tableau↓↓↓↓↓↓↓↓↓↓*/
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp = getPayPrama(totalfee, out_trade_no);
/*3*****↓↓↓↓↓↓↓↓↓↓Demander l'interface Alipay ↓↓↓↓↓↓↓↓↓↓*/
String json = AlipaySubmit.buildRequest(sParaTemp, "get", "confirm");
Réponse HttpServletResponse = ServletActionContext.getResponse();
réponse.setContentType("text/html");
réponse.setCharacterEncoding("utf-8");
PrintWriter sorti ;
out = réponse.getWriter();
json = JSON.toJSONString(json);
out.write(json);
out.flush();
out.close();
} catch (IOException e) {
}
}
/**
*
* @auteur ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @method GetPayPrama
* @Directions encapsule les paramètres d'appel d'Alipay
* @date 2013-4-1 17:26:11
* @param montant total des frais
* @param out_trade_no numéro de commande
* @return Map<String,String>
*/
public Map<String, String> getPayPrama(String totalfee, String out_trade_no) {
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp.put("service", "create_direct_pay_by_user");
sParaTemp.put("partenaire", AlipayConfig.partner);
sParaTemp.put("_input_charset", AlipayConfig.input_charset);
sParaTemp.put("payment_type", AlipayConfig.payment_type);
/*Chemin de la page de notification asynchrone du serveur //Nécessite un chemin complet au format http:// et ne peut pas ajouter de paramètres personnalisés tels que ?id=123*/
sParaTemp.put("notify_url", AlipayConfig.notify_url);
/*Chemin de la page de notification de synchronisation de saut de page//Nécessite un chemin complet au format http://. Les paramètres personnalisés tels que ?id=123 ne peuvent pas être ajoutés et ne peuvent pas être écrits sous la forme http://localhost/*/.
sParaTemp.put("return_url", AlipayConfig.return_url);
/*Compte Alipay du vendeur*/
sParaTemp.put("seller_email", AlipayConfig.seller_email);
/*Numéro de commande du marchand*/
sParaTemp.put("out_trade_no", out_trade_no);
/*Nom de la commande*/
sParaTemp.put("sujet", AlipayConfig.subject);
/*Montant du paiement*/
sParaTemp.put("total_fee", totalfee);
/*Description de la commande*/
sParaTemp.put("corps", AlipayConfig.body);
/*Nécessite un chemin complet commençant par http://, par exemple : http://www.xxx.com/myorder.html*/
sParaTemp.put("show_url", AlipayConfig.show_url);
//Horodatage anti-phishing
sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);
/*L'adresse IP du client n'est pas l'adresse IP externe du LAN, telle que : 221.0.0.1*/
sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);
retourner sParaTemp ;
}
chaîne publique getPhoneCode() {
renvoyer le code de téléphone ;
}
public void setPhoneCode (String phoneCode) {
this.phoneCode = phoneCode;
}
chaîne publique getTotalfee() {
retourner le total des frais ;
}
public void setTotalfee (Chaîne totalfee) {
this.totalfee = totalfee ;
}
}
2. La classe AlipayConfig encapsule les paramètres de l'interface Alipay
importer com.hzdracom.util.UtilDate ;
/* *
*Nom de la classe : AlipayConfig
*Fonction : classe de configuration de base
*Détails : définir les informations relatives au compte et le chemin de retour
*Version : 3.3
*Date : 2012-08-10
*illustrer:
*Le code suivant n'est qu'un exemple de code fourni pour faciliter les tests des commerçants. Les commerçants peuvent l'écrire conformément à la documentation technique en fonction des besoins de leurs propres sites Web et ne sont pas tenus d'utiliser ce code.
*Ce code est uniquement destiné à l'apprentissage et à la recherche de l'interface Alipay et est uniquement fourni à titre de référence.
*Conseil : Comment obtenir le code de vérification de sécurité et l'identifiant du partenaire
*1. Utilisez votre compte Alipay sous contrat pour vous connecter au site Web Alipay (www.alipay.com)
*2. Cliquez sur « Services marchands » (https://b.alipay.com/order/myOrder.htm).
*3. Cliquez sur « Interroger l'identité du partenaire (PID) » et « Interroger le code de vérification de sécurité (clé) ».
*Lors de la visualisation du code de vérification de sécurité, après avoir saisi le mot de passe de paiement, la page devient grise. Que dois-je faire ?
*Solution:
*1. Vérifiez la configuration du navigateur et n'autorisez pas le navigateur à bloquer les puces.
*2. Changez de navigateur ou d'ordinateur et reconnectez-vous pour interroger.
*/
classe publique AlipayConfig {
//↓↓↓↓↓↓↓↓↓↓Veuillez configurer vos informations de base ici↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// ID du partenaire, une chaîne de 16 chiffres commençant par 2088
partenaire de chaîne statique public = "2088001466494907";
// Clé privée du commerçant
clé de chaîne statique publique = "fb30213vjc4k4oabt7z4q9e07sfmlmzr" ;
//↑↑↑↑↑↑↑↑↑↑Veuillez configurer vos informations de base ici↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//Pour le débogage, créez le chemin du dossier du journal TXT
public static String log_path = "D://";
//Le format d'encodage de caractères prend actuellement en charge gbk ou utf-8
chaîne statique publique input_charset = "utf-8";
// La méthode de signature n'a pas besoin d'être modifiée
chaîne statique publique sign_type = "MD5" ;
public static String payment_type = "1";
//Obligatoire, ne peut pas être modifié
//Chemin de la page de notification asynchrone du serveur
public static String notify_url = "notify_url.jsp";
//Le chemin complet au format http:// est requis et les paramètres personnalisés tels que ?id=123 ne peuvent pas être ajoutés.
//Chemin de la page de notification de synchronisation de saut de page
public static String return_url = "return_url.jsp";
//Le chemin complet au format http:// est requis. Les paramètres personnalisés tels que ?id=123 ne peuvent pas être ajoutés et http://localhost/ ne peut pas être ajouté.
//Compte Alipay du vendeur
public static String seller_email = "[email protected]";
//requis
//Numéro de commande du marchand
public static String out_trade_no =UtilDate.getOrderNum();
//Le seul numéro de commande dans le système de commande du site marchand, obligatoire
//Nom de la commande
public static String subject = "Recharge de compte caché" ;
//requis
//Description de la commande
public static String body = "Recharge de compte caché" ;
//Adresse d'affichage du produit
public static String show_url = "";
//Horodatage anti-phishing
chaîne statique publique anti_phishing_key="";
/*L'adresse IP du client n'est pas l'adresse IP externe du LAN, telle que : 221.0.0.1*/
public static String exter_invoke_ip="";
}
3. fichier de configuration de jambe de force
<action name="pay" method="pay">
</action>
Ce qui précède est la partie du code clé. Les éléments à noter sont :
1. Vous devez introduire plusieurs classes de l'interface fournie par Alipay dans votre projet, y compris le package Shelf
2. Les adresses notify_url.jsp et return_url.jsp doivent être préparées pour être le chemin complet de l'adresse réseau externe.
3. Écrivez votre propre traitement commercial dans notify_url.jsp, ou vous pouvez écrire directement une interface pour appeler l'interface Alipay.