Heim > Artikel > Backend-Entwicklung > Eine beispielhafte Einführung von TP5 zur Implementierung der Alipay-Computer-Website-Zahlung
Dieser Artikel zeigt Ihnen, wie TP5 die Zahlung auf Computer-Websites implementiert. Er hat einen gewissen Referenzwert. Ich hoffe, er wird Ihnen hilfreich sein.
Ich arbeite diese zwei Tage an einem kleinen WEB-Projekt im Unternehmen, das eine Bezahlfunktion erfordert. Es war das erste Mal, dass ich eine Alipay-Zahlung tätigte, und es gab ein paar Fallstricke, aber es verlief ziemlich reibungslos. Aufgeregt schrieb ich schnell den Implementierungsprozess auf.
Der erste Schritt besteht natürlich darin, den öffentlichen Schlüssel, den privaten Schlüssel APPID usw. auf der offenen Alipay-Plattform zu beantragen. Die offiziellen Alipay-Dokumente enthalten eine detaillierte Einführung, die hier weggelassen wird.
Nachdem die Bewerbung abgeschlossen ist, beginnt der Entwicklerimplementierungsprozess. Laden Sie zunächst die offizielle DEMO von Alipay herunter. Die Website lautet https://docs.open.alipay.com/... Es wird empfohlen, die offizielle DEMO anstelle des SDK herunterzuladen, da für Anfänger darin gekapselte Funktionen enthalten sind DEMO, das direkt verwendet werden kann, wenn Sie es ändern möchten, es ist benutzerfreundlicher. Wenn sich die Technologie in Zukunft verbessert, kann ich wieder mit dem SDK spielen.
Da ich ein PHPer bin, wähle ich natürlich die PHP-Version. Nach dem Herunterladen lautet der Standardname alipay.trade.page.pay-PHP-UTF-8. Es wird empfohlen, den Namen in alipay zu ändern.
Da ich mit TP5 entwickle, lege ich es im Verzeichnis des externen Ressourcenpaketanbieters unter dem Projektstammverzeichnis ab.
Suchen Sie nach dem Einfügen die Datei pagepay.php im Verzeichnis pagepay im Alipay-Verzeichnis. Dies ist das offiziell von Ali bereitgestellte Zahlungsmethodenbeispiel 🎜>
Ich habe die Schreibmethode eines Seniors online befolgt und sie in die TP5-Methode geändert, wie im Bild unten gezeigt:Wenn Sie hier erfolgreich sind, wird die Alipay-QR-Codeseite angezeigt. Ich kann hier keine Screenshots machen, da der Kunde die Erlaubnis erneut beantragt hat. Es ist die Alipay QR-Codeseite. Scannen Sie den QR-Code, um zu bezahlen, und Sie gelangen zur Zahlungserfolgsseite und schließlich zu Ihrer benutzerdefinierten Synchronisierungssprungadresse. Der Preis kann über das Frontend-Formular eingegeben werden. Hier betonen wir, dass es
drei Pflichtfelder gibt: Bestellnummer, Bestellname, Zahlungsbetrag Von diesen dreien fehlen? Beide werden einen Fehler melden. Zuerst schwirrte mir der Kopf, also entfernte ich den Bestellnamen und bekam eine Fehlermeldung...Nachdem ich mit dem Schreiben hier fertig war, ging ich zu config.php, um verschiedene Parameter zu konfigurieren. config.php befindet sich im Stammverzeichnis von alipay. Die Konfiguration dieses Elements ist von entscheidender Bedeutung. Wenn Sie einen Fehler machen, kann der Händler die Zahlung nicht erhalten...
Hier erfahren Sie, wie Sie das Formular für Narren mit ID, privatem Schlüssel, asynchroner Adresse, synchroner Adresse und öffentlichem Schlüssel ausfüllen. Diese 6 Punkte müssen korrekt ausgefüllt werden. Da ich TP5 verwende, habe ich die Benachrichtigungsadresse in TP5, Modul/Controller/Methode geändert.
Ändern Sie das Alipay-Gateway nicht in „https://openapi“. „alipaydev.com/gateway.do“ hat ein zusätzliches „dev“. Da ich eine reale Umgebung verwende, besteht keine Notwendigkeit, diese zu ändern.
Hier gibt es eine große Grube, die mich zwei Tage lang beunruhigt hat, Das heißt, bei der asynchronen Methode ist es unmöglich, die Sitzung zu verwenden, um den Wert zu erhalten, den ich ursprünglich verwenden wollte Sitzung, um die Benutzer-Anmelde-ID abzurufen und in der Datenbank zu speichern. Später habe ich den Master gefragt und herausgefunden, dass die Interaktion zwischen Server und Server asynchron ist, sodass es keine Cookie-ID gibt und es natürlich keinen Sitzungswert ohne Cookie-ID gibt. Für diejenigen, die es hier nicht verstehen, können Sie die Grundkenntnisse der Sitzung überprüfen. Ich schäme mich, dass ich so eine grundlegende Sache vergessen habe ... Daraus können wir ersehen, dass die Synchronisierungsmethode die Sitzung übernehmen kann, weil sie so ist Interaktion zwischen dem Server und dem Client. Wenn Sie keine Ahnung davon haben, können Sie die Parameter nach dem Empfang der Parameter in der asynchronen Methode in das JSON-Format konvertieren und sie dann mit der Funktion file_put_contents() in Notepad schreiben und einen Blick darauf werfen. Beispiel:
rrree
Die Synchronisierungsmethode ist, wie der Name schon sagt, die Adresse, an die die Seite synchron springt, also die Seite, die Kunden sehen können. Sie können es hier anpassen, z. B. einen Text, der den Benutzer darüber informiert, dass die Zahlung erfolgreich war.
Das Folgende ist ein Beispiel für das Schreiben asynchroner und synchroner Methoden:
/** 异步同步示例 */ class alipay extends Controller { /** * 异步方法 * @return [void] */ public function notify(){ $post = input(); if($post['trade_status'] == "TRADE_SUCCESS"){ //操作数据库 修改状态 echo "SUCCESS";//返回给支付宝成功 ,不返回这个 字符 ,支付宝定时 回调这个方法 时间 5 10 30/m 1小时 成功为止 } //写在文本里看一下参数 $data = json_encode($post); file_put_contents("alipaytext.txt",$data); } /** * 同步方法 * @return [type] [description] */ public function returnfy(){ //同步跳转地址 return $this->fetch(); } }
这里面重要的是需要在异步方法里判断trade_status字段,如果等于"TRADE_SUCCESS"即支付成功,后面必须echo返回一个"SUCCESS",否则支付宝会认为你没有付款成功,而在24小时内定时回调这个方法。实际业务逻辑根据你的需求来比如存入订单表等等,当然不会这么简单,最好加一些验证。为了安全。下面是前台代码示例:
{include file="public/header"} <!-- HEADER END --> <!-- CONTENT BEGIN --> <div> <div> <div> <div> <form> 商户订单号:<input><br> 订单名称:<input><br> 付款金额:<input><br> 商品描述:<input><br> <button>付 款</button> </form> </div> {include file="public/right"} <div></div> <div></div> </div> </div> </div> <!-- CONTENT END --> <!-- FOOTER BEGIN --> {include file="public/tail"}
最后补上一句:日志文件一定要开启写权限,否则无法自动写入。即在alipay文件夹下右键log.txt属性设置。出了问题可以在日志里查看。
走到这里,流程就基本介绍完了。欢迎各位大佬拍砖指导。做完支付,会感觉自己又上了一个台阶!
Das obige ist der detaillierte Inhalt vonEine beispielhafte Einführung von TP5 zur Implementierung der Alipay-Computer-Website-Zahlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!