Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung der Zahlungsschritte zur Integration der Alipay APP in den PHP-Server

Ausführliche Erläuterung der Zahlungsschritte zur Integration der Alipay APP in den PHP-Server

php中世界最好的语言
php中世界最好的语言Original
2018-05-17 15:04:292574Durchsuche

Dieses Mal erkläre ich Ihnen die Zahlungsschritte bei der Integration von Alipay APP in den PHP-Server. Welche Vorsichtsmaßnahmen gibt es für die Integration des PHP-Servers in die Alipay APP-Zahlung? Werfen wir einen Blick darauf.

Da das Geschäft des Unternehmens einfach ist und nur Alipay-Zahlungen unterstützt, müssen Sie sich keine Gedanken über Rückerstattungen, Anfragen und andere zusätzliche Funktionen machen. Daher wird in diesem Artikel nur beschrieben, wie der Server die APP zum Abrufen von Zahlungsauftragsinformationen vorbereitet Bei Verwendung der Alipay-Zahlungsschnittstelle ist der allgemeine Vorgang wie folgt: 1. Erstellen Sie eine Anwendung und Konfiguration.

Zuerst müssen Sie sich registrieren Die Ant Financial-Entwicklungsplattform (open.alipay.com) Bewerben Sie sich, erhalten Sie die Anwendungs-ID und konfigurieren Sie die Anwendung. Die Konfiguration umfasst hier hauptsächlich das Unterzeichnen eines Vertrags, das Generieren der öffentlichen und privaten RSA2-Schlüssel der Anwendung und das Erhalten des öffentlichen Zahlungsschlüssels bereitgestellt von Alipay. Im Hintergrund dieses Teils der offiziellen Website gibt es Hinweise, die relativ einfach sind

2. Laden Sie das entsprechende SDK herunter

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. Nach dem oben Gesagten Nachdem drei Schritte abgeschlossen sind, können wir unseren eigenen Geschäftscode konfigurieren erfolgreiche Alipay-Zahlung

<?php
require_once (DIR.&#39;/alipay-sdk-PHP-20171023143822/AopSdk.php&#39;);
class Alipay
{
 /**
 * 应用ID
 */
 const APPID = &#39;你的应用ID&#39;;
 /**
 *请填写开发者私钥去头去尾去回车,一行字符串
 */
 const RSA_PRIVATE_KEY = &#39;应用对应开发者私钥&#39;;
 /**
 *请填写支付宝公钥,一行字符串
 */
 const ALIPAY_RSA_PUBLIC_KEY = &#39;支付宝提供的公钥&#39;;
 /**
 * 支付宝服务器主动通知商户服务器里指定的页面
 * @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. Das Problem

5.1, meldet weiterhin Fehler 40001=>isv. invalid-signatur

Um den Grund herauszufinden, habe ich die Anwendung mehrmals neu generiert. Es wurde festgestellt, dass die öffentlichen und privaten RSA2-Schlüssel keine Wirkung haben. 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 Benachrichtigung von Alipay 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öst Zu diesem Zeitpunkt ist die Zahlungsfunktion der Alipay APP abgeschlossen und andere APP-Rückerstattungs-, Kontoauszugs- und andere Funktionen werden abgeschlossen Laut den offiziellen Website-Dokumenten von Alipay und dem von Alipay bereitgestellten SDK ist es jedoch nur eine Frage der Zeit, bis es in Ihre eigene Anwendung integriert wird.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte zum Verbinden der Datenbank mit dem ThinkPHP-Framework PDO

Laravel5 implementiert Fuzzy-Matching und Abfragefunktion mit mehreren Bedingungen. Detaillierte Erläuterung der Schritte

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Zahlungsschritte zur Integration der Alipay APP in den PHP-Server. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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