


So implementieren Sie die Bezahlung von WeChat-Unternehmenskonten für Privatpersonen in PHP
In diesem Artikel wird hauptsächlich die PHP-Methode zur Implementierung der WeChat-Unternehmenskontozahlung für Einzelpersonen vorgestellt und die Zahlungskonfiguration, die Zertifikatsnutzung und die zahlungsprozessbezogenen Betriebsfähigkeiten des PHP-WeChat-Unternehmenskontos detailliert analysiert
Das Beispiel in diesem Artikel beschreibt die Methode zur Verwendung von PHP zur Implementierung der WeChat-Unternehmenskontozahlung für Einzelpersonen. Teilen Sie es als Referenz mit allen. Die Einzelheiten lauten wie folgt:
Einführung: Händler, wie kann man bei Kleinstunternehmen Bargeld abheben?
Direkt mit WeChat bezahlen.
Die Implementierung ist wie folgt:
WeChat-Zahlungskonfiguration
/*微信支付*/ 'PAY_WEIXIN' => array( 'appid' => 'XXXX', 'appsecret' => 'XXXXXXX', 'mchid' => '1283301801', //商户号 'key' => 'zhudianbaodiandodozhudianbao0527', //商户支付秘钥 'apiclient_cert' => 'Conf/cert/apiclient_cert.pem', //商户证书apiclient_cert.pem 'apiclient_key' => 'Conf/cert/apiclient_key.pem', //商户证书apiclient_key.pem )
arrayToXml
/** * array转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>"; return $xml; }
Verwenden Sie das Zertifikat, um die XML-Datei an zu senden die entsprechende Post-Methode-Schnittstellen-URL
/** * 作用:使用证书,以post方式提交xml到对应的接口url */ function 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); //设置header curl_setopt($ch,CURLOPT_HEADER,FALSE); //要求结果为字符串且输出到屏幕上 curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); //设置证书 //使用证书:cert 与 key 分别属于两个.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); //返回结果 if($data){ curl_close($ch); return $this->xmlToArray($data); } else { $error = curl_errno($ch); echo "curl出错,错误码:$error"."<br>"; curl_close($ch); return false; } }
Geschäftszahlung an Privatpersonen
//企业向个人付款 public function payToUser($params, $key, $apicent_cert, $apiclient_key) { $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; //检测必填参数 if($params["partner_trade_no"] == null) { // exit("退款申请接口中,缺少必填参数partner_trade_no!"."<br>"); }elseif($params["openid"] == null){ exit("退款申请接口中,缺少必填参数openid!"."<br>"); }elseif($params["check_name"] == null){ //NO_CHECK:不校验真实姓名 FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账)OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功) exit("退款申请接口中,缺少必填参数check_name!"."<br>"); }elseif(($params["check_name"] == 'FORCE_CHECK' or $params["check_name"] == 'OPTION_CHECK') && ($params["re_user_name"] == null)){ //收款用户真实姓名。 exit("退款申请接口中,缺少必填参数re_user_name!"."<br>"); }elseif($params["amount"] == null){ exit("退款申请接口中,缺少必填参数amount!"."<br>"); }elseif($params["desc"] == null){ exit("退款申请接口中,缺少必填参数desc!"."<br>"); } $params["mch_appid"] = $this->appid;//公众账号ID $params["mchid"] = $this->mchid;//商户号 $params["nonce_str"] = $this->createNoncestr();//随机字符串 $params['spbill_create_ip'] = $_SERVER['REMOTE_ADDR'] == '::1' ? '192.127.1.1' : $_SERVER['REMOTE_ADDR'];//获取IP $params["sign"] = $this->getSign($params, $key);//签名 $xml = $this->arrayToXml($params); return $this->postXmlSSLCurl($xml, $url, false, $apicent_cert, $apiclient_key); }
Geschäftszahlung
private function _enterprisePay($number, $member_id, $amount, $desc) { // 获取openid $wxuser_id = M('Member')->where(array('id' => $member_id))->getField('wxuser_id'); $openid = M('Wxuser')->where(array('id' => $wxuser_id))->getField('openid'); $pay = C('PAY_WEIXIN'); import('@.Action.WxDevelop'); $enterprise = new WxEnterprise($pay['appid'], $pay['appsecret'], $pay['mchid']); $params = array( 'partner_trade_no' => $number, 'openid' => $openid, 'check_name' => 'NO_CHECK', 'amount' => $amount, // 总计 'desc' => $desc, ); $result = $enterprise->payToUser($params, $pay['key'], $pay['apiclient_cert'], $pay['apiclient_key']); return $result; }
Verarbeitung von Bargeldabhebungen durch Händler
private function _handle($truename, $price) { // 处理分销商提现 $withdrawid = date("ymdHis") . strval(rand(1000, 9999)); $data = array('withdrawid' => $withdrawid, 'store_id' => $this->store_id, 'member_id' => $this->member_id, 'truename' => $truename, 'price' => $price, 'addtime' => time()); //免审核 if ($price >= C('withdraw_uncheck_value')) { $data['need_check'] = 0; $data['status'] = 1; if ($this->withdrawModel->add($data)) { $result = $this->_enterprisePay($withdrawid, $this->member_id, $price * 100, '分销商(' . $truename . ')提现'); //遇到支付信息出错,转为需审核提现 if ($result['return_code'] != 'SUCCESS') { $this->withdrawModel->where(array('withdrawid' => $withdrawid))->save(array('need_check' => 1, 'status' => 0)); $this->assign('success', 2); } else { //设置微信交易号 $this->withdrawModel->where(array('withdrawid' => $withdrawid))->save(array('payment_no' => $result['payment_no'])); //增加佣金流水,待修复 $data = array('store_id' => $this->store_id, 'user_type' => 2, 'user_id' => $this->shop_id, 'trade_type' => 2, 'trade_no' => $withdrawid, 'price' => -$price, 'status'=> 1, 'message' => $truename.'提现', 'addtime' => time()); M('Twitter_log')->add($data); //减少相应可提佣金 M('Member')->where(array('id' => $this->member_id))->setInc('money', -$price); $this->assign('success', 1); //发送佣金变动消息 import('@.Action.Tmplmsg'); $tmplmsg = new Tmplmsg(); $tmplmsg->send(Tmplmsg::PRICE_CHANGE, $this->member_id, array('token' => $this->token, 'intro' => '分销佣金提现转出', 'price' => $price, 'business' => BUSINESS)); } } else { $this->error('提现信息错误!'); } } //需要审核 else { $this->withdrawModel->add($data); $this->assign('success' , 2); } }
Bietet die Funktion der Unternehmenszahlung an Benutzer und unterstützt Corporate Pay über die API-Schnittstelle oder führt die Zahlung über die Webfunktion der WeChat Pay-Händlerplattform durch.
Warme Erinnerung:
◆ Wenn Sie eine Zahlung an denselben Benutzer mit echtem Namen vornehmen, beträgt das einzelne Tageslimit 2W/2W
◆ Wenn Sie eine Zahlung vornehmen eine Zahlung an denselben nicht echten Benutzer, der einzelne Das Tageslimit für eine einzelne Transaktion beträgt 2000/2000
◆ Das Gesamtzahlungslimit für einen Händler am selben Tag beträgt 100W
◆ Nur die APPID, die wurde an das Händlerkonto gebunden.
◆ Für die Zielbenutzer der Zahlung können Benutzer, die von WeChat Pay mit echtem Namen authentifiziert wurden, die Funktion zur Überprüfung des echten Namens nicht bereitstellen Verifizierung. Unternehmen können die Verifizierungsart entsprechend der Sicherheitsstufe ihres eigenen Unternehmens wählen.
◆ Der Zahlungsbetrag muss kleiner oder gleich dem Betrag des aktuell verfügbaren Guthabens des Händlers sein entsprechende Daten können über die Zahlungsabfrage des Unternehmens angezeigt werden.
Für die Anfrage ist ein Zwei-Wege-Zertifikat erforderlich .
<xml> <mch_appid>wxe062425f740c30d8</mch_appid> <mchid>10000098</mchid> <nonce_str>3PG2J4ILTKCH16CQ2502SI8ZNMTM67VS</nonce_str> <partner_trade_no>100000982014120919616</partner_trade_no> <openid>ohO4Gt7wVPxIT1A9GjFaMYMiZY1s</openid> <check_name>OPTION_CHECK</check_name> <re_user_name>张三</re_user_name> <amount>100</amount> <desc>节日快乐!</desc> <spbill_create_ip>10.2.3.10</spbill_create_ip> <sign>C97BDBACF37622775366F38B629F45E3</sign> </xml>
<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[]]></return_msg> <mch_appid><![CDATA[wxec38b8ff840bd989]]></mch_appid> <mchid><![CDATA[10013274]]></mchid> <device_info><![CDATA[]]></device_info> <nonce_str><![CDATA[lxuDzMnRjpcXzxLx0q]]></nonce_str> <result_code><![CDATA[SUCCESS]]></result_code> <partner_trade_no><![CDATA[10013574201505191526582441]]></partner_trade_no> <payment_no><![CDATA[1000018301201505190181489473]]></payment_no> <payment_time><![CDATA[2015-05-19 15:26:59]]></payment_time> </xml>
<xml> <return_code><![CDATA[FAIL]]></return_code> <return_msg><![CDATA[系统繁忙,请稍后再试.]]></return_msg> <result_code><![CDATA[FAIL]]></result_code> <err_code><![CDATA[SYSTEMERROR]]></err_code> <err_code_des><![CDATA[系统繁忙,请稍后再试.]]></err_code_des> </xml>
PHP implementiert die Unternehmenskonto-Verifizierungsschnittstelle der öffentlichen WeChat-Plattform
So verwenden Sie PHP zum Exportieren von Daten Taobao-Assistent CSV
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Bezahlung von WeChat-Unternehmenskonten für Privatpersonen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

In PHP8 sind Übereinstimmungsausdrücke eine neue Kontrollstruktur, die unterschiedliche Ergebnisse basierend auf dem Wert des Expression zurückgibt. 1) Es ähnelt einer Switch -Anweisung, gibt jedoch einen Wert anstelle eines Ausführungsanweisungsblocks zurück. 2) Der Match -Ausdruck wird streng verglichen (===), was die Sicherheit verbessert. 3) Es vermeidet mögliche Auslassungen in Switch -Anweisungen und verbessert die Einfachheit und Lesbarkeit des Codes.

In PHP können Sie CSRF -Angriffe effektiv verhindern, indem Sie unvorhersehbare Token verwenden. Spezifische Methoden umfassen: 1. CSRF -Token in der Form erzeugen und einbetten; 2. Überprüfen Sie die Gültigkeit des Tokens bei der Bearbeitung der Anfrage.

H5. Der Hauptunterschied zwischen Mini -Programmen und App ist: Technische Architektur: H5 basiert auf Web -Technologie, und Mini -Programme und Apps sind unabhängige Anwendungen. Erfahrung und Funktionen: H5 ist leicht und einfach zu bedienen, mit begrenzten Funktionen; Mini -Programme sind leicht und haben eine gute Interaktivität. Apps sind leistungsstark und haben reibungslose Erfahrung. Kompatibilität: H5 ist plattformübergreifend, Applets und Apps werden von der Plattform eingeschränkt. Entwicklungskosten: H5 verfügt über niedrige Entwicklungskosten, mittlere Mini -Programme und die höchste App. Anwendbare Szenarien: H5 eignet sich für Informationsanzeigen, Applets eignen sich für leichte Anwendungen und Apps eignen sich für komplexe Funktionen.

Kompatibilitätsprobleme und Fehlerbehebungsmethoden für Unternehmenssicherheit und Anwendung von Unternehmenssicherheit. Viele Unternehmen werden Sicherheitssoftware installieren, um die Sicherheit der Intranet zu gewährleisten. Sicherheitssoftware jedoch manchmal ...

Strenge Typen in PHP werden durch Hinzufügen von Declare aktiviert (strict_types = 1); oben in der Datei. 1) IT erzwingt die Typprüfung der Funktionsparameter und der Rückgabewerte, um die implizite Typumwandlung zu verhindern. 2) Die Verwendung strenger Typen kann die Zuverlässigkeit und Vorhersehbarkeit des Codes verbessern, Fehler reduzieren und die Wartbarkeit und Lesbarkeit verbessern.
