Este artigo ilustra o método do PHP para obter o pagamento de indivíduos com contas da WeChat Enterprise. , os detalhes são os seguintes:
Introdução: distribuidor, como retirar dinheiro dos negócios do WeChat?
Pague diretamente com o WeChat.
A implementação é a seguinte:
Configuração do pagamento do WeChat
/*Pagamento WeChat*/'Pay_weixin' => Array ('Appid' => 'xxxx', 'AppSecret' => 'xxxxxx,' mChid '=>' 1283301801 ', // Número do comerciante' key '' '' '' ZhudianBaodianBahudianBa ', // Merchant Number' key '' '' '' '' 'ZhudianBaodianBahudianBa', // Número do Merchant '»' '' '' ' '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 para xml*/function Arraytoxml ($ arr) {$ xml = "<xml>"; foreach ($ arr como $ key => $ val) {if (is_numeric ($ val)) {$ xml. = "<". $ key. ">". $ val. "</". $ key. ">" } else $ xml. = "<". $ key. "> <! [CDATA [". $ val. "]]> </". } $ xml. = "</xml>"; retornar $ xml;}Use o certificado para enviar o XML para o URL da interface correspondente na postagem
/*** Função: use um certificado para enviar XML ao URL da interface correspondente*/função postxmlssslcurl ($ xml, $ url, $ segundo, $ cert, $ key) {$ ch = curl_init (); // Tempo de tempo limite Curl_SESTOPT ($ CH, Curlopt_timeout, $ Second? $ Second: $ this-> Timeout); // Defina o proxy aqui, se houver um // curl_setopt ($ CH, Curlopt_proxy, '8.8.8.8'); // curl_setopt ($ CH, Curlopt_proxyport, 8080); curl_setot ($ CH, Curlopt_url, $ url); Curl_SESTOPT ($ CH, Curlopt_ssSl_verifyPeer, false); Curl_SESTOPT ($ CH, Curlopt_ssl_verifyHost, false); // Definir cabeçalho curl_setopt ($ CH, Curlopt_header, false); // Defina o resultado como uma string e saída para a tela Curl_SESTOPT ($ CH, Curlopt_ReturntRansfer, true); // Defina o certificado // Use o certificado: certificado e chave pertencem a dois arquivos .PEM, respectivamente, // o formato padrão é PEM, você pode anotar Curl_SESTOPT ($ CH, Curlopt_SslCertType, 'PEM'); Curl_SESTOPT ($ CH, Curlopt_SslCert, $ cert); // O formato padrão é PEM, você pode anotar Curl_SESTOPT ($ CH, Curlopt_ssSlkeyType, 'PEM'); Curl_SESTOPT ($ CH, Curlopt_ssSlkey, $ key); // o método de envio de postagem Curl_SESTOPT ($ CH, Curlopt_Post, true); Curl_SESTOPT ($ CH, Curlopt_Postfields, $ XML); $ data = curl_exec ($ ch); // Retornar resultado se ($ data) {curl_close ($ ch); retornar $ this-> xmltoArray ($ dados); } else {$ error = curl_errno ($ ch); echo "Erro de enrolamento, código de erro: $ error". "<br>"; curl_close ($ ch); retornar falso; }}As empresas pagam indivíduos
// A empresa paga a função pública individual PayTouser ($ params, $ key, $ apcent_cert, $ apiclient_key) {$ url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; // Detecção necessária parâmetros if ($ params ["parceiro_trade_no"] == null) {// exit ("Reembolso da interface do aplicativo, os parâmetros necessários parceiros_trade_no!". "<br>"); } elseif ($ params ["OpenId"] == null) {exit ("interface do aplicativo de reembolso, os parâmetros necessários OpenId!". "<br>"); } elseif ($ params ["check_name"] == null) {// no_check: nenhum nome de nome de nome real force_check: forte verificação do nome real (usuários sem autenticação de nome real falhará em verificar e o transferência não é transferido) option_check: apenas os usuários que não têm nome real são autenticados (que não são transferidos, que não são transferidos), que não é transferido, que não é transferido, que não é transferido, que não é transferido, que não é transferido, que não é transferido, que não é transferido, que não é transferido, que não é transferido. interface, o parâmetro exigido Check_name está faltando! "." <br> "); } elseif (($ params ["check_name"] == 'force_check' ou $ params ["check_name"] == 'option_check') && ($ params ["re_user_name"] == null)) {// o nome real do usuário do pagamento. EXIT ("Interface do aplicativo de reembolso, o parâmetro necessário re_user_name está faltando!". "<br>"); } elseif ($ params ["valor"] == null) {exit ("interface do aplicativo de reembolso, a quantidade de parâmetro necessária está ausente!". "<br>"); } elseif ($ params ["desc"] == null) {exit ("Reembolso da interface do aplicativo, o parâmetro necessário desc!". "<br>"); } $ params ["mch_appid"] = $ this-> Appid; // ID da conta pública $ params ["mchid"] = $ this-> mchid; // Número do comerciante $ params ["nonce_str"] = $ this-> createNoCest (); // string Randoms ['REMBILL_IPRETEL_IP'] = $; ? '192.127.1.1': $ _server ['remote_addr']; // get ip $ params ["signo"] = $ this-> getSign ($ params, $ key); // assinatura $ xml = $ this-> Arraytoxml ($ params); Retornar $ this-> postxmlssslcurl ($ xml, $ url, false, $ apcent_cert, $ apiclient_key);}