Система транзакций для множества магазинов на основе WeChat服务商, в которой можно настроить несколько сервисных провайдеров, каждый из которых может иметь несколько подмагазинов. Поддерживается оплата через WeChat JSAPI, сканирование QR-кодов и оплата с помощью банковских карт. Также поддерживается оплата через WeChat Bridge.
Каждая транзакция может быть случайно направлена на определенный магазин, чтобы предотвратить блокировку магазина из-за жалоб на оплату через WeChat.
В административной панели можно создать подаккаунты, назначить интерфейсы пользователям и вести отдельный учет для каждого магазина. Аккаунт с максимальными правами управляет всеми финансовыми операциями.
Поддерживается оплата через Alipay и другие платежные системы (Alipay еще не реализован, но можно использовать демо).
Учет транзакций магазинов, управление учетом для разных администраторов.
Проверка прав доступа магазинов.
Поддержка оплаты через сканирование QR-кодов и ввод суммы вручную.
## Описание кода
### 1. Настройка магазинов сервиса
- Путь к файлу настроек сервиса
/extend/Payment/Pay/weixinconfig.php
Измените параметры `app_id`, `mch_id` (идентификатор магазина сервиса), `md5_key` (ключ оплаты), `notify_url` (адрес обратного вызова) и другие параметры.
Адрес API оплаты WeChat
/extend/Payment/Pay/Wx/AppCharge.php/
### 2. Вызов интерфейса оплаты с использованием сгенерированного токена
- Адрес запроса POST
https://****.com/v1/pay
Как показано на рисунке:

После успешного запроса интерфейс вернет URL для оплаты, содержащий уникальный токен оплаты. Пользователь может идентифицировать заказ, нажав на этот URL, что автоматически перенаправит его на страницу оплаты WeChat JSAPI.
Как показано на рисунке:

### 3. Настройка WeChat Official Account
- Базовый класс `Wechat.php` находится в папке `v1/`. Эта базовая функция Wechat используется для авторизации пользователей при нажатии на URL оплаты, получения их `openid`, и отправки заказа на оплату WeChat с использованием токена оплаты. Затем, используя параметры, такие как `prepay_id`, вызывается JSAPI для проведения оплаты.
### 4. Платежный callback- В административной панели добавляется платежный вызывающий объект, который соответствует заполненному домену callback-у клиента. После успешного выполнения платежа система получает уведомление от WeChat. Затем система синхронно отправляет данные уведомления от WeChat методом POST на заполненный домен callback-у клиента. Здесь подпись данных была пересоздана, заново подписаны с использованием приватного ключа клиента, что гарантирует безопасность данных.
```php
unset($data['sign']); //Удаляем подпись
$order = self::getOrderInfo($data['out_trade_no']);
$userinfo = Db::name('admin')->where('app_key',$order['user_id'])->find();
if(empty($userinfo)){
return false;
}
$data['sign'] = $this->_getOrderMd5($data,$userinfo['appsecret']); //Получаем полную подписанную информацию
Log::info('Начало обратного вызова клиента'.json_encode($data));
$result = json_decode($this->httpRequest($userinfo['callback'],json_encode($data)),true);
Log::info('Результат обратного вызова клиента'.json_encode($result));
if($result['code'] == 200){ //Правильный ответ
$back['callback_status'] = 1;
$back['returndata'] = json_encode($result);
Db::name('order')->where('order_sn',$data['out_trade_no'])->update($back);
return true;
}else{
$back['callback_status'] = 2;
$back['returndata'] = json_encode($result);
Db::name('order')->where('order_sn',$data['out_trade_no'])->update($back);
return false;
}
```### 5. Ручное вводимое значение для оплаты
- Система поддерживает возможность ввода пользователем суммы для оплаты с помощью сканирования QR-кода. Этот способ оплаты не требует вызова API, а предоставляет URL для генерации QR-кода. Конкретное управление осуществляется в `/v1/Inputpay.php`, извлекая URL и генерируя QR-код на платформах, таких как Chaoliao.
Как показано на рисунке
### 6. Обнаружение блокировки для мерчанта
- Когда система принимает слишком много клиентов, это может привести к блокировке платежных прав мерчанта, что приводит к неудаче платежа. В этом случае предлагается функция обнаружения блокировки платежных прав, код которой расположен в `/v1/Inputpay.php` в методе `test`.
Как показано на рисунке

## Административная панель
### Административная панель включает в себя управление правами пользователей, настройку подмерчантов, выдачу appid разработчикам, сверку счетов, управление заказами и другие функции
Как показано на рисунке:
Обзор платежей

Управление ролями пользователей

Управление заказами

Управление подмерчантов
Платежный отчет

Отчет по транзакциям мерчанта

## Другие сведения
QQ-группа для общения: 645233951
## Информация о правахРазмещено в соответствии с лицензией Apache 2 и предоставляется для бесплатного использования.
Дополнительные детали см. в [LICENSE.txt](LICENSE.txt)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )