1. Ненужные пакеты с ключевыми кодами ACTION можно удалить.
импортируйте it.sauronsoftware.base64.Base64;
импортировать java.io.IOException;
импортировать java.io.PrintWriter;
импортировать java.net.HttpURLConnection;
импортировать java.util.HashMap;
импортировать java.util.Map;
импортировать java.util.ResourceBundle;
импортировать javax.servlet.http.HttpServletResponse;
импортировать org.apache.struts2.ServletActionContext;
импортировать org.dom4j.Document;
импортировать org.springframework.stereotype.Controller;
импортировать com.alibaba.fastjson.JSON;
импортировать com.hzdracom.action.BaseAction;
импортировать com.hzdracom.config.AlipayConfig;
импортировать com.hzdracom.util.AlipaySubmit;
импортировать com.hzdracom.util.HTTPService;
импортировать com.hzdracom.util.UtilDate;
импортировать com.hzlq.source.security.DESUtil;
/*
* Платежный интерфейс Alipay
* @автор Чжуан Цзы
* @Directions
* @version $Id: AliPayAction.java,v 0.1 27.03.2013, 16:49:57 ZhuangZi Exp $
*/
@Контроллер
публичный класс AliPayAction расширяет BaseAction {
частный строковый телефонный код;
общая сумма частной строки;
/**
* Вызов интерфейса Alipay
* @автор Чжуан Цзы
* @class com.hzdracom.alipay.action.AliPayAction
* @method AliPay
* @Directions вызывает интерфейс Alipay.
* @date 2013-3-27 16:53:35 недействительно
*/
общественная недействительная оплата () {
пытаться {
/*1****Сгенерировать номер транзакции Alipay на основе времени до миллисекунды*/
Строка out_trade_no = UtilDate.getOrderNum();
/*2*****↓↓↓↓↓↓↓↓↓↓Упаковать параметры запроса в массив↓↓↓↓↓↓↓↓↓↓*/
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp = getPayPrama(totalfee, out_trade_no);
/*3*****↓↓↓↓↓↓↓↓↓↓Запросить интерфейс Alipay ↓↓↓↓↓↓↓↓↓↓*/
String json = AlipaySubmit.buildRequest(sParaTemp, «получить», «подтвердить»);
Ответ HttpServletResponse = ServletActionContext.getResponse();
response.setContentType("текст/html");
response.setCharacterEncoding("utf-8");
PrintWriter вышел;
выход = ответ.getWriter();
json = JSON.toJSONString(json);
out.write(JSON);
out.flush();
выход.закрыть();
} catch (IOException e) {
}
}
/**
*
* @автор Чжуан Цзы
* @class com.hzdracom.alipay.action.AliPayAction
* @method GetPayPrama
* @Directions инкапсулирует параметры звонка в Alipay.
* @date 2013-4-1 17:26:11
* @param общая сумма комиссии
* @param out_trade_no номер заказа
* @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("партнер", AlipayConfig.partner);
sParaTemp.put("_input_charset", AlipayConfig.input_charset);
sParaTemp.put("Payment_type", AlipayConfig.Payment_type);
/*Путь к странице асинхронных уведомлений сервера //Требуется полный путь в формате http:// и нельзя добавлять пользовательские параметры, такие как ?id=123*/
sParaTemp.put("notify_url", AlipayConfig.notify_url);
/*Путь к странице уведомления о переходе на страницу//Требуется полный путь в формате http://. Пользовательские параметры, такие как ?id=123, нельзя добавлять и записывать как http://localhost/*/.
sParaTemp.put("return_url", AlipayConfig.return_url);
/*Счет продавца в Alipay*/
sParaTemp.put("seller_email", AlipayConfig.seller_email);
/*Номер заказа продавца*/
sParaTemp.put("out_trade_no", out_trade_no);
/*Название заказа*/
sParaTemp.put("субъект", AlipayConfig.subject);
/*Сумма платежа*/
sParaTemp.put("total_fee", totalfee);
/*Описание заказа*/
sParaTemp.put("body", AlipayConfig.body);
/*Требуется полный путь, начинающийся с http://, например: http://www.xxx.com/myorder.html*/
sParaTemp.put("show_url", AlipayConfig.show_url);
//Временная метка защиты от фишинга
sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);
/*IP-адрес клиента не является внешним IP-адресом локальной сети, например: 221.0.0.1*/
sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);
вернуть сПараТемп;
}
публичная строка getPhoneCode() {
вернуть код телефона;
}
public void setPhoneCode (String phoneCode) {
this.phoneCode = phoneCode;
}
публичная строка getTotalfee() {
возврат общей суммы;
}
public void setTotalfee (String totalfee) {
this.totalfee = общая плата;
}
}
2. Класс AlipayConfig инкапсулирует параметры интерфейса Alipay.
импортировать com.hzdracom.util.UtilDate;
/* *
*Название класса: AlipayConfig.
*Функция: класс базовой конфигурации.
*Подробнее: установите информацию, связанную с учетной записью, и путь возврата.
*Версия: 3.3
*Дата: 10 августа 2012 г.
*проиллюстрировать:
* Следующий код представляет собой лишь образец кода, предоставленный для облегчения тестирования продавца. Продавцы могут написать его в соответствии с технической документацией в соответствии с потребностями своих собственных веб-сайтов и не обязаны использовать этот код.
*Этот код предназначен только для изучения и изучения интерфейса Alipay и предоставляется только в качестве справки.
*Совет: Как получить код проверки безопасности и идентификатор партнера
*1 Используйте контрактную учетную запись Alipay для входа на веб-сайт Alipay (www.alipay.com).
*2. Нажмите «Торговые услуги» (https://b.alipay.com/order/myOrder.htm).
*3. Нажмите «Запросить идентификатор партнера (PID)» и «Запросить код проверки безопасности (ключ)».
*При просмотре кода подтверждения безопасности после ввода платежного пароля страница становится серой. Что делать?
*Решение:
*1 Проверьте конфигурацию браузера и не позволяйте браузеру блокировать маркеры.
*2 Смените браузер или компьютер и войдите снова, чтобы отправить запрос.
*/
публичный класс AlipayConfig {
//↓↓↓↓↓↓↓↓↓↓Пожалуйста, настройте здесь свою основную информацию↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// Идентификатор партнера, 16-значная строка, начинающаяся с 2088.
public static String Partner = "2088001466494907";
// Закрытый ключ продавца
общедоступный статический строковый ключ = "fb30213vjc4k4oabt7z4q9e07sfmlmzr";
//↑↑↑↑↑↑↑↑↑↑Настройте здесь основную информацию↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//Для отладки создайте путь к папке журнала TXT
общедоступная статическая строка log_path = "D://";
//Формат кодировки символов в настоящее время поддерживает gbk или utf-8
общедоступная статическая строка input_charset = "utf-8";
// Метод подписи модифицировать не нужно
общедоступная статическая строка Sign_type = «MD5»;
общедоступная статическая строка pay_type = "1";
//Обязательно, не может быть изменено
//Путь к странице асинхронного уведомления сервера
общедоступная статическая строка notify_url = "notify_url.jsp";
//Необходим полный путь в формате http://. Пользовательские параметры, такие как ?id=123, добавить невозможно.
//Путь к странице уведомления о переходе на страницу
общедоступная статическая строка return_url = «return_url.jsp»;
//Необходим полный путь в формате http://. Пользовательские параметры, такие как ?id=123, не могут быть добавлены, а http://localhost/ не могут быть добавлены.
//Аккаунт Alipay продавца
общедоступная статическая строка Sell_email = "[email protected]";
//необходимый
//Номер заказа продавца
общедоступная статическая строка out_trade_no =UtilDate.getOrderNum();
//Единственный номер заказа в системе заказов на сайте продавца, обязателен
//Имя заказа
public static String subject = «Скрытое пополнение счета»;
//необходимый
//Описание заказа
public static String body = «Скрытое пополнение счета»;
//Адрес отображения продукта
общедоступная статическая строка show_url = "";
//Временная метка защиты от фишинга
public static String anti_phishing_key="";
/*IP-адрес клиента не является внешним IP-адресом локальной сети, например: 221.0.0.1*/
общедоступная статическая строка exter_invoke_ip="";
}
3. файл конфигурации стойки
<action name="pay" метод="pay">
</действие>
Выше приведена ключевая часть кода. Следует отметить:
1. Вам необходимо внедрить в свой проект несколько классов интерфейса Alipay, включая пакет полки.
2. Адреса notify_url.jsp и return_url.jsp должны представлять собой полный путь к внешнему сетевому адресу.
3. Напишите свою собственную бизнес-обработку в notify_url.jsp или можете напрямую написать интерфейс для вызова интерфейса Alipay.