├── App
│ ├── Config Конфигурационные файлы проекта
├ │── Crontab Задачи по расписанию
│ │ └── Job Коллекция задач по расписанию
│ ├── Exception Обработка исключений
│ ├── HttpController
│ ├── Lib Библиотека
│ ├── Logic Логический слой
│ ├── Robot Робот
│ ├── Model Модельный слой
│ ├── Process Пользовательский процесс
│ ├── Queue Очередь сообщений
│ │ └── Job Коллекция задач очереди сообщений
│ ├── Service Слой сервисов
│ ├── Task Асинхронные задачи
│ ├── Utility Инструменты
│ └── Validate Классы валидации
├── EasySwooleEvent.php
├── Readme.md
├── Sql
├── bootstrap.php
├── composer.json
├── composer.lock
├── dev.php
├── easyswoole
├── index.html
├── produce.php
└── vendor
Передняя часть собирает строку запроса в соответствии с параметрами запроса. Каждый интерфейс должен пройти аутентификацию подписи для корректной работы. Пожалуйста, следуйте нижеприведенному процессу для шифрования подписи.
Формат строки подписи приведен ниже. Пожалуйста, собирайте строку в соответствии с приведенным форматом.```http request "app_secret="+app_secret+"&"+query+"&"+body+"×tamp="+timestamp
| Имя параметра | Описание параметра |
| -------- | :---- |
| app_secret | Секретный ключ приложения, предоставленный сервером. Пример: dfgAiNQJdjnLimUzVXEtnDJrtFSkKCZx |
| query | Параметры запроса GET. Пример: page=1&pageSize=1. Пожалуйста, собирайте параметры в соответствии с '&' |
| body | Параметры запроса POST. Пример: page=1&pageSize=1. Пожалуйста, собирайте параметры в соответствии с '&'. Если используется JSON-формат, используйте зашифрованную строку JSON. |
| timestamp | Тайм-стамп текущего запроса. Пожалуйста, используйте текущий тайм-стамп. Устаревший тайм-стамп приведет к отказу запроса. С момента 1 января 1970 года (UTC/GMT) количество секунд, прошедших с начала эпохи. Пример: 1642837463 |
#### 2. Описание шифрования строки подписи
> Правила шифрования подписи приведены ниже. JS-код представлен ниже:
```javascript
// md5 шифрование и преобразование шифр-строки в верхний регистр
var sign = CryptoJS.MD5(string).toString().toUpperCase();
// Шифрование md5-строки с помощью hash256
sign = CryptoJS.HmacSHA256(sign, app_secret).toString();
Правила шифрования json-строки: преобразование json-объекта в строку, затем шифрование строки с помощью DES-ECB и одновременное выполнение base64-кодирования. JS-код представлен ниже:
// Преобразование в json-строку
var bodyString = JSON.stringify({
"page": 1,
"pageSize": 9,
"id2": 'sdasdasdasd1111',
"id": 1
});
```// Шифрование json с помощью des
var keyHex = CryptoJS.enc.Utf8.parse(app_secret);
var encrypted = CryptoJS.DES.encrypt(bodyString, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var body_encrypt = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
#### 4 Пример тестового кода (может использоваться в Postman)
#### 1 GET тестовый код
```javascript
// GET тест
var timestamp = Math.round(new Date().getTime() / 1000);
var app_secret = "dfgAiNQJdjnLimUzVXEtnDJrtFSkKCZx";
// Соответствие параметров запроса в Postman
var query = "page=1&pageSize=1";
// Соответствие параметров form-data в Postman
var body = "";
var string = "app_secret=" + app_secret + "&" + query + "&" + body + "×tamp=" + timestamp;
var sign = CryptoJS.MD5(string).toString().toUpperCase();
sign = CryptoJS.HmacSHA256(sign, app_secret).toString();
// Установка переменных в Postman
pm.variables.set('sign', sign);
// POST тест
var timestamp = Math.round(new Date().getTime() / 1000);
var app_secret = "dfgAiNQJdjnLimUzVXEtnDJrtFSkKCZx";
// Соответствие параметров запроса в Postman
var query = "page=1&pageSize=1";
// Соответствие параметров form-data в Postman
var body = "p=1&a=1";
var string = "app_secret=" + app_secret + "&" + query + "&" + body + "×tamp=" + timestamp;
var sign = CryptoJS.MD5(string).toString().toUpperCase();
sign = CryptoJS.HmacSHA256(sign, app_secret).toString();
// Установка переменных в Postman
pm.variables.set('sign', sign);
// JSON тест. Пожалуйста, поместите переменную {{body_encrypt}} в поле body raw в Postman
var timestamp = Math.round(new Date().getTime() / 1000);
var app_secret = "dfgAiNQJdjnLimUzVXEtnDJrtFSkKCZx";
// Соответствие параметров запроса в Postman
var query = "page=1&data=1";
```Преобразование в JSON-строку
```javascript
var bodyString = JSON.stringify({
"page": 1,
"pageSize": 9,
"id2": 'sdasdasdasd1111',
"id": 1
});
```Шифрование DES для JSON
```javascript
var keyHex = CryptoJS.enc.Utf8.parse(app_secret);
var encrypted = CryptoJS.DES.encrypt(bodyString, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var body_encrypt = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
pm.variables.set('body_encrypt', body_encrypt);
Шифрование для создания подписи
var string = "app_secret=" + app_secret + "&" + query + "&" + body_encrypt + "×tamp=" + timestamp;
var sign = CryptoJS.MD5(string).toString().toUpperCase();
sign = CryptoJS.HmacSHA256(sign, app_secret).toString();
pm.variables.set('sign', sign);
Создание таблицы sys_platform_account
CREATE TABLE `sys_platform_account` (
`id` int(11) NOT NULL COMMENT 'ID',
`platform` char(50) NOT NULL COMMENT 'Соответствующий платформе, ссылающийся на словарь platform_type',
`account` char(100) NOT NULL COMMENT 'Аккаунт или APPID, уникальный идентификатор для третьей стороны',
`config` text NOT NULL COMMENT 'Конфигурация платформы',
`store_id` int(11) NOT NULL COMMENT 'ID арендатора',
`create_time` datetime NOT NULL COMMENT 'Дата создания',
`update_time` datetime NOT NULL COMMENT 'Дата обновления',
`create_by` int(11) NOT NULL COMMENT 'Создатель',
`update_by` int(11) NOT NULL COMMENT 'Обновитель',
`status` tinyint(1) NOT NULL COMMENT 'Статус',
`del_flag` tinyint(1) NOT NULL COMMENT 'Флаг удаления'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Таблица конфигурации платформы';
--
-- Индексы таблицы `sys_platform_account`
--
ALTER TABLE `sys_platform_account`
ADD PRIMARY KEY (`id`),
ADD KEY `store_id` (`store_id`),
ADD KEY `platform` (`platform`);
--
-- AUTO_INCREMENT для таблицы `sys_platform_account`
--
ALTER TABLE `sys_platform_account`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID';
location / {
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
proxy_set_header X-Real-IP $remote_addr;
// Включение websocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:9502;
}
}
```## Ссылки на проекты
Уведомления WeChat, DingTalk https://github.com/wonder-game/es-notify
Утилиты https://github.com/wonder-game/es-utility### Ручная установка xlswriter
```text
wget https://pecl.php.net/get/xlswriter-1.5.5.tgz
tar -zxvf xlswriter-1.5.5.tgz
cd xlswriter-1.5.5/
/www/server/php/74/bin/phpize
./configure --with-php-config=/www/server/php/74/bin/php-config
make && make install
echo "extension = xlswriter.so" >> /www/server/php/74/etc/php.ini
/etc/init.d/php-fpm-74 reload
/www/server/php/74/bin/php -m|grep -i xlswriter
Использование расширения для сжатия изображений
Запуск проверки подписи
nohup java -jar ccbnetpaysign.jar SERVLET:55533 >Ccbnetpaysign.log 2>&1 &
ssh root@125.124.34.33
1. Значение сценария промо-кода по умолчанию 0
2. ID промо-пользователя по умолчанию 0
3. ID торгового партнера промо-кода по умолчанию 0
4. ID промо-акции по умолчанию 0
5. ID группы членства по умолчанию 0
1. ID промокода coupon_id
2. ID пользователя member_id
3. ID связанного торгового партнера link_store
4. Тип кода 1 промокод 2 код отмены
Цепочка пользовательской стратегии цен определяет, какие цены применимы к пользователю.
### Правила подтверждения стратегии цен
```text
Для удобства цепочки пользовательской стратегии цен, ищутся цены продукта в следующем порядке, пока не будет найдено:
1. Уникальная цена для текущего пользователя.
2. Цена для группы пользователей, к которой принадлежит текущий пользователь.
3. По умолчанию цена продукта.
1. Пользователи второго уровня для комиссий:
- Если текущий пользователь является дистрибьютором, то он является пользователем второго уровня.
- Если текущий пользователь не является дистрибьютором, и в течение 24 часов сканировал QR-код дистрибьютора, то последний дистрибьютор, который сканировал QR-код, является пользователем второго уровня для комиссий.
2. Пользователи первого уровня для комиссий:
Пользователь первого уровня для комиссий — дистрибьютор, который промо-кодом привлёк пользователя второго уровня.
3. Для второго уровня дистрибьюторства применяются правила 1 и 2, для первого уровня — только правило 1.
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с```text
1. Процесс вывода:
Сначала производится попытка вывода. Если вывод успешен, оставшийся баланс переводится. Если вывод неудачен, весь баланс переводится.
2. Правила:
Попытка вывода через WeChat для текущего пользователя = (комиссионный доход пользователя / общая комиссия) * максимальная сумма вывода через WeChat
Максимальная сумма вывода через WeChat составляет 30%.
3. Пример:
Заказ на сумму 100, комиссия первого уровня 8, комиссия второго уровня 42, общая комиссия 50, максимальная сумма вывода через WeChat 30.
Вывод первого уровня: 8/50*30, оставшийся баланс переводится.
Вывод второго уровня: 42/50*30, оставшийся баланс переводится.
Все изменения в тексте включены, сохранены исходное форматирование и разметка.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )