1. Unnötige Pakete mit wichtigen ACTION-Codes können eliminiert werden.
import it.sauronsoftware.base64.Base64;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.util.HashMap;
java.util.Map importieren;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.dom4j.Document;
import org.springframework.stereotype.Controller;
import com.alibaba.fastjson.JSON;
import com.hzdracom.action.BaseAction;
import com.hzdracom.config.AlipayConfig;
import com.hzdracom.util.AlipaySubmit;
import com.hzdracom.util.HTTPService;
import com.hzdracom.util.UtilDate;
import com.hzlq.source.security.DESUtil;
/*
* Alipay-Zahlungsschnittstelle
* @Autor ZhuangZi
* @Directions
* @version $Id: AliPayAction.java,v 0.1 27.3.2013 16:49:57 ZhuangZi Exp $
*/
@Regler
öffentliche Klasse AliPayAction erweitert BaseAction {
privater String phoneCode;
private String-Gesamtgebühr;
/**
* Rufen Sie die Alipay-Schnittstelle auf
* @Autor ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @method Alipay
* @Directions ruft die Alipay-Schnittstelle auf
* @Datum 27.03.2013 16:53:35 Uhr ungültig
*/
public void pay() {
versuchen {
/*1****Generieren Sie eine Alipay-Transaktionsnummer, basierend auf der Zeit bis zur Millisekundenebene*/
String out_trade_no = UtilDate.getOrderNum();
/*2*****↓↓↓↓↓↓↓↓↓↓Packen Sie die Anforderungsparameter in ein Array↓↓↓↓↓↓↓↓↓↓*/
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp = getPayPrama(totalfee, out_trade_no);
/*3*****↓↓↓↓↓↓↓↓↓↓Alipay-Schnittstelle anfordern ↓↓↓↓↓↓↓↓↓↓*/
String json = AlipaySubmit.buildRequest(sParaTemp, "get", "confirm");
HttpServletResponse Antwort = ServletActionContext.getResponse();
Response.setContentType("text/html");
Response.setCharacterEncoding("utf-8");
PrintWriter aus;
out = Response.getWriter();
json = JSON.toJSONString(json);
out.write(json);
out.flush();
out.close();
} Catch (IOException e) {
}
}
/**
*
* @Autor ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @method GetPayPrama
* @Directions kapselt die Parameter für den Aufruf von Alipay
* @date 2013-4-1 17:26:11 Uhr
* @param Gesamtgebührenbetrag
* @param out_trade_no Bestellnummer
* @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("partner", AlipayConfig.partner);
sParaTemp.put("_input_charset", AlipayConfig.input_charset);
sParaTemp.put("zahlungstyp", AlipayConfig.zahlungstyp);
/*Pfad der asynchronen Benachrichtigungsseite des Servers //Erfordert einen vollständigen Pfad im http://-Format und kann keine benutzerdefinierten Parameter wie ?id=123 hinzufügen*/
sParaTemp.put("notify_url", AlipayConfig.notify_url);
/*Pfad der Seitensprung-Synchronisierungsbenachrichtigung//Erfordert einen vollständigen Pfad im http://-Format. Benutzerdefinierte Parameter wie ?id=123 können nicht hinzugefügt werden und können nicht als http://localhost/*/ geschrieben werden.
sParaTemp.put("return_url", AlipayConfig.return_url);
/*Alipay-Konto des Verkäufers*/
sParaTemp.put("seller_email", AlipayConfig.seller_email);
/*Händlerbestellnummer*/
sParaTemp.put("out_trade_no", out_trade_no);
/*Bestellname*/
sParaTemp.put("subject", AlipayConfig.subject);
/*Zahlungsbetrag*/
sParaTemp.put("total_fee", totalfee);
/*Bestellbeschreibung*/
sParaTemp.put("body", AlipayConfig.body);
/*Erfordert einen vollständigen Pfad, der mit http:// beginnt, zum Beispiel: http://www.xxx.com/myorder.html*/
sParaTemp.put("show_url", AlipayConfig.show_url);
//Anti-Phishing-Zeitstempel
sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);
/*Die IP-Adresse des Clients ist nicht die externe IP-Adresse des LAN, wie zum Beispiel: 221.0.0.1*/
sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);
return sParaTemp;
}
öffentlicher String getPhoneCode() {
return phoneCode;
}
public void setPhoneCode(String phoneCode) {
this.phoneCode = phoneCode;
}
öffentlicher String getTotalfee() {
Rückgabe-Gesamtgebühr;
}
public void setTotalfee(String totalfee) {
this.totalfee = Gesamtgebühr;
}
}
2. Die AlipayConfig-Klasse kapselt Alipay-Schnittstellenparameter
import com.hzdracom.util.UtilDate;
/* *
*Klassenname: AlipayConfig
*Funktion: Basiskonfigurationsklasse
*Details: Kontobezogene Informationen und Rückgabepfad festlegen
*Version: 3.3
*Datum: 10.08.2012
*veranschaulichen:
*Der folgende Code ist nur ein Beispielcode, der Händlern das Testen erleichtert. Händler können ihn gemäß der technischen Dokumentation entsprechend den Anforderungen ihrer eigenen Websites schreiben und sind nicht verpflichtet, diesen Code zu verwenden.
*Dieser Code dient nur zum Erlernen und Recherchieren der Alipay-Schnittstelle und dient nur als Referenz.
*Tipp: So erhalten Sie den Sicherheitsverifizierungscode und die Partner-ID
*1. Melden Sie sich mit Ihrem vertraglich vereinbarten Alipay-Konto auf der Alipay-Website an (www.alipay.com).
*2. Klicken Sie auf „Händlerdienste“ (https://b.alipay.com/order/myOrder.htm)
*3. Klicken Sie auf „Partneridentität (PID) abfragen“ und „Sicherheitsüberprüfungscode (Schlüssel) abfragen“.
*Beim Anzeigen des Sicherheitsverifizierungscodes wird die Seite nach Eingabe des Zahlungspassworts grau. Was soll ich tun?
*Lösung:
*1. Überprüfen Sie die Browserkonfiguration und lassen Sie nicht zu, dass der Browser Aufzählungsfelder blockiert.
*2. Wechseln Sie den Browser oder Computer und melden Sie sich erneut an, um eine Abfrage durchzuführen.
*/
öffentliche Klasse AlipayConfig {
//↓↓↓↓↓↓↓↓↓↓Bitte konfigurieren Sie hier Ihre Basisinformationen↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// Partner-ID, eine 16-stellige Zeichenfolge, beginnend mit 2088
public static String partner = "2088001466494907";
// Privater Schlüssel des Händlers
public static String key = "fb30213vjc4k4oabt7z4q9e07sfmlmzr";
// ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ Bitte konfigurieren Sie hier Ihre Grundinformationen ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
//Zum Debuggen erstellen Sie den TXT-Protokollordnerpfad
öffentlicher statischer String log_path = "D://";
// Das Zeichenkodierungsformat unterstützt derzeit GBK oder UTF-8
öffentlicher statischer String input_charset = "utf-8";
// Die Signaturmethode muss nicht geändert werden
öffentlicher statischer String sign_type = "MD5";
öffentlicher statischer String payment_type = „1“;
//Erforderlich, kann nicht geändert werden
//Pfad der asynchronen Benachrichtigungsseite des Servers
öffentlicher statischer String notify_url = "notify_url.jsp";
//Der vollständige Pfad im http://-Format ist erforderlich und benutzerdefinierte Parameter wie ?id=123 können nicht hinzugefügt werden.
//Pfad der Seitensprung-Synchronisierungsbenachrichtigungsseite
öffentlicher statischer String return_url = "return_url.jsp";
//Der vollständige Pfad im http://-Format ist erforderlich. Benutzerdefinierte Parameter wie ?id=123 können nicht hinzugefügt werden und http://localhost/ kann nicht hinzugefügt werden.
//Alipay-Konto des Verkäufers
öffentlicher statischer String seller_email = "[email protected]";
//erforderlich
//Bestellnummer des Händlers
öffentlicher statischer String out_trade_no =UtilDate.getOrderNum();
//Die einzige Bestellnummer im Bestellsystem der Händler-Website, erforderlich
//Bestellname
public static String subject = „Kontoaufladung versteckt“;
//erforderlich
//Bestellbeschreibung
public static String body = „Versteckte Kontoaufladung“;
//Produktanzeigeadresse
öffentlicher statischer String show_url = "";
//Anti-Phishing-Zeitstempel
öffentlicher statischer String anti_phishing_key="";
/*Die IP-Adresse des Clients ist nicht die externe IP-Adresse des LAN, wie zum Beispiel: 221.0.0.1*/
öffentlicher statischer String exter_invoke_ip="";
}
3. Strut-Konfigurationsdatei
<action name="pay" method="pay">
</action>
Das Obige ist der Schlüsselcodeteil. Zu beachten sind:
1. Sie müssen mehrere Klassen der von Alipay bereitgestellten Schnittstelle in Ihr Projekt einführen, einschließlich des Shelf-Pakets
2. Die Adressen notify_url.jsp und return_url.jsp sollten so vorbereitet werden, dass sie den vollständigen Pfad der externen Netzwerkadresse darstellen.
3. Schreiben Sie Ihre eigene Geschäftsverarbeitung in notify_url.jsp, oder schreiben Sie direkt eine Schnittstelle zum Aufrufen der Alipay-Schnittstelle.