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

OSCHINA-MIRROR/leslin-Weixin-Payment

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

Система транзакций для WeChat服务商微信支付

Последний адрес проекта на github: https://github.com/Leslin/Weixin-Payment

  • Система транзакций для множества магазинов на основе WeChat服务商, в которой можно настроить несколько сервисных провайдеров, каждый из которых может иметь несколько подмагазинов. Поддерживается оплата через WeChat JSAPI, сканирование QR-кодов и оплата с помощью банковских карт. Также поддерживается оплата через WeChat Bridge.

  • Каждая транзакция может быть случайно направлена на определенный магазин, чтобы предотвратить блокировку магазина из-за жалоб на оплату через WeChat.

  • В административной панели можно создавать подаккаунты, назначать им интерфейсы и проводить отдельный учет для каждого магазина. Аккаунт с максимальными правами управляет всеми финансовыми операциями.

  • Поддерживается оплата через Alipay и другие платежные системы (Alipay еще не реализован, но можно использовать демо).

  • Учет транзакций магазинов, управление учетом для разных администраторов.

  • Проверка прав доступа магазинов.

  • Поддержка оплаты через сканирование QR-кодов и ввод суммы вручную.

Архитектура

  • Код написан на основе ThinkPHP5.0, использует RESTful API для управления правами доступа к интерфейсам. Подробнее о RESTful API можно посмотреть в первом проекте на этом github, здесь нет конкретных демонстраций.``` graph LR Пользователь-->Вызов интерфейса Вызов интерфейса-->Система магазина Система магазина-->API оплаты WeChat API оплаты WeChat-->Вызов интерфейса Вызов интерфейса-->Пользователь

## Описание кода
### 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

Как показано на рисунке:
![](https://gitee.com/uploads/images/2017/1226/143915_e1c42663_529826.png "8.png")
После успешного запроса интерфейс вернет URL для оплаты, содержащий уникальный токен оплаты. Пользователь может идентифицировать заказ, нажав на этот URL, что автоматически перенаправит его на страницу оплаты WeChat JSAPI.

Как показано на рисунке:
![введите описание изображения здесь](https://gitee.com/uploads/images/2017/1226/143930_702b58d8_529826.png "11.png")

### 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.
Как показано на рисунке
![Ввод изображения](https://gitee.com/uploads/images/2017/1226/143941_ff61cd1d_529826.png "12.png")### 6. Обнаружение блокировки для мерчанта
- Когда система принимает слишком много клиентов, это может привести к блокировке платежных прав мерчанта, что приводит к неудаче платежа. В этом случае предлагается функция обнаружения блокировки платежных прав, код которой расположен в `/v1/Inputpay.php` в методе `test`.
Как показано на рисунке
![Ввод изображения](https://gitee.com/uploads/images/2017/1226/143951_4f0fe333_529826.png "13.png")

## Административная панель
### Административная панель включает в себя управление правами пользователей, настройку подмерчантов, выдачу appid разработчикам, сверку счетов, управление заказами и другие функции
Как показано на рисунке:
Обзор платежей
![Ввод изображения](https://gitee.com/uploads/images/2017/1226/144001_30cabec3_529826.png "1.png")

Управление ролями пользователей
![Ввод изображения](https://gitee.com/uploads/images/2017/1226/144010_8edaf2cb_529826.png "2.png")

Управление заказами
![Ввод изображения](https://gitee.com/uploads/images/2017/1226/144132_d992683c_529826.png "3.png")

Управление подмерчантов
![Ввод изображения](https://gitee.com/uploads/images/2017/1226/144142_708c7b52_529826.png "4.png")Платежный отчет
![введите описание изображения здесь](https://gitee.com/uploads/images/2017/1226/144151_d34c0ecb_529826.png "6.png")

Отчет по транзакциям мерчанта
![введите описание изображения здесь](https://gitee.com/uploads/images/2017/1226/144201_5ed12674_529826.png "7.png")
 

## Другие сведения
QQ-группа для общения: 645233951
## Информация о правахРазмещено в соответствии с лицензией Apache 2 и предоставляется для бесплатного использования.

Дополнительные детали см. в [LICENSE.txt](LICENSE.txt)

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

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

Введение

Система транзакций суб-мерчанта WeChat: отдельный субсчёт для сверки, защита мерчантов от блокировки, настройка для нескольких мерчантов, сверка транзакций в реальном времени. Развернуть Свернуть
Отмена

Обновления

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

Участники

все

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

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