YMP-Payment v2
Основанный на YMP фреймворке, это модуль для подключения сторонних платёжных систем (включая такие системы как Alipay, WeChat Pay, UnionPay, JD Pay, Baidu Wallet и QQ Wallet). В настоящее время реализованы следующие функции:
Наименование | Статус |
---|---|
Alipay | Тестирование пройдено |
WeChat Pay | Реконструкция завершена, ожидает тестирования |
UnionPay | В процессе организации |
JD Pay | Ожидает организации |
Baidu Wallet | Ожидает организации |
QQ Wallet | Ожидает организации |
В текущем модуле завершены работы по упаковке API, связанных с платёжными возможностями, которые были недавно опубликованы на веб-сайтах для компьютеров и мобильных устройств Alipay. Тестирование прошло успешно.
Список API для оплаты через компьютер: | Интерфейс на английском языке | Интерфейс на китайском языке | Документация | |---|---|---| | alipay.trade.page.pay | 统一收单下单并支付页面接口 | Просмотр документации | | alipay.trade.refund | 统一收单交易退款接口 | Просмотр документации | | alipay.trade.fastpay.refund.query | 统一收单交易退款查询接口 | Просмотр документации | | alipay.trade.query | 统一收单线下交易查询接口 | Просмотр документации | | alipay.trade.close | 统一收单交易关闭接口 | Просмотр документации | | alipay.data.dataservice.bill.downloadurl.query | Запрос адреса загрузки для проверки счёта | Просмотр документации |
API для оплаты через мобильные устройства: | Интерфейс на английском языке | Интерфейс на китайском языке | Документация | |---|---|---| | alipay.trade.wap.pay | Мобильный сайт для оплаты | Просмотр документации | | alipay.trade.refund | Возврат транзакции | Просмотр документации | | alipay.trade.fastpay.refund.query | Возврат транзакции запроса | Просмотр документации | | alipay.trade.query | Транзакция запроса | Просмотр документации | | alipay.trade.close | Закрыть транзакцию | Просмотр документации | | alipay.data.dataservice.bill.downloadurl.query | Проверка счёта загрузки адреса запроса | Просмотр документации |
<dependency>
<groupId>net.ymate.payment</groupId>
<artifactId>ymate-payment-alipay</artifactId>
<version>2.0.0</version>
</dependency>
Реализовать обработчик событий оплаты интерфейса net.ymate.payment.alipay.IAliPayEventHandler
, пример кода:
public class AliPayEventHandler implements IAliPayEventHandler {
private static final Log _LOG = LogFactory.getLog(AliPayEventHandler.class);
/**
* @param orderId 订单Id
* @param attach 附加信息
* @return 创建PC支付请求接口参数对象
* @throws Exception 可能产生任何异常
*/
public TradePagePayData buildTradePagePayData(String orderId, String attach) throws Exception {
TradePagePayData _data = new TradePagePayData(UUIDUtils.UUID(), "99.99", "捐赠订单");
_data.setPassbackParams(attach);
//
return _data;
}
/**
* @param orderId 订单Id
* @param attach 附加信息
* @return 创建WAP支付请求接口参数对象
* @throws Exception 可能产生任何异常
*/
public TradeWapPayData buildTradeWapPayData(String orderId, String attach) throws Exception {
return new TradeWapPayData(UUIDUtils.UUID(), "99.99", "捐赠订单");
}
public void onNotifyReceived(AliPayBaseNotify notifyData) throws Exception {
_LOG.debug("接收到异步通知消息: " + JSON.toJSONString(notifyData));
}
public IView onReturnCallback(AliPayBaseReturn returnData) throws Exception {
String _jsonStr = JSON.toJSONString(returnData);
_LOG.debug("接收到同步通知消息: " + _jsonStr);
//
return View.jsonView(_jsonStr);
}
public void onExceptionCaught(Throwable cause) throws Exception {
_LOG.error("发生了异常: ", cause);
}
}
Запрос оплаты, доступ к URL-адресу формата:
http://<домен>/payment/alipay/<идентификатор приложения Alipay>/page?state=<номер заказа>&attach=<дополнительная информация>
http://<домен>/payment/alipay/<идентификатор приложения Alipay>/wap?state=<номер заказа>&attach=<дополнительная информация>
Параметры URL:
Идентификатор приложения Alipay: идентификатор приложения, назначенный Alipay разработчику, обязательный параметр;
Если в модуле настроен
по умолчанию Alipay разработчик учётной записи ID
или используетсяпоставщик по умолчанию учётных данных
, то можно напрямую использоватьdefault
для доступа;
Номер заказа: уникальный идентификатор бизнес-заказа, обязательный параметр. Данный текст представляет собой фрагмент технической документации, в котором описывается работа с платёжными системами AliPay и WxPay.
В тексте приводятся примеры использования различных методов и функций для работы с этими платёжными системами, а также описываются параметры конфигурации и настройки.
АлиПэй (AliPay)
Создание запроса на оплату:
// PC-версия оплаты:
AliPay.get().tradePagePay("<номер заказа>", "<дополнительная информация>").build().executeActionForm();
// WAP-версия оплаты:
AliPay.get().tradeWapPay("<номер заказа>", "<дополнительная информация>").build().executeActionForm();
Запрос на транзакцию по торговому счёту:
AliPayTradeQuery.Response _query = AliPay.get()
.tradeQuery("<идентификатор приложения АлиПэй>", "<номер транзакции>", "<номер внешней транзакции>")
.build().execute();
Возврат средств по транзакции:
AliPayTradeRefund.Response _refund = AliPay.get()
.tradeRefund("<идентификатор приложения АлиПэй>", new TradeRefundData("<номер внешней транзакции>", "<номер транзакции>", "99.00"))
.build().execute();
Запрос на возврат средств по транзакции:
AliPayTradeRefundQuery.Response _refundQuery = AliPay.get()
.tradeRefundQuery("<идентификатор приложения АлиПэй>", "<номер транзакции>", "<номер внешней транзакции>", "<номер запроса>"))
.build().execute();
Закрытие транзакции:
AliPayTradeClose.Response _close = AliPay.get()
.tradeClose("<идентификатор приложения АлиПэй>", "<номер транзакции>", "<номер внешней транзакции>"))
.build().execute();
Получение адреса для скачивания выписки по счёту:
AliPayBillDownloadUrlQuery.Response _download = AliPay.get()
.billDownloadUrlQuery("<идентификатор приложения АлиПэй>", "<тип выписки>", "<дата выписки>"))
.build().execute();
Конфигурация параметров АлиПэй:
#-------------------------------------
# payment.alipay 模块初始化 параметра
#-------------------------------------
# URL шлюза платёжного интерфейса, значение по умолчанию: https://openapi.alipay.com/gateway.do
ymp.configs.payment.alipay.gateway_url=
# Класс реализации интерфейса провайдера учётных записей, если не предоставлен, используется реализация по умолчанию
ymp.configs.payment.alipay.account_provider_class=
# Обработчик событий платежей, обязательный параметр
ymp.configs.payment.alipay.event_handler_class=
# Идентификатор учётной записи разработчика АлиПэй по умолчанию, значение по умолчанию: если используется реализация провайдера учётных записей по умолчанию, то берётся значение идентификатора приложения, иначе — пустое значение
ymp.configs.payment.alipay.default_account_id=
# Отключение проверки подписи сообщения, значение по умолчанию: false
ymp.configs.payment.alipay.sign_check_disabled=
#-------------------------------------
# Параметры конфигурации учётной записи АлиПэй
#-------------------------------------
# Идентификатор приложения, присвоенный АлиПэй разработчику
ymp.configs.payment.alipay.app_id=
# Тип алгоритма подписи, используемого для генерации подписи сообщений, поддерживаемые типы: RSA2 и RSA, рекомендуется использовать RSA2
ymp.configs.payment.alipay.sign_type=
# Закрытый ключ
ymp.configs.payment.alipay.private_key=
# Открытый ключ
ymp.configs.payment.alipay.public_key=
# Кодировка, используемая при формировании сообщений
ymp.configs.payment.alipay.charset=
# Формат ответа
ymp.configs.payment.alipay.format=
# Путь HTTP(S), на который сервер АлиПэй отправляет уведомления
ymp.configs.payment.alipay.notify_url=
# Путь HTTP(S) для возврата после успешной транзакции
ymp.configs.payment.alipay.return_url=
Вэйси Пэй (WxPay)
Модуль предоставляет API для различных способов оплаты через систему Вэйси Пэй, включая:
— создание единого заказа;
— оплата с помощью сканирования QR-кода;
— оплата через H5;
— отправка денежных подарков;
— корпоративные платежи и другие.
Метод | Описание |
---|---|
unifiedOrder | Создание единого заказа |
microPay | Оплата с помощью сканирования QR-кода |
orderQuery | Запрос информации о заказе |
reverse | Отмена заказа |
closeOrder | Закрытие заказа |
refund | Запрос на возврат средств |
refundQuery | Запрос информации о возврате средств |
downloadBill | Скачивание выписки по счёту |
shortUrl | Преобразование короткого URL |
authCodeToOpenId | Перевод кода авторизации в идентификатор открытого доступа |
Для получения более подробной информации рекомендуется обратиться к официальной документации. | Отправка обычного красного пакета | WxPay.get().redPackSend(...)|Посмотреть документ| | Отправка расщеплённого красного пакета | WxPay.get().redPackSendGroup(...)|Посмотреть документ| | Запрос записи о красном пакете | WxPay.get().redPackInfo(...)|Посмотреть документ| | Корпоративный платёж | WxPay.get().mchPay(...)|Посмотреть документ| | Запрос корпоративного платежа | WxPay.get().mchPayQuery(...)|Посмотреть документ|
Нажмите здесь, чтобы просмотреть полный документ по разработке для WeChat Pay.
<dependency>
<groupId>net.ymate.payment</groupId>
<artifactId>ymate-payment-wxpay</artifactId>
<version>2.0.0</version>
</dependency>
Реализуйте обработчик событий оплаты, который реализует интерфейс net.ymate.payment.wxpay.IWxPayEventHandler
, пример кода:
public class WxPayEventHandler implements IWxPayEventHandler {
private static final Log _LOG = LogFactory.getLog(WxPayEventHandler.class);
/**
* @param tradeType 交易类型
* @param orderId 订单ID
* @param attach 附加信息
* @return 构建微信统一支付请求数据对象
* @throws Exception 可能产生的任何异常
*/
public WxPayUnifiedOrder buildUnifiedOrderRequest(WxPayAccountMeta accountMeta, IWxPay.TradeType tradeType, String orderId, String attach) throws Exception {
return new WxPayUnifiedOrder(accountMeta, "捐赠订单", orderId, 9999, "192.168.199.1", "", tradeType.name()).attach(attach);
}
/**
* Асинхронное уведомление о платеже получено, этот метод обрабатывает событие. Если во время выполнения метода не возникает никаких исключений, то считается, что выполнение прошло успешно и в службу уведомлений WeChat возвращается строка SUCCESS.
*
* @param notifyData 异步通知对象
* @throws Exception 可能产生的任何异常
*/
public void onNotifyReceived(WxPayNotifyResponse notifyData) throws Exception {
_LOG.debug("接收到异步通知消息: " + notifyData.getOriginalContent());
}
/**
* @param orderId 订单ID
* @return возвращает, нужно ли инициировать запрос статуса заказа
* @throws Exception 可能产生的任何异常
*/
public boolean onReturnCallback(String orderId) throws Exception {
// В этом месте определяется, требуется ли для указанного заказа инициировать запрос состояния.
return true;
}
/**
* Обработка исключений
*
* @param cause 产生的异常对象
* @throws Exception 可能产生的任何异常
*/
public void onExceptionCaught(Throwable cause) throws Exception {
_LOG.error("发生了异常: ", cause);
}
/**
* @param appId 微信公众号应用ID
* @return Получить временный билет интерфейса JS API WeChat
* @throws Exception 可能产生的任何异常
*/
public String getJsApiTicket(String appId) throws Exception {
// Здесь верните правильный временный билет JS API в соответствии с требованиями.
return "bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA";
}
}
Запрос на оплату, доступ к URL-адресу:
Режим WeChat JS_API:
http://<域名>/payment/wxpay/<APP_ID>/jsapi?open_id=<OPEN_ID>state=<订单编号>&attach=<附加信息>&debug=<true|false>
H5 режим WeChat:
http://<域名>/payment/wxpay/<APP_ID>/mweb?state=<订单编号>&attach=<附加信息>&redirect_url=<重定向URL地址>
WeChat APP режим:
http://<域名>/payment/wxpay/<APP_ID>/app?state=<订单编号>&attach=<附加信息>
Первый режим WeChat Native (Native):
Продавец генерирует ссылку в формате QR-кода, пользователь сканирует код, продавец получает запрос, генерирует заказ, вызывает унифицированный интерфейс оплаты для отправки в WeChat, WeChat возвращает продавцу prepayid.
http://<域名>/payment/wxpay/<APP_ID>/native/static?state=<订单编号>&attach=<附加信息>
Второй режим WeChat Native:
Продавец создаёт заказ, сначала вызывает унифицированный интерфейс оплаты, чтобы получить code_url, эта ссылка напрямую генерирует QR-код, пользователь сканирует его.
http://<域名>/payment/wxpay/<APP_ID>/native/dynamic?state=<订单编号>&attach=<附加信息>
Параметры URL:
Если модуль настроен с использованием
default
илиdefault account provider
, вы можете использоватьdefault
.
OPEN_ID: уникальный идентификатор пользователя WeChat;
订单编号: уникальный идентификатор бизнес-заказа, обязательный параметр;
attach: значение этого параметра будет возвращено без изменений;
Асинхронные уведомления, доступ к URL-адресу:
http://<域名>/payment/wxpay/notify
Синхронный переход к уведомлению (проверка статуса заказа по инициативе): доступ к URL-адресу:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )