So schreiben Sie einen Alipay-Rückruf in PHP
Stellen Sie zunächst sicher, dass die beim Bezahlen angegebene Rückrufadresse korrekt ist!!!
Stellen Sie sicher, dass sich die Rückrufadresse auf Sie bezieht Das schreibt die Rückrufüberprüfung nicht zurück und findet den Fehler später in der App2.0-Schnittstelle.)
Dies ist die Klasse, die Alipay gekapselt hat: PHP-Video-Tutorial
/** rsaCheckV1 & rsaCheckV2<br/>* 验证签名<br/>* 在使用本方法前,必须初始化AopClient且传入公钥参数。<br/>* 公钥是否是读取字符串还是读取文件,是根据初始化传入的值判断的。<br/>**/<br/>public function rsaCheckV1($params, $rsaPublicKeyFilePath,$signType='RSA') {<br/>$sign = $params['sign'];<br/>$params['sign_type'] = null;<br/>$params['sign'] = null;<br/>$this->alipayrsaPublicKey = $rsaPublicKeyFilePath;<br/><br/>return $this->verify($this->getSignContent($params), $sign, $rsaPublicKeyFilePath,$signType);<br/>}<br/>public function rsaCheckV2($params, $rsaPublicKeyFilePath, $signType='RSA') {<br/>$sign = $params['sign'];<br/>$params['sign'] = null;<br/>return $this->verify($this->getSignContent($params), $sign, $rsaPublicKeyFilePath, $signType);<br/>}<br/>function verify($data, $sign, $rsaPublicKeyFilePath, $signType = 'RSA') {<br/><br/>if($this->checkEmpty($this->alipayPublicKey)){<br/><br/>$pubKey= $this->alipayrsaPublicKey;<br/>$res = "-----BEGIN PUBLIC KEY-----\n" .<br/>wordwrap($pubKey, 64, "\n", true) .<br/>"\n-----END PUBLIC KEY-----";<br/>}else {<br/>//读取公钥文件<br/>$pubKey = file_get_contents($rsaPublicKeyFilePath);<br/>//转换为openssl格式密钥<br/>$res = openssl_get_publickey($pubKey);<br/>}<br/><br/>($res) or die('支付宝RSA公钥错误。请检查公钥文件格式是否正确'); <br/><br/>//调用openssl内置方法验签,返回bool值<br/>if ("RSA2" == $signType) {<br/>$result = (bool)openssl_verify($data, base64_decode($sign), $res, OPENSSL_ALGO_SHA256);<br/>} else {<br/>$result = (bool)openssl_verify($data, base64_decode($sign), $res);<br/>}<br/><br/>if(!$this->checkEmpty($this->alipayPublicKey)) {<br/>//释放资源<br/>openssl_free_key($res);<br/>}<br/><br/>return $result;<br/>}L<br/>SQLite<br/>SQLite3<br/>SQLSRV <br/>Sybase<br/>tokyo_tyrant<br/>
Hier sind drei Punkte zu beachten:
1—注意公钥的正确性,还有用的是支付宝公钥不是你当初生成的公钥<br/>2—区别这里的方法和支付宝接口本身方法的公钥获取方式<br/>3—注意接口方法本身的注释,很重要<br/>
Die Rückrufparameter von Alipay werden in der Form zurückgegeben Post, aber beim Testen können wir die Rückruf-URL direkt in die Adressleiste schreiben und sie dann mit der get-Methode akzeptieren, sodass die Parameter nicht buchstabiert werden müssen, das Ergebnis ist das gleiche (die Rückruf-URL kann sein). in der Protokolldatei aufgezeichnet)
, und bei der Überprüfung der Signatur müssen alle Rückgabeparameter intakt sein. Sie können es verschieben, um die Signatur zu überprüfen, und Sie können einfach alle Parameter akzeptieren, die Sie hier benötigen. Ich werde hier nicht auf Details eingehen Hier geht es nur darum, Parameter normal zu akzeptieren. Der Code, den ich verwende, um den Bestellbetrag und die Händlernummer bei der Überprüfung der Parameter zu überprüfen, ist unten angegeben und dient nur als Referenz (ich verwende tp5):public function check($receipt_amount,$buyer_pay_amount,$order_price,$app_id,$seller_email){<br/> if($receipt_amount !== $order_price || $buyer_pay_amount !== $order_price){<br/>// echo 1;<br/> return $this->log('订单支付金额有误!');<br/> }<br/> //支付宝支付的所有参数<br/> $alipay_config = Config::get('alipay_config');<br/> if($app_id !== $alipay_config['appid']){<br/>// echo 2;<br/> return $this->log('商家编号有误!');<br/> }<br/> <br/> //验证收款商家是否正确<br/> if($seller_email !== $alipay_config['seller_id']){<br/>// echo 3;<br/> return $this->log('收款商家有误!');<br/> }<br/> return 'success';<br/> }<br/>
Bestellung prüfen
Hier Die Hauptsache ist, den Lagerbestand zu überprüfen (obwohl Ihr Bestellvolumen möglicherweise nicht unbedingt an diesen Punkt zurückkehrt) (tp5):public function index($order_sn='')<br/> {<br/> if(isset($_POST['order_sn']) && empty($order_sn)){<br/> $order_sn = $_POST['order_sn'];<br/> }<br/> <br/> $table = self::order_info($order_sn);<br/> if($table == 'failure'){return 'false';}<br/> $oid = $table['order_id'];<br/> //通过订单id $oid 查询出订单中物品的id<br/> $goodsTable = Db::name('goods');<br/> $allgoods = Db::name("test1")->where('o_id', $oid)->field('g_id,g_num')->select();<br/> foreach ($allgoods as $k => $v) {<br/> //事务处理<br/> $goodsTable->startTrans();//事物开始<br/> try {<br/> //判断库存数量<br/> $goodsTable->query('update test2 set g_num = g_num-' . $v['g_num'] . ' where g_num >= ' . $v['g_num'] . ' and gid =' . $v['g_id']);<br/> <br/> } catch (\Exception $e) {<br/> $goodsTable->rollBack();//事物回滚<br/> }<br/> <br/> $goodsTable->commit();// 事物提交<br/> }<br/> <br/> //修改订单<br/> $res = Db::name('test3')->where('order_sn',$order_sn)->update(['order_state' => '1','pay_time'=>time()]);<br/> if($res != 0){<br/> return 'success';<br/> }<br/> }<br/>
Das obige ist der detaillierte Inhalt vonSo schreiben Sie einen Alipay-Rückruf 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



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.
