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

OSCHINA-MIRROR/leslin-Weixin-Payment

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (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: отдельный субсчёт для сверки, защита мерчантов от блокировки, настройка для нескольких мерчантов, сверка транзакций в реальном времени. Развернуть Свернуть
PHP и 4 других языков
Отмена

Обновления

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

Участники

все

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

Загрузить больше
Больше нет результатов для загрузки
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