Heim Backend-Entwicklung PHP-Problem Was ist der PHP-WeChat-Zahlungsprozess?

Was ist der PHP-WeChat-Zahlungsprozess?

Aug 27, 2019 pm 03:24 PM
php 微信 支付流程

Was ist der PHP-WeChat-Zahlungsprozess?

Frühe Vorbereitung:

1. WeChat-Authentifizierungsdienstkonto und WeChat-Zahlung eröffnen

2. WeChat-Zahlungs-SDK, Download-Adresse: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1

3. Melden Sie sich bei der WeChat-Zahlungsplattform https an :/ /pay.weixin.qq.com/index.php/account/api_certZahlungszertifikat herunterladen

Methodenschritte:

1.Demo-Dateiverarbeitung

(1) Laden Sie die offizielle Demo herunter, der Dateiname ist WxpayAPI_php_v3, und benennen Sie die Datei in wxpay um, damit Sie das Verzeichnis später bequem schreiben können.

(2) Öffnen Sie WxPay.Api.php im lib-Ordner In der Datei befindet sich in Zeile 537 ein Curl-Netzwerkanforderungskonfigurationscode:

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
Nach dem Login kopieren

wird ersetzt durch:

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
Nach dem Login kopieren

, um zu verhindern, dass cURL das Zertifikat des Peers überprüft.

(3) Öffnen Sie die Datei WxPay.Config.php im lib-Ordner. Vervollständigen Sie ab Zeile 25 die grundlegenden Informationseinstellungen entsprechend Ihrem Konto.

const APPID = '公众账号APPID';
const MCHID = '商户号';
const KEY = '商户支付密钥';
const APPSECRET = '公众帐号secert';
Nach dem Login kopieren

(4) Öffnen Sie die lib Ordner In der Datei WxPay.Notify.php unten wird der Code in Zeile 79:

if($needSign == true && 
$this->GetReturn_code($return_code) == "SUCCESS")
{
$this->SetSign();
}
Nach dem Login kopieren

geändert in:

if($needSign == true && 
$this->GetReturn_code() == "SUCCESS")
{
$this->SetSign();
}
Nach dem Login kopieren

(5) Öffnen Sie das Zertifikatverzeichnis cert und ersetzen Sie die beiden darin enthaltenen Zertifikate durch Ihr eigenes Zahlungszertifikat.

Verwandte Empfehlungen: „PHP-Tutorial

2. Offizielle Kontohintergrundeinstellungen

(1) Konfigurieren Sie den für die Webseite autorisierten Domänennamen, meine Domäne Name ist (xy.chuyin.ren);

Was ist der PHP-WeChat-Zahlungsprozess?

(2) Konfigurieren Sie das Zahlungsautorisierungsverzeichnis Demo im Verzeichnis, auf das dieser Domainname verweist. Die Datei jsapi.php in der Demo befindet sich im Verzeichnis example/. Das Zahlungsautorisierungsverzeichnis lautet also: xy.chuyin.ren/weixinopen/wxpay/. Beispiel/

Was ist der PHP-WeChat-Zahlungsprozess?

3. Zahlungsvorgang

Öffnen Sie die Datei jsapi.php im Beispielverzeichnis. Hier sind alle Zahlungen abgeschlossen.

(1) Erhalten Sie die Benutzer-OpenID

Sie haben Ihre APPID und Ihr APPSecert bereits konfiguriert, sodass eine Verarbeitung hier nicht erforderlich ist.

//①、获取用户openid
$tools = new JsApiPay();
$openId = $tools->GetOpenid();
Nach dem Login kopieren

Die hier initialisierte JsApiPay()-Klasse erhält zuerst ein Objekt. Die Datei entspricht WxPay.JsApiPay.php im Verzeichnis example/ und erhält automatisch eine eigene openID.

(2) Unified order

//②、统一下单
$input = new WxPayUnifiedOrder();
$input->SetBody("test");
$input->SetAttach("test");
$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
$input->SetTotal_fee("1");
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test");
$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
$input->SetTrade_type("JSAPI");
$input->SetOpenid($openId);
$order = WxPayApi::unifiedOrder($input);
echo &#39;<font color="#f00"><b>统一下单支付单信息</b></font><br/>&#39;;
printf_info($order);
$jsApiParameters = $tools->GetJsApiParameters($order);
Nach dem Login kopieren

entspricht der unifiedOrder()-Methode in Zeile 24 von WxPay.Api.php, die die Bestellinformationen und die Zahlungsrückruffunktion konfiguriert hier geändert:

Produktname:

$input->SetBody("test");
Nach dem Login kopieren

Bestellnummer

$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
Nach dem Login kopieren

D. Zahlungsbestätigungslink

Legen Sie den Speicherort Ihrer notify.php-Datei fest, daher habe ich sie hier auf http://xy.chuyin.ren/weixinopen/wxpay/example/notify.php eingestellt

Das können Sie auch Schreiben Sie andere Adressen. Natürlich muss sie sich unter dem Domänennamen für die Zahlungsautorisierung befinden. Nach erfolgreicher Zahlung wird automatisch die im Link angegebene Methode aufgerufen, über die Beurteilungs- und Datenbankvorgänge durchgeführt werden können.

$input->SetTotal_fee("1");
Nach dem Login kopieren

E. Zusätzliche Parameter

$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
Nach dem Login kopieren

Zusätzliche Parameter können ausgefüllt werden oder nicht. Wenn ausgefüllt, ist es am besten, keine Leerzeichen in der Zeichenfolge zu haben.

Klicken Sie zu diesem Zeitpunkt auf „Bezahlen“ und die Zahlung sollte erfolgreich sein.

(3) Zahlung einleiten

$input->SetAttach("test");
Nach dem Login kopieren

Durch Klicken auf die Schaltfläche „Jetzt bezahlen“ wird die Funktion callpay() aufgerufen, die die Funktion jsApiCall() aufruft, um das Zahlungsprogramm zu öffnen.

Was ist der PHP-WeChat-Zahlungsprozess?jsApiCall()-Funktion überwacht jede Aktion:

Was ist der PHP-WeChat-Zahlungsprozess?res.err_msg gibt das Front-End-Urteil für get_brand_wcpay_request an :cancel Um die Zahlung abzubrechen, lautet es.err_msg get_brand_wcpay_request:ok. Dies zeigt an, dass das Front-End die Zahlung als erfolgreich beurteilt hat, und wir können auf dieser Grundlage zur Zahlungserfolgsseite springen.


(4) Unterstützt Erfolgsrückruf

Das Zahlungsergebnis kann über die Front-End-Funktion jsApiCall() überwacht werden, dies ist jedoch nicht vertrauenswürdig. Um zu bestätigen, ob die Zahlung erfolgreich ist, sollte die Geschäftslogik über notify.php verarbeitet werden. Der Zahlungsbestätigungslink SetNotify_url() wurde zuvor konfiguriert. Nach Abschluss der Zahlung fordert der WeChat-Server automatisch Ihre notify.php-Datei gemäß dem Link an und öffnet diese Datei. Tatsächlich besteht der Hauptcode dieser Datei nur aus zwei Zeilen:

<script type="text/javascript">
//调用微信JS api 支付
function jsApiCall()
{
WeixinJSBridge.invoke(
&#39;getBrandWCPayRequest&#39;,
<?php echo $jsApiParameters; ?>,
function(res){
WeixinJSBridge.log(res.err_msg);
alert(res.err_code+res.err_desc+res.err_msg);
}
);
}
 
function callpay()
{
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener(&#39;WeixinJSBridgeReady&#39;, jsApiCall, false);
}else if (document.attachEvent){
document.attachEvent(&#39;WeixinJSBridgeReady&#39;, jsApiCall); 
document.attachEvent(&#39;onWeixinJSBridgeReady&#39;, jsApiCall);
}
}else{
jsApiCall();
}
}
</script>
Nach dem Login kopieren

Die Handle()-Funktion der Klassendatei WxPay.Notify.php wird von folgendem verfolgt:

$notify = new PayNotifyCallBack();
$notify->Handle(false);
Nach dem Login kopieren

Hauptcode:

/**
 * 
 * 回调入口
 * @param bool $needSign  是否需要签名输出
 */
final public function Handle($needSign = true)
{
$msg = "OK";
//当返回false的时候,表示notify中调用NotifyCallBack回调失败获取签名校验失败,此时直接回复失败
$result = WxpayApi::notify(array($this, &#39;NotifyCallBack&#39;), $msg);
if($result == false){
$this->SetReturn_code("FAIL");
$this->SetReturn_msg($msg);
$this->ReplyNotify(false);
return;
} else {
//该分支在成功回调到NotifyCallBack方法,处理完成之后流程
$this->SetReturn_code("SUCCESS");
$this->SetReturn_msg("OK");
}
$this->ReplyNotify($needSign);
}
Nach dem Login kopieren

The $xml=$ GLOBALS['HTTP_RAW_POST_DATA'] ist hier: Nach erfolgreicher Zahlung gibt der Benutzer ein Ergebnis an Sie zurück, bei dem es sich um eine Zeichenfolge im XML-Format handelt.

Wir können die hier zurückgegebenen XML-Daten aufzeichnen und sie dann öffnen, um zu sehen, ob $out_trade_no die Bestellnummer ist, die ich vor der Zahlung festgelegt habe, und $attach der zusätzliche Parametersatz ist.

Nach Erhalt der Bestellnummer schreibe ich direkt nach erfolgreicher Zahlung die Logik, z. B. das Ändern der Daten in der Datenbank usw.

Auf diese Weise ist die allgemeine Analyse der JsApi-Zahlung der WeChat-Zahlung abgeschlossen.

Was ist der PHP-WeChat-Zahlungsprozess?

Das obige ist der detaillierte Inhalt vonWas ist der PHP-WeChat-Zahlungsprozess?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

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.

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

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 PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

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.

Erklären Sie den Match -Expression (Php 8) und wie er sich vom Schalter unterscheidet. Erklären Sie den Match -Expression (Php 8) und wie er sich vom Schalter unterscheidet. Apr 06, 2025 am 12:03 AM

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.

Der Unterschied zwischen H5- und Miniprogramm und Apps Der Unterschied zwischen H5- und Miniprogramm und Apps Apr 06, 2025 am 10:42 AM

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.

Was ist Cross-Site-Anforderungsfälschung (CSRF) und wie implementieren Sie den CSRF-Schutz in PHP? Was ist Cross-Site-Anforderungsfälschung (CSRF) und wie implementieren Sie den CSRF-Schutz in PHP? Apr 07, 2025 am 12:02 AM

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.

Was soll ich tun, wenn die Sicherheitssoftware des Unternehmens mit Anwendungen in Konflikt steht? Wie kann die Sicherheitssoftware von Far HUEEs beheben, dass eine gemeinsame Software nicht geöffnet wird? Was soll ich tun, wenn die Sicherheitssoftware des Unternehmens mit Anwendungen in Konflikt steht? Wie kann die Sicherheitssoftware von Far HUEEs beheben, dass eine gemeinsame Software nicht geöffnet wird? Apr 01, 2025 pm 10:48 PM

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 ...

Erklären Sie strenge Typen (deklar (strict_types = 1);) in PHP. Erklären Sie strenge Typen (deklar (strict_types = 1);) in PHP. Apr 07, 2025 am 12:05 AM

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.

See all articles