Эта статья иллюстрирует метод PHP, чтобы реализовать оплату лиц с учетными записями WeChat Enterprise. , детали следующие:
Введение: дистрибьютор, как снять наличные деньги из WeChat Business?
Платите непосредственно с WeChat.
Реализация выглядит следующим образом:
WeChat Payment Configuration
/*WeChat платеж*/'pay_weixin' => array ('appid' => 'xxxx', 'appsecret' => 'xxxxxx,' mchid '=>' 1283301801 ', // merchant number' key '=>' zhudianbaodiandozhudianbao0527 ', ceal' => 'zhudianbaodiandozhudbao0527',//apichant key 'ap' ap 'ap' ap 'ap' ap 'ap' ap 'ap' ap 'ap' ap 'ap' ap 'ap' ap 'ap' ap 'ap' ap 'ap' ap 'ap' ap 'ap' ap 'ap' ap '= zhudianbaodiandozhudianbao0527 'Conf/cert/apiclient_cert.pem', // Сертификат торговцев apiclient_cert.pem 'apiclient_key' => 'conf/cert/apiclient_key.pem', // Сертификат торговцев apiclient_key.pem)ArrayToxml
/*** массив к XML*/Function ArrayToxml ($ arr) {$ xml = "<xml>"; foreach ($ arr as $ key => $ val) {if (is_numeric ($ val)) {$ xml. = "<". $ key. ">". $ val. "</". $ key. ">"; } else $ xml. = "<". $ key. "> <! [cdata [". $ val. "]]> </". $ key. ">"; } $ xml. = "</xml>"; возврат $ xml;}Используйте сертификат, чтобы отправить XML в соответствующий URL -адрес интерфейса в сообщении
/*** Функция: используйте сертификат для отправки XML в соответствующий URL интерфейса*/функция postxmlsslcurl ($ xml, $ url, $ second, $ cert, $ key) {$ ch = curl_init (); // Время тайм-аута curl_setopt ($ ch, curlopt_timeout, $ second? $ Second: $ this-> timeout); // Установить прокси здесь, если есть один // curl_setopt ($ ch, curlopt_proxy, '8.8.8.8'); // curl_setopt ($ ch, curlopt_proxyport, 8080); curl_setopt ($ ch, curlopt_url, $ url); curl_setopt ($ ch, curlopt_ssl_verifypeer, false); curl_setopt ($ ch, curlopt_ssl_verifyhost, false); // установить заголовок curl_setopt ($ ch, curlopt_header, false); // Установить результат в виде строки и вывода на экран curl_setopt ($ ch, curlopt_returntransfer, true); // Установить сертификат // Использовать сертификат: сертификат и ключ, который он принадлежит двум файлам .pem соответственно // формат по умолчанию - это pem, вы можете аннотировать curl_setopt ($ ch, curlopt_sslcerttype, 'pem'); curl_setopt ($ ch, curlopt_sslcert, $ cert); // формат по умолчанию - это PEM, вы можете аннотировать curl_setopt ($ ch, curlopt_sslkeytype, 'pem'); curl_setopt ($ ch, curlopt_sslkey, $ key); // Метод отправки POST curl_setopt ($ ch, curlopt_post, true); curl_setopt ($ ch, curlopt_postfields, $ xml); $ data = curl_exec ($ ch); // вернуть результат, если ($ data) {curl_close ($ ch); вернуть $ this-> xmltoarray ($ data); } else {$ error = curl_errno ($ ch); Echo "ошибка завивки, код ошибки: $ error". "<br>"; curl_close ($ ch); вернуть ложь; }}Предприятия платят физическим лицам
// Enterprise оплачивает отдельную публичную функцию Paytouser ($ params, $ key, $ apcent_cert, $ apiclient_key) {$ url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; // Обнаружение необходимых параметров, если ($ params ["partner_trade_no"] == null) {// exit ("refund приложение, необходимые параметры partner_trade_no!". "<br>"); } elseif ($ params ["openId"] == null) {exit ("refund приложение интерфейс, требуемые параметры OpenID!". "<br>"); } elseif ($ params ["check_name"] == null) {// no_check: нет реальной проверки имени force_check: сильная проверка реального имени (пользователи без реального аутентификации имени не могут проверить, а передача не может быть передана) опция_чека: только пользователи, которые подтверждают, подтверждены (пользователи, которые не могут быть выпущены, не могут быть подтверждены. Интерфейс, требуемый параметр check_name отсутствует! "." <br> "); } elseif (($ params ["check_name"] == 'force_check' или $ params ["check_name"] == 'option_check') && ($ params ["re_user_name"] == null)) {// реальное имя пользователя платежа. Exit («Возвращение к приложению, необходимый параметр re_user_name отсутствует!». «<br>»); } elseif ($ params ["sutr"] == null) {exit ("refund приложение интерфейс, требуемая сумма параметра отсутствует!". "<br>"); } elseif ($ params ["desc"] == null) {exit ("refund приложение интерфейс, требуемый параметр desc!". "<br>"); } $ params ["mch_appid"] = $ this-> appid; // идентификатор публичной учетной записи $ params ["mchid"] = $ this-> mchid; // торговый номер $ params ["nonce_str"] = $ this-> createNoncestr (); // случайная строка $ params ['spbill_create_pret_ip'] = $ $ _seserver ['] releterver ['] releterver ['] retemerver ['] rete-letemstraver ['spbill_create_crete_ ':: 1'? '192.127.1.1': $ _server ['remote_addr']; // получить ip $ params ["sign"] = $ this-> getsign ($ params, $ key); // подпись $ xml = $ this-> arraytoxml ($ params); Возврат $ this-> postxmlsslcurl ($ xml, $ url, false, $ apcent_cert, $ apiclient_key);}