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

OSCHINA-MIRROR/ShuraChow-wechat-php-sdk

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 45 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 08:34 036920e

Wechat-PHP-SDK

微信公众平台 PHP 开发包

Углубляет детализацию каждого интерфейса и поддерживает цепные вызовы. Приглашаем всех желающих внести свой вклад в проект.

Проект Weixin Developer SDK: https://github.com/dodgepudding/wechat-php-sdk

Блог проекта: http://binsee.github.io/wechat-php-sdk

Использование

Перед использованием необходимо активировать режим разработки для учётной записи в WeChat. Подробные шаги см. в инструкциях по использованию интерфейса WeChat Public Platform:

Документация по подключению к WeChat Pay:

https://mp.weixin.qq.com/cgi-bin/readtemplate?t=business/course2_tmpl&lang=zh_CN

WeChat Multi-Service: http://dkf.qq.com

Содержание

wechat.class.php Официальная библиотека API класса qywechat.class.php Библиотека класса API корпоративного номера errCode.php|qyerrCode.php Глобальный класс кодов возврата old_version/wechatpay.class.php Версия библиотеки V2 для оплаты через WeChat old_version/wechatext.class.php Не официальная расширенная библиотека API (прекращена поддержка) old_version/wechatauth.class.php Авторизация входа (прекращена поддержка) old_version/wechat.js Встроенный JS (устарело) Адаптация для фреймворка разработки Примеры вызовов createGroup($name$) — создать группу;
updateGroup($groupid$, $name$) — изменить название группы;
updateGroupMembers($groupid$, $openid$) — переместить пользователя в группу;
batchUpdateGroupMembers($groupid$, $openid_list$) — массово переместить пользователей в группу;
sendCustomMessage($data$) — отправить сообщение от службы клиентской поддержки;
getOauthRedirect($callback$, $state$, $scope$) — получить URL для перенаправления при авторизации через OAuth;
getOauthAccessToken() — получить токен доступа по коду, полученному через callback;
getOauthRefreshToken($refresh_token$) — продлить срок действия токена доступа с помощью refresh token;
getOauthUserinfo($access_token$, $openid$) — получить данные пользователя по токену доступа;
getOauthAuth($access_token$, $openid$) — проверить действительность токена доступа;
getSignature($arrdata$, 'sha1') — сформировать подпись;
generateNonceStr($length$ = 16) — сгенерировать случайную строку заданной длины;
setTMIndustry($id1$, $id2$ = '') — установить отрасль для шаблона сообщения;
addTemplateMessage($tpl_id$) — добавить шаблон сообщения;
sendTemplateMessage($data$) — отправить шаблонное сообщение;

Интерфейсы для работы с несколькими агентами клиентской поддержки:
getCustomServiceMessage($data$) — получить историю чата с клиентом;
transfer_customer_service($customer_account$) — переслать сообщение клиенту;
getCustomServiceKFlist() — получить основную информацию о нескольких агентах клиентской поддержки;
getCustomServiceOnlineKFlist() — получить информацию об агентах, которые сейчас работают с клиентами;
createKFSession($openid$, $kf_account$, $text$ = '') — создать чат с агентом клиентской поддержки;
closeKFSession($openid$, $kf_account$, $text$ = '') — закрыть чат с агентом;
getKFSession($openid$) — узнать статус чата;
getKFSessionlist($kf_account$) — получить список чатов агента;
getKFSessionWait() — получить список незанятых агентов;
addKFAccount($account$, $nickname$, $password$) — зарегистрировать нового агента;
updateKFAccount($account$, $nickname$, $password$) — обновить данные агента;
deleteKFAccount($account$) — удалить агента из системы;
setKFHeadImg($account$, $imgfile$) — загрузить аватар агента;

querySemantic($uid$, $query$, $category$, $latitude$ = 0, $longitude$ = 0, $city$ = '', $region$ = '') — интерфейс для семантического анализа запроса;
getDatacube($type$, $subtype$, $begin_date$, $end_date$ = '') — получить статистические данные;

Параметры для метода getDatacube:

Данные $type$ $subtype$ Время
Анализ пользователей user summary 7 дней
Сводные данные о пользователях user cumulate 7 дней
Ежедневная статистика по групповым публикациям article summary 1 день
Общая статистика по групповым публикациям article total 1 день
Статистика чтения групповых публикаций article read 3 дня
Статистика чтения групповых публикаций по часам article readhour 1 час
Статистика пересылки групповых публикаций article share 7 дней
Статистика пересылки групповых публикаций по часам article sharehour 1 час
Общий обзор отправленных сообщений upstreammsg summary 7 дней
Отправка сообщений по часам upstreammsg hour 1 час
Отправка сообщений за неделю upstreammsg week 30 дней
Распределение отправленных сообщений по дням upstreammsg dist 15 дней
Распределение отправки сообщений по неделям upstreammsg distweek 30 дней
Распределение отправки сообщений по месяцам upstreammsg distmonth 30 дней
Обзор интерфейса interface summary 30 дней
Интерфейс: статистика по часам interface summaryhour 1 час
  • Важно: разница между значениями параметров $begin_date$ и $end_date$ должна быть меньше максимального временного диапазона. Например, если максимальный временной диапазон равен 1 дню, то значения $begin_date$ и $end_date$ должны отличаться не более чем на 1 день.*

Карточные интерфейсы:
createCard($data$) — создать карту;
updateCard($data$) — отредактировать карту;
delCard($card_id$) — удалить карту;
getCardInfo($card_id$) — запросить подробную информацию о карте;
getCardColors() — получить список доступных цветов;
getCardLocations() — получить список магазинов;
addCardLocations($data$) — импортировать список магазинов;
createCardQrcode($card_id$) — сгенерировать QR-код карты;
consumeCardCode($code$) — использовать код;
decryptCardCode($encrypt_code$) — расшифровать код;
checkCardCode($code$) — проверить валидность кода;
getCardIdList($data$) — запросить список карт;
updateCardCode($code$, $card_id$, $new_code$) — заменить код;
unavailableCardCode($code$, $card_id$ = '') — сделать карту недействительной (необратимо);
modifyCardStock($data$) — изменить количество карт в наличии;
activateMemberCard($data$) — активировать или привязать карту участника;
updateMemberCard($data$) — провести операцию с картой участника;
updateLuckyMoney($code$, $balance$, $card_id$ = '') — изменить сумму в красном конверте;
setCardTestWhiteList($openid$ = array(), $user$ = array()) — настроить белый список для тестирования карт.

Интерфейсные функции для «Потряси и выиграй»:
applyShakeAroundDevice($data$) — подать заявку на получение ID устройства;
updateShakeAroundDevice($data$) — редактировать примечания к устройству;
searchShakeAroundDevice($data$) — искать устройства в списке;
bindLocationShakeAroundDevice($device_id$, $poi_id$, $uuid$ = '', $major$ = 0, $minor$ = 0) — связать устройство с магазином;
bindPageShakeAroundDevice($device_id$, $page_ids$ = array(), $bind$ = 1, $append$ = 1, $uuid$ = '', $major$ = 0, $minor$ = 0) — связать устройство со страницей;
uploadShakeAroundMedia($data$) — загружать изображения для страницы «Потряси и выиграй»;
addShakeAroundPage($title$, $description$, $icon_url$, $page_url$, $comment$ = '') — добавлять страницу «Потряси и выиграй». updateShakeAroundPage($page_id, $title, $description, $icon_url, $page_url, $comment = '') — редактирование информации о странице, полученной в результате встряхивания

  • searchShakeAroundPage ($page_ids = array(), $begin = 0, $count = 1) — поиск уже существующих страниц, полученных в результате встряхивания.
  • deleteShakeAroundPage ($page_ids = array()) — удаление уже существующих страниц, полученных в результате встряхивания; необходимо, чтобы это были страницы, не связанные с устройством.
  • getShakeInfoShakeAroundUser ($ticket) — получение информации об устройстве и пользователе по периметру встряхивания.
  • deviceShakeAroundStatistics ($device_id, $begin_date, $end_date, $uuid = '', $major = 0, $minor = 0) — интерфейс для сбора статистических данных по устройствам с использованием устройства в качестве измерения.
  • pageShakeAroundStatistics ($page_id, $begin_date, $end_date) — интерфейс для сбора статистических данных на уровне страницы.

2. wechatext.class.php — неофициальное расширение API

Это неофициальное расширение класса библиотеки больше не обновляется, поскольку официальные API-интерфейсы для публичных аккаунтов предоставляют множество интерфейсов, и дальнейшее развитие этой библиотеки не имеет большого смысла.

Неофициальное расширение API требует настройки учётной записи и пароля платформы публичного аккаунта. Оно позволяет осуществлять двустороннюю связь с пользователями, которые уже подписаны на вас, но этот способ не гарантирует долгосрочную эффективность.

В методах класса упоминаются идентификаторы пользователей, представленные как FakeId. В классе wechatauth они обозначаются как Uin. Идентификатор пользователя, соответствующий номеру WeChat, должен быть получен через метод getInfo() путём извлечения значения Username из возвращаемого массива. Однако информация о пользователях, не являющихся подписчиками, недоступна.

Перед вызовом методов ниже необходимо выполнить методы login() и checkValid(). Некоторые учётные записи могут не пройти аутентификацию, возможно, потребуется вручную войти в систему и сохранить полученный файл cookie в программе.

Программа использует модифицированный HTTP-метод snoopy, совместимый с BAE/SAE облачными серверами, где он может не работать должным образом, так как curl-методы на этих серверах были переписаны, а некоторые header-параметры, такие как источник веб-сайта, не поддерживаются.

Основные методы класса:

  • send ($id, $content) — отправка текстового сообщения определённому пользователю.
  • sendNews ($id, $msgid) — отправка новостного сообщения; можно получить $msgid через getNewsList.
  • getUserList ($page, $pagesize, $groupid) — получение списка пользователей.
  • getGroupList ($page, $pagesize) — получение списка групп.
  • getNewsList ($page, $pagesize) — получение списка новостей.
  • uploadFile ($filepath, $type) — загрузка вложения, включая изображения, аудио, видео или миниатюры.
  • getFileList ($type, $page, $pagesize) — получение списка файлов из библиотеки материалов.
  • sendImage ($id, $fid) — отправка изображения.
  • sendAudio ($id, $fid) — отправка аудиосообщения.
  • sendVideo ($id, $fid) — отправка видеосообщения.
  • getInfo ($id) — получение информации о пользователе на основе идентификатора; обратите внимание, что информация о неподписанных пользователях недоступна.
  • getNewMsgNum ($lastid) — получение количества новых сообщений, начиная с $lastid.
  • getTopMsg () — получение последнего сообщения; идентификатор этого сообщения можно использовать в качестве $lastid для отслеживания новых сообщений.
  • getMsg ($lastid, $offset = 0, $perpage = 50, $day = 0, $today = 0, $star = 0) — получение последних сообщений; список будет возвращать идентификатор сообщения, идентификатор пользователя, тип сообщения, текст сообщения и другие параметры.
  • Структура возвращаемых сообщений: {«id»: «идентификатор сообщения», «type»: «тип (1 — текст, 2 — изображение, 3 — аудио)», «fileId»: «0», «hasReply»: «0», «fakeId»: «идентификатор пользователя», «nickName»: «псевдоним», «dateTime»: «отметка времени», «content»: «текст сообщения»}.
  • getMsgImage ($msgid, $mode = 'large') — если тип сообщения равен 2, используйте этот метод для получения данных изображения.
  • getMsgVoice ($msgid) — если тип сообщения равен 3, используйте этот метод для получения аудиоданных.

3. wechatauth.class.php — авторизация и вход

Этот класс больше не обновляется, так как официальные API-платформы для приложений предоставляют авторизованные интерфейсы входа, которые являются более стандартными и удобными. Пожалуйста, обратитесь к WeChat Open Platform.

Используя QR-коды авторизации, можно синхронизировать вход на сторонние веб-сайты. Сначала программа получает QR-код авторизации с помощью методов get_login_code и get_code_image. Затем пользователь сканирует QR-код с помощью мобильного приложения WeChat. После авторизации пользователь получает доступ к своей основной информации и данным профиля. Подробные шаги проверки см. в примере test3.php.

Основные методы класса:

  • get_login_code () — получение кода авторизации для генерации QR-кода.
  • get_code_image ($code = '') — преобразование полученного кода авторизации в изображение QR-кода.
  • verify_code () — проверка успешности авторизации; возвращает 200 для успешной авторизации.
  • get_login_info () — после успешной авторизации этот метод извлекает основную информацию о пользователе.
  • get_avatar ($url) — получение данных профиля пользователя.
  • logout () — выход из системы.

4. wechat.js — встроенный JavaScript

Эта версия JavaScript устарела и больше не поддерживается, поскольку официальная версия WeChat 6.0.2 предоставляет новый интерфейс JavaScriptAPI, который является более полным и удобным. Пожалуйста, посетите Вики WeChat Public Platform.

Специальные функции JavaScript для встраивания WeChat:

  • WeixinJS.hideOptionMenu () — скрывает кнопку в правом верхнем углу.
  • WeixinJS.showOptionMenu () — отображает кнопку в правом верхнем углу.
  • WexinJS.hideToolbar () — скрывает панель инструментов.
  • WeixinJS.showToolbar () — отображает панель инструментов.
  • WeixinJS.getNetworkType () — получает статус сети.
  • WeixinJS.closeWindow () — закрывает окно.
  • WeixinJS.scanQRCode () — сканирует QR-коды.
  • WeixinJS.openUrlByExtBrowser (url) — открывает URL-адрес в браузере.
  • WeixinJS.jumpToBizProfile (username) — переходит на страницу указанного публичного аккаунта.
  • WeixinJS.sendEmail (title, content) — отправляет электронное письмо.
  • WeixinJS.openProductView (latitude, longitude, name, address, scale, infoUrl) — просмотр карты.
  • WeixinJS.addContact (username) — добавляет аккаунт WeChat.
  • WeixinJS.imagePreview (urls, current) — вызывает предварительный просмотр изображений WeChat.
  • WeixinJS.payCallback (appId, package, timeStamp, nonceStr, signType, paySign, callback) — интерфейс оплаты WeChat JavaScript API.
  • WeixinJS.editAddress (appId, addrSign, timeStamp, nonceStr, callback) — интерфейс редактирования адреса WeChat JavaScript API.

Через глобальную переменную dataForWeixin можно настроить контент, запускающий совместное использование:

var dataForWeixin={
       appId:"",
       MsgImg:"путь к изображению сообщения",
       TLImg:"путь к графику временной шкалы",
       url:"путь к URL",
       title:"заголовок",
       desc:"описание",
       fakeid:"",
       callback:function(){}
    };

5. errCode.php — класс кодов ошибок

При неудачном вызове API можно использовать этот класс для получения описания ошибки на китайском языке. Обратите внимание, что для публичных аккаунтов используется errCode.php, а для корпоративных — qyerrCode.php.

Использование:

include "errCode.php"; //или qyerrCode.php

$ret=ErrCode::getErrText(48001); //ошибка может быть получена через публичный класс API

if ($ret) 
    echo $ret;
else 
    echo "не найдено";

6. qywechat.class.php — API корпоративного класса

Позволяет вызывать официальный API и обеспечивает более гибкие возможности реагирования на сообщения. Поддерживает цепные вызовы.

Ключевые функции:

— проверка доступа; — автоматическое реагирование (текст, изображение, аудио, видео, музыка, новости); — управление меню (поиск, создание, удаление); — управление отделами (создание, обновление, удаление, получение списков отделов); — управление членами (создание, обновление, удаление, получение информации о членах, получение списков членов отдела); — управление тегами (создание, обновление, удаление, получение членов, добавление членов, удаление членов, получение списков тегов). Управление медиафайлами (загрузка, получение)

  • Двухэтапная аутентификация.
  • OAuth2 (генерация URL авторизации, получение информации о члене).
  • Получение списка IP-адресов серверов корпоративной WeChat.
  • Авторизация WeChat JSAPI (получение билета и подписи).

Инициализация действий

$options = array(
  'token'=>'tokenaccesskey', // Заполнить токен интерфейса приложения
  'encodingaeskey'=>'encodingaeskey', // Заполнить ключ шифрования EncodingAESKey
  'appid'=>'wxdk1234567890', // Заполнить app id для вызова функций высокого уровня
  'appsecret'=>'xxxxxxxxxxxxxxxxxxx', // Заполнить секретный ключ для вызова функций высокого уровня
  'agentid'=>'1', // Идентификатор приложения
  'debug'=>false, // Переключатель отладки
  '_logcallback'=>'logg', // Метод вывода отладочной информации, должен принимать строковый параметр
);
 $weObj = new Wechat($options); // Создание экземпляра объекта
 //TODO: Вызов различных методов экземпляра $weObj.

Пассивные методы интерфейса:

  • valid() — проверка соединения, пассивный интерфейс должен вызывать этот метод;
  • getRev() — получение информации от WeChat (не возвращает результат), пассивный интерфейс должен вызывать этот метод;
  • getRevData() — возврат информации от WeChat (массив);
  • getRevPostXml() — возврат исходной зашифрованной XML-информации от WeChat;
  • getRevFrom() — возвращение идентификатора отправителя сообщения;
  • getRevTo() — возвращение получателя сообщения (идентификатор публичного аккаунта, обычно совпадает с appid);
  • getRevAgentID() — возвращение идентификатора приложения, которое получило сообщение;
  • getRevType() — возвращение типа полученного сообщения;
  • getRevID() — возвращение ID сообщения;
  • getRevCtime() — возвращение времени отправки сообщения;
  • getRevContent() — возвращение текстового содержания сообщения;
  • getRevPic() — возвращение информации об изображении (массив {'mediaid': '', 'picurl': ''});
  • getRevGeo() — возвращение географического положения (массив {'x': '', 'y': '', 'scale': '', 'label': ''});
  • getRevEventGeo() — возвращение местоположения события (информация о событии, массив {'x': '', 'y': '', 'precision': ''});
  • getRevEvent() — возвращение типа события (информация о событии, массив {'event': '', 'key': ''});
  • getRevScanInfo() — получение информации о сканировании QR-кода из пользовательского меню, тип события — scancode_push или scancode_waitmsg (возвращается массив array ('ScanType': 'qrcode', 'ScanResult': '123123'));
  • getRevSendPicsInfo() — получение информации об отправке изображений из пользовательского меню, типы событий — pic_sysphoto, pic_photo_or_album или pic_weixin (структура массива описана в файле PHP);
  • getRevSendGeoInfo() — получение информации о выборе местоположения из пользовательского меню, тип события — location_select (структура массива описана в файле PHP);
  • getRevVoice() — возвращение аудиоинформации (массив {'mediaid': '', 'format': ''});
  • getRevVideo() — возвращение видеоинформации (массив {'mediaid': '', 'thumbmediaid': ''});
  • text($text) — установка текстового сообщения, параметр: текст сообщения;
  • image($mediaid) — установка изображения, параметр: идентификатор изображения media_id;
  • voice($mediaid) — установка аудиосообщения, параметр: идентификатор аудио media_id;
  • video($mediaid='', $title, $description) — установка видеосообщения, параметры: идентификатор видео media_id, заголовок, описание;
  • news($newsData) — установка новостного сообщения, параметр: массив (структура описана в файле PHP);
  • image($mediaid) — установка изображения, параметр: идентификатор изображения media_id;
  • Message($msg = '', $append = false) — настройка отправляемого сообщения (обычно не требуется вызывать этот метод);
  • reply() — отправка уже настроенного сообщения на сервер WeChat.

Предопределённые константы:

//// Типы сообщений, вызываются методом экземпляра getRevType().
    const MSGTYPE_TEXT = 'text';
    const MSGTYPE_IMAGE = 'image';
    const MSGTYPE_LOCATION = 'location';
    const MSGTYPE_LINK = 'link';    // Не поддерживается
    const MSGTYPE_EVENT = 'event';
    const MSGTYPE_MUSIC = 'music';    // Не поддерживается
    const MSGTYPE_NEWS = 'news';
    const MSGTYPE_VOICE = 'voice';
    const MSGTYPE_VIDEO = 'video';
//// Типы событий, вызываются методом экземпляра getRevEvent().
    const EVENT_SUBSCRIBE = 'subscribe';       // Подписка
    const EVENT_UNSUBSCRIBE = 'unsubscribe';   // Отмена подписки
    const EVENT_LOCATION = 'LOCATION';         // Отчёт о местоположении
    const EVENT_ENTER_AGENT = 'enter_agent';   // Вход пользователя в приложение
    const EVENT_MENU_VIEW = 'VIEW';             // Меню — нажатие на ссылку меню
    const EVENT_MENU_CLICK = 'CLICK';           // Меню — нажатие кнопки меню для получения сообщения
    const EVENT_MENU_SCAN_PUSH = 'scancode_push'; // Меню — сканирование QR-кода (клиент переходит по URL)
    const EVENT_MENU_SCAN_WAITMSG = 'scancode_waitmsg'; // Меню — сканирование QR-кода (без перехода клиента по URL)
    const EVENT_MENU_PIC_SYS = 'pic_sysphoto';  // Меню — выбор фото из системы
    const EVENT_MENU_PIC_PHOTO = 'pic_photo_or_album'; // Меню — выбор фото из альбома
    const EVENT_MENU_PIC_WEIXIN = 'pic_weixin'; // Меню — выбор фото из галереи WeChat
    const EVENT_MENU_LOCATION = 'location_select'; // Меню — выбор местоположения
    const EVENT_SEND_MASS = 'MASSSENDJOBFINISH'; // Отправка результата — завершение групповой рассылки
    const EVENT_SEND_TEMPLATE = 'TEMPLATESENDJOBFINISH'; // Отправка результата — завершение отправки шаблонных сообщений

Активные методы интерфейса:

  • checkAuth($appid='', $appsecret='', $token='') — общая проверка подлинности, также используется для обмена ACCESS_TOKEN (только при необходимости вручную указать access_token используйте $token);

  • resetAuth($appid='') — очистка записи ACCESS_TOKEN;

  • resetJsTicket($appid='') — удаление JSAPI-сертификата TICKET;

  • getJsTicket($appid='', $jsapi_ticket='') — получение сертификата JSAPI TICKET;

  • getJsSign($url, $timestamp=0, $noncestr='', $appid='') — получение информации для использования подписи JsApi (можно предоставить только URL);

  • getSignature($arrdata, 'sha1') — создание подписи;

  • generateNonceStr($length=16) — генерация случайной строки;

  • createMenu($data, $agentid='') — создание меню (параметр: содержимое меню, идентификатор приложения для создания меню);

  • getMenu($agentid='') — получение содержимого меню (параметр: идентификатор приложения для получения меню);

  • deleteMenu($agentid='') — удаление меню (параметр: идентификатор приложения для удаления меню);

  • uploadMedia($data, $type) — загрузка медиафайлов (параметры: данные, тип файла);

  • getMedia($media_id) — получение медиафайла по идентификатору (параметр: ID медиафайла);

  • getServerIp() — получение списка IP-адресов сервера WeChat. Возврат массива array('127.0.0.1','127.0.0.1')

  • createDepartment($data) — создание отдела, параметр: массив («name» — «почтовая группа продуктов», «parentid» — 1, «order» — 1).

  • updateDepartment($data) — обновление отдела, параметр: массив (id — 1, name — почтовая группа продуктов, parentid — 1, order — 1).

  • deleteDepartment($id) — удаление отдела, параметр: идентификатор отдела для удаления.

  • moveDepartment($data) — перемещение отдела, параметр: массив (department_id — 5, to_parentid — 2, to_position — 1).

  • getDepartment() — получение списка отделов, возврат массива отделов. Где department — список отделов, упорядоченный по полю order от меньшего к большему.

  • createUser($data) — создание члена, параметры см. в описании метода внутри php-файла.

  • updateUser($data) — обновление члена, параметры см. в описании метода внутри php-файла.

  • deleteUser($userid) — удаление члена, параметр: UserID сотрудника.

  • deleteUsers($userids) — пакетное удаление членов, параметр: массив UserID сотрудников.

  • getUserInfo($userid) — получение информации о члене, параметр: UserID сотрудника.

  • getUserList($department_id,$fetch_child=0,$status=0) — получение членов отдела, параметры: идентификатор отдела, нужно ли рекурсивно получать дочерние отделы, тип получения.

0 — получить всех сотрудников, 1 — получить список сотрудников с пометкой внимания, 2 — получить список заблокированных сотрудников, 4 — получить список не отмеченных сотрудников. Статус можно комбинировать.

  • getUserListInfo($department_id,$fetch_child=0,$status=0) — получение подробной информации о членах отдела, параметры такие же, как и у предыдущего метода.

  • getUserId($code,$agentid) — получение UserID сотрудника и номера мобильного устройства по коду, параметры: значение кода, возвращаемое Oauth2.0 или при вторичной аутентификации, идентификатор приложения предприятия, на которое происходит переход.

  • sendInvite($userid,$invite_tips='') — приглашение члена поставить отметку.

  • createTag($data) — создать ярлык, параметр: массив (tagname — UI).

  • updateTag($data) — обновить ярлык, параметр: массив (tagid — 1, tagname — UI).

  • deleteTag($tagid) — удалить ярлык, параметр: ID ярлыка.

  • getTag($tagid) — получить ярлык члена, параметр: ID ярлыка.

  • addTagUser($data) — добавить ярлык члену, параметры см. в описании метода внутри php-файла.

  • delTagUser($data) — удалить ярлык члену, параметры см. в описании метода внутри php-файла.

  • getTagList() — получить список ярлыков, вернуть массив ярлыков.

  • sendMessage($data) — активный интерфейс отправки сообщений, параметры см. в описании метода внутри php-файла.

  • authSucc($userid) — вторичная аутентификация, параметр: UserID сотрудника.

  • getOauthRedirect($callback,$state='STATE',$scope='snsapi_base') — комбинированный интерфейс перенаправления авторизации.

7. wechatpay.class.php — старая версия библиотеки классов оплаты через WeChat

Старая версия библиотеки классов WeChat Pay V2 была перемещена в каталог old_version. С августа 2014 года все запросы на оплату через WeChat относятся к версии V3. Однако время и способ обновления до версии V3 пока не подтверждены.

Основные функции

— Получение access_token (базовые права). — Вызов компонента адреса (права оплаты). — Генерация данных подписи заказа (права оплаты). — Успешный обратный вызов заказа (права оплаты). — Уведомление о доставке (права оплаты). — Запрос оплаты заказа (права оплаты).

Примечание: Базовые права: любой нормальный публичный аккаунт имеет эти права. Права меню: обычные бизнес-аккаунты и авторизованные подписки имеют эти права после аутентификации. Аутентифицированные права: разделены на подписки и бизнес-аутентификацию. Только аутентифицированные бизнес-аккаунты имеют эти права, если префикс является бизнес-аккаунтом. В противном случае это аутентифицированные подписки и бизнес-аккаунты. Права оплаты: только аутентифицированные бизнес-аккаунты могут запрашивать эти права.

Инициализация действий

$options = array(
    'appid'=>'wxdk1234567890', //заполнить app id для вызова функций высокого уровня, запросить в режиме разработки WeChat
    'appsecret'=>'xxxxxxxxxxxxxxxxxxx', //заполнить ключ для вызова функций высокого уровня
    'partnerid'=>'88888888', //идентификатор продавца, используется только для оплаты, не заполнять
    'partnerkey'=>'', //ключ продавца, используется только для оплаты, не заполнять
    'paysignkey'=>'' //ключ подписи продавца, используется только для оплаты, не заполнять
);
$weObj = new Wechat($options); //создать экземпляр объекта
//TODO: вызвать различные методы экземпляра $weObj

Методы активного интерфейса:

  • checkAuth($appid='',$appsecret='',$token='') — получить access_token. Можно получить на основе appid и appsecret или вручную указать access_token.
  • resetAuth($appid='') — удалить данные аутентификации.
  • getSignature($arrdata,'sha1') — сгенерировать строку подписи.
  • generateNonceStr($length=16) — получить случайную строку.
  • createNativeUrl($productid) — сгенерировать URL для собственной оплаты.
  • createPackage($out_trade_no,$body,$total_fee,$notify_url,$spbill_create_ip,$fee_type=1,$bank_type="WX",$input_charset="UTF-8",$time_start="",$time_expire="",$transport_fee="",$product_fee="",$goods_tag="",$attach="") — создать строку пакета заказа.
  • getPaySign($package, $timeStamp, $nonceStr) — сгенерировать подпись оплаты (paySign).
  • checkOrderSignature($orderxml='') — проверить подпись обратного уведомления.
  • sendPayDeliverNotify($openid,$transid,$out_trade_no,$status=1,$msg='ok') — отправить уведомление о доставке.
  • getPayOrder($out_trade_no) — запросить информацию о заказе.
  • setUserToken($user_token) — установить токен авторизации пользователя.
  • getAddrSign($url, $timeStamp, $nonceStr, $user_token='') — получить подпись адреса доставки JS.

Адаптация для разработки фреймворка

Для разных фреймворков требуется адаптация для сохранения access_token и jsapi_ticket, поскольку механизмы кэширования различаются. Поэтому в WeChat.class.php и QYWechat.class.php были добавлены комментарии TODO для кода кэширования. Необходимо изменить код в соответствии с требованиями различных фреймворков, но это может быть довольно сложно, так как структура была изменена.

Были отменены обновления Thinkphp, и были добавлены перегруженные методы setCache, getCache и removeCache для класса WeChat, а также был изменён метод log для перегрузки. Эти четыре функции реализованы для настройки кэша, чтения кэша, очистки кэша и вывода журнала в различных средах разработки. Для адаптации Thinkphp можно использовать TPWechat.class.php в качестве примера. ``` }

die(json_encode($result));  

}

$logincode = $wechat->get_login_code(); //获取授权码 $qrimg = $wechat->get_code_image(); //待输出的二维码图片

HTML часть смотрите в файле old_version/test/test3.php, основное — это периодический запрос через ajax, чтобы узнать, авторизация прошла успешно или нет.

## Демонстрация использования нового API для JS от WeChat: 
смотрите каталог test/jsapi.

License
-------
Это программное обеспечение лицензируется по условиям GNU LGPL версии 2.1 или более поздней. 
Подробности доступны по ссылке: http://creativecommons.org/licenses/LGPL/2.1/

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/ShuraChow-wechat-php-sdk.git
git@api.gitlife.ru:oschina-mirror/ShuraChow-wechat-php-sdk.git
oschina-mirror
ShuraChow-wechat-php-sdk
ShuraChow-wechat-php-sdk
master