Das Folgende ist ein Beispiel für die Integration der Alipay APP-Zahlung auf dem PHP-Server. Es hat einen guten Referenzwert und ich hoffe, es wird für alle hilfreich sein. Werfen wir gemeinsam einen Blick darauf
Die Alipay-Zahlung ist in viele Szenarien unterteilt. Hier beschreiben wir nur die Integration der Alipay-APP-Zahlungsfunktion. Während des Prozesses sind wir auf besonders große Fallstricke gestoßen, daher werde ich den Integrationsprozess kurz beschreiben Beschreiben Sie die aufgetretenen Probleme und Lösungen
Da das Geschäft des Unternehmens einfach ist und nur Alipay-Zahlungen unterstützt, müssen Sie sich nicht um zusätzliche Funktionen wie Rückerstattungen, Anfragen usw. kümmern. Daher wird in diesem Artikel nur beschrieben, wie die Der Server bereitet die APP zum Abrufen von Zahlungsaufträgen vor, wenn die Alipay-Zahlungsschnittstelle verwendet wird. Der allgemeine Vorgang ist wie folgt:
1. Erstellen Sie eine Anwendung und Konfiguration
Zuerst müssen Sie zur Ant Financial-Entwicklungsplattform (open.alipay.com) gehen, um die Anwendung zu registrieren, die Anwendungs-ID zu erhalten und die Anwendung zu konfigurieren. Die Konfiguration umfasst hier hauptsächlich die Unterzeichnung eines Vertrags und die Generierung der RSA2-Öffentlichkeit der Anwendung Private Schlüssel und Erhalt des von Alipay bereitgestellten öffentlichen Zahlungsschlüssels. Im Hintergrund dieses Teils der offiziellen Website ist es relativ einfach, das entsprechende SDK herunterzuladen
Hier integriere ich den Dienst in den PHP-Hintergrund, also habe ich das PHP SDK heruntergeladen, Adresse: https://docs.open.alipay.com/54/103419/
3. Bereiten Sie einen zugänglichen echten Domainnamen vor
4 >Nachdem die oben genannten drei Schritte abgeschlossen sind, können wir jetzt unseren eigenen Geschäftscode konfigurieren
4.1 APP-Zahlung organisieren Zahlungsauftragsinformationen zu diesem Zeitpunkt
rrree4.2. Asynchrone Rückrufverarbeitung nach erfolgreicher Alipay-Zahlung
<?php require_once (__DIR__.'/alipay-sdk-PHP-20171023143822/AopSdk.php'); class Alipay { /** * 应用ID */ const APPID = '你的应用ID'; /** *请填写开发者私钥去头去尾去回车,一行字符串 */ const RSA_PRIVATE_KEY = '应用对应开发者私钥'; /** *请填写支付宝公钥,一行字符串 */ const ALIPAY_RSA_PUBLIC_KEY = '支付宝提供的公钥'; /** * 支付宝服务器主动通知商户服务器里指定的页面 * @var string */ private $callback = "http://www.test.com/notify/alipay_notify.php"; /** *生成APP支付订单信息 * @param string $orderId 商品订单ID * @param string $subject 支付商品的标题 * @param string $body 支付商品描述 * @param float $pre_price 商品总支付金额 * @param int $expire 支付交易时间 * @return bool|string 返回支付宝签名后订单信息,否则返回false */ public function unifiedorder($orderId, $subject,$body,$pre_price,$expire){ try{ $aop = new \AopClient(); $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do"; $aop->appId = self::APPID; $aop->rsaPrivateKey = self::RSA_PRIVATE_KEY; $aop->format = "json"; $aop->charset = "UTF-8"; $aop->signType = "RSA2"; $aop->alipayrsaPublicKey = self::ALIPAY_RSA_PUBLIC_KEY; //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay $request = new \AlipayTradeAppPayRequest(); //SDK已经封装掉了公共参数,这里只需要传入业务参数 $bizcontent = "{\"body\":\"{$body}\"," //支付商品描述 . "\"subject\":\"{$subject}\"," //支付商品的标题 . "\"out_trade_no\":\"{$orderId}\"," //商户网站唯一订单号 . "\"timeout_express\":\"{$expire}m\"," //该笔订单允许的最晚付款时间,逾期将关闭交易 . "\"total_amount\":\"{$pre_price}\"," //订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] . "\"product_code\":\"QUICK_MSECURITY_PAY\"" . "}"; $request->setNotifyUrl($this->callback); $request->setBizContent($bizcontent); //这里和普通的接口调用不同,使用的是sdkExecute $response = $aop->sdkExecute($request); //htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题 return htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。 }catch (\Exception $e){ return false; } } }
5 .Aufgetretene Probleme
5.1. Melden Sie weiterhin den Fehler 40001=>isv.invalid-signaturUm den Grund herauszufinden, habe ich hat die öffentlichen und privaten RSA2-Schlüssel der Anwendung mehrmals neu generiert, aber festgestellt, dass es nicht funktioniert hat. In Kombination mit Online-Informationen stellte sich heraus, dass es sich bei um die Alipay-Rückrufadresse notifyUrl handelte, die kein „?“ enthalten und keine Parameter nach ? hinzufügen darf 🎜>5.2. Asynchrone Alipay-Benachrichtigung Es war erfolgreich, aber $_POST war leer.
Als ich damit anfing, folgte ich dem Vorschlag von Alipay, eine HTTS-Anfrage zu verwenden. Auf diese Weise meldet der Anwendungshintergrund jedoch immer wieder, dass kein Parameterinhalt vorhanden ist. Schließlich fiel mir ein, dass die Parameter des Alipay-Serverrückrufs leer sind, da unsere Anwendung die bidirektionale HTTP-Authentifizierung verwendet. Ändern Sie abschließend die Rückrufadresse in HTTP und überprüfen Sie, ob sie erfolgreich ist.
Wenn Sie auf Probleme stoßen, überprüfen Sie zunächst die Dokumentbeschreibung von Alipay und die von Alipay bereitgestellte Fehlercodeerklärung. Wenn es nicht funktioniert, verwenden Sie einfach Baidu oder Google , und Sie fahren fort: Nach dem Testen und Überprüfen wird das Problem am Ende definitiv gelöstZu diesem Zeitpunkt ist die Zahlungsfunktion der Alipay-App abgeschlossen, andere Rückerstattungs-, Kontoauszugs- und andere Funktionen der APP jedoch nicht Laut den Dokumenten der offiziellen Website von Alipay und dem von Alipay bereitgestellten SDK ist es jedoch nur eine Frage der Zeit, bis es in Ihre eigene Anwendung integriert wird. Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:PDO-Vorverarbeitungsanweisung PDOStatement-Objekt
PHP voll funktionsfähige Nicht-Deformations-Bildzuschneideoperationsklasse und Einführung in die NutzungDas obige ist der detaillierte Inhalt vonSo integrieren Sie die Alipay APP-Zahlung in den PHP-Server. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!