Cet article illustre la méthode de PHP pour réaliser le paiement des personnes atteintes de comptes d'entreprise WeChat. , les détails sont les suivants:
Introduction: Distributeur, comment retirer de l'argent des affaires WeChat?
Payer directement avec WeChat.
La mise en œuvre est la suivante:
Configuration de paiement WeChat
/ * Paiement WeChat * / 'pay_weixin' => array ('appid' => 'xxxx', 'appseret' => 'xxxxxx,' mchid '=>' 1283301801 ', // le numéro de marchand' '=>' ZhudianbaoDianDia 'Conf / cert / apiclient_cert.pem', // certificat de marchand apiclient_cert.pem 'apiclient_key' => 'conf / cert / apiclient_key.pem', // certificat marchand apiclient_key.pem)arraytoxml
/ *** tableau à xml * / fonction 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>"; retourner $ xml;}Utilisez le certificat pour soumettre le XML à l'URL d'interface correspondante dans la publication
/ *** Fonction: utilisez un certificat pour soumettre XML à l'URL d'interface correspondante * / fonction postxmlsslcurl ($ xml, $ url, $ second, $ cert, $ key) {$ ch = curl_init (); // Timeout Time curl_setopt ($ ch, curlopt_timeout, $ second? $ Second: $ this-> timeout); // Définissez le proxy ici, s'il y a un // 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); // Définir l'en-tête curl_setopt ($ ch, curlopt_header, false); // Définissez le résultat en tant que chaîne et sortie sur l'écran curl_setopt ($ ch, curlopt_returntransfer, true); // Définissez le certificat // Utilisez le certificat: certificat et clé Il appartient à deux fichiers .pem respectivement // Le format par défaut est PEM, vous pouvez annoter curl_setopt ($ ch, curlopt_sslcertType, 'pem'); curl_setopt ($ ch, curlopt_sslcert, $ Cert); // Le format par défaut est PEM, vous pouvez annoter curl_setopt ($ ch, curlopt_sslkeytype, 'pem'); curl_setopt ($ ch, curlopt_sslkey, $ key); // la méthode de soumission du post curl_setopt ($ ch, curlopt_post, true); curl_setopt ($ ch, curlopt_postfields, $ xml); $ data = curl_exec ($ ch); // Retour Résultat if ($ data) {curl_close ($ ch); retourner $ this-> xmltoArray ($ data); } else {$ error = curl_errno ($ ch); ECHO "Erreur de curl, code d'erreur: $ error". "<br>"; curl_close ($ ch); retourne false; }}Les entreprises paient des particuliers
// l'entreprise paie la fonction publique individuelle PayTouser ($ params, $ key, $ apcent_cert, $ apiclient_key) {$ url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; // Détection Paramètres requis if ($ params ["partenaire_trade_no"] == null) {// exit ("Interface d'application de remboursement, les paramètres requis partenaire_trade_no!". "<br>"); } elseif ($ params ["openId"] == null) {exit ("Interface d'application de remboursement, les paramètres requis openID!". "<br>"); } elseif ($ params ["check_name"] == null) {// no_check: pas de vérification de nom réel force_check: une vérification forte du nom réel (les utilisateurs sans réel nom authentification ne parviendront pas à vérifier, et le transfert ne peut pas être transféré) Option_Check: seuls les utilisateurs qui ont un nom réel authentifié sont vérifiés (les utilisateurs qui n'ont pas réel le nom authentifié ne sont pas vérifiés, le transfert peut être transféré) "ne fait pas un nom réel. Interface d'application, le paramètre requis Check_name est manquant! "." <br> "); } elseif (($ params ["Check_name"] == 'Force_check' ou $ params ["Check_name"] == 'Option_Check') && ($ params ["re_user_name"] == null)) {// le nom réel de l'utilisateur de paiement. Exit ("Interface d'application de remboursement, le paramètre requis re_user_name est manquant!". "<br>"); } elseIf ($ params ["montant"] == null) {exit ("Interface d'application de remboursement, le montant du paramètre requis est manquant!". "<br>"); } elseif ($ params ["desc"] == null) {exit ("Interface d'application de remboursement, le paramètre requis desc!". "<br>"); } $ params ["mch_appid"] = $ this-> appid; // public id de compte $ params ["mchid"] = $ this-> mCHID; // Numéro de marchand $ params ["nonce_str"] = $ this-> CreenonCestr (); // Random String $ params ['spbill_create_ip'] = $ _Server [' '192.127.1.1': $ _Server ['Remote_addr']; // Get ip $ params ["Sign"] = $ this-> getsign ($ params, $ key); // signature $ xml = $ this-> arraytoxml ($ params); Retour $ this-> postxmlsslcurl ($ xml, $ url, false, $ apcent_cert, $ apiclient_key);}