Este artículo ilustra el método de PHP para realizar el pago de personas con cuentas empresariales de WeChat. , los detalles son los siguientes:
Introducción: Distribuidor, ¿Cómo retirar efectivo de WeChat Business?
Pague directamente con WeChat.
La implementación es la siguiente:
Configuración de pago de WeChat
/*Wechat payling*/'pay_weixin' => array ('appid' => 'xxxx', 'appSecret' => 'xxxxxxx,' mchid '=>' 1283301801 ', // numero' key '=>' zhududaodiandiAzHudiandanBao0527 ', // comerciante clave' apeCert ' 'Conf/cert/apiclient_cert.pem', // certificado de comerciante apiclient_cert.pem 'apiclient_key' => 'conf/cert/apiclient_key.pem', // certificado de comerciante apiclient_key.pem)arraytoxml
/*** Array a 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>"; devolver $ xml;}Use el certificado para enviar el XML a la URL de la interfaz correspondiente en la publicación
/*** Función: use un certificado para enviar XML a la URL de la interfaz correspondiente*/function postXMLSSLCURL ($ xml, $ url, $ segundo, $ cert, $ key) {$ ch = curl_init (); // tiempo de tiempo de espera curl_setopt ($ ch, curlopt_timeout, $ segundo? $ Segundo: $ this-> timeout); // Establezca el proxy aquí, si hay uno // 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, falso); curl_setopt ($ ch, curlopt_ssl_verifyhost, falso); // establecer el encabezado curl_setopt ($ ch, curlopt_header, falso); // Establezca el resultado como una cadena y salida en la pantalla curl_setopt ($ ch, curlopt_returntransfer, true); // Establecer el certificado // Use el certificado: cert y clave pertenece a dos archivos .pem respectivamente // El formato predeterminado es PEM, puede anotar curl_setopt ($ ch, curlopt_sslcerttype, 'pem'); curl_setopt ($ ch, curlopt_sslcert, $ cert); // El formato predeterminado es PEM, puede anotar curl_setopt ($ ch, curlopt_sslkeytype, 'pem'); curl_setopt ($ ch, curlopt_sslkey, $ key); // El método de envío de publicaciones curl_setopt ($ ch, curlopt_post, true); curl_setopt ($ ch, curlopt_postfields, $ xml); $ data = curl_exec ($ ch); // devuelve el resultado if ($ data) {curl_close ($ ch); devolver $ this-> xmltoarray ($ data); } else {$ error = curl_errno ($ ch); echo "Error curl, código de error: $ error". "<br>"; curl_close ($ ch); devolver falso; }}Las empresas pagan a las personas
// La empresa paga la función pública individual PayTouser ($ params, $ key, $ apcent_cert, $ apiclient_key) {$ url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; // Detección de parámetros requeridos if ($ params ["socio_trade_no"] == null) {// exit ("Interfaz de aplicación de reembolso, los parámetros requeridos socios_trade_no!". "<br>"); } elseif ($ params ["OpenId"] == NULL) {EXIT ("Interfaz de aplicación de reembolso, los parámetros requeridos OpenID!". "<br>"); } elseif ($ params ["check_name"] == null) {// no_check: sin verificación de nombre real Force_check: verificación fuerte del nombre real (los usuarios sin autenticación de nombre real no podrán verificar, y la transferencia no se puede transferir) opción_check: solo los usuarios que tienen los usuarios reales autenticados son verificados (los usuarios que no tienen el nombre real autenticado no verificar, la transferencia se puede transferir sucesivamente). Interfaz, falta el parámetro requerido check_name! "." <br> "); } elseif (($ params ["check_name"] == 'force_check' o $ params ["check_name"] == 'option_check') && ($ params ["re_user_name"] == null)) {// el nombre real del usuario de pago. Exit ("Interfaz de aplicación de reembolso, falta el parámetro requerido re_user_name!". "<br>"); } elseif ($ params ["cantidad"] == null) {salida ("Interfaz de aplicación de reembolso, la cantidad de parámetro requerida falta!". "<br>"); } elseif ($ params ["DESC"] == NULL) {EXIT ("Interfaz de aplicación de reembolso, el parámetro requerido DESC!". "<br>"); } $ params ["mch_appid"] = $ this-> appid; // ID de cuenta pública $ params ["mChid"] = $ this-> mchid; // comerciante número $ params ["nonce_str"] = $ this-> createenCestr (); // string $ params ['spbill_create_ip'] = $ _server ['' '' '' '' '' '' '192.127.1.1': $ _server ['remoto_addr']; // Obtener ip $ params ["firmar"] = $ this-> getSign ($ params, $ key); // firma $ xml = $ this-> arraytoxml ($ params); return $ this-> postxmlsslcurl ($ xml, $ url, falso, $ apcent_cert, $ apiclient_key);}