1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/suninformation-ymate-payment-v2

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

YMP-Payment v2

Основанный на YMP фреймворке, это модуль для подключения сторонних платёжных систем (включая такие системы как Alipay, WeChat Pay, UnionPay, JD Pay, Baidu Wallet и QQ Wallet). В настоящее время реализованы следующие функции:

Наименование Статус
Alipay Тестирование пройдено
WeChat Pay Реконструкция завершена, ожидает тестирования
UnionPay В процессе организации
JD Pay Ожидает организации
Baidu Wallet Ожидает организации
QQ Wallet Ожидает организации

Alipay (Alipay)

В текущем модуле завершены работы по упаковке API, связанных с платёжными возможностями, которые были недавно опубликованы на веб-сайтах для компьютеров и мобильных устройств Alipay. Тестирование прошло успешно.

Maven пакет зависимостей
<dependency>
    <groupId>net.ymate.payment</groupId>
    <artifactId>ymate-payment-alipay</artifactId>
    <version>2.0.0</version>
</dependency>
Использование метода Alipay
  • Реализовать обработчик событий оплаты интерфейса 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.

Зависимость пакета Maven
<dependency>
    <groupId>net.ymate.payment</groupId>
    <artifactId>ymate-payment-wxpay</artifactId>
    <version>2.0.0</version>
</dependency>
Использование WxPay
  • Реализуйте обработчик событий оплаты, который реализует интерфейс 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:

    • APP_ID: ID публичного аккаунта, обязательный параметр;

    Если модуль настроен с использованием default или default account provider, вы можете использовать default.

    • OPEN_ID: уникальный идентификатор пользователя WeChat;

    • 订单编号: уникальный идентификатор бизнес-заказа, обязательный параметр;

    • attach: значение этого параметра будет возвращено без изменений;

  • Асинхронные уведомления, доступ к URL-адресу:

    http://<域名>/payment/wxpay/notify
  • Синхронный переход к уведомлению (проверка статуса заказа по инициативе): доступ к URL-адресу:

    
    

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Сторонний платёжный модуль, реализованный на основе YMP-фреймворка, включает в себя такие платёжные системы, как Alipay, WeChat Pay, UnionPay, JD Pay, Baidu Wallet и QQ Wallet. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/suninformation-ymate-payment-v2.git
git@api.gitlife.ru:oschina-mirror/suninformation-ymate-payment-v2.git
oschina-mirror
suninformation-ymate-payment-v2
suninformation-ymate-payment-v2
master