Heim  >  Artikel  >  Backend-Entwicklung  >  Der PHP-Server integriert die Alipay-APP-Zahlung

Der PHP-Server integriert die Alipay-APP-Zahlung

不言
不言Original
2018-06-07 14:54:201955Durchsuche

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.

Die Alipay-Zahlung ist in viele Szenarien unterteilt. Hier beschreibe ich nur die Integration der Alipay-APP-Zahlungsfunktion. Während des Prozesses bin ich auf eine besonders große Falle gestoßen, daher werde ich den Integrationsprozess kurz beschreiben und die Probleme skizzieren Angetroffene 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 der Server die APP darauf vorbereitet Abrufen von Zahlungsauftragsinformationen bei Verwendung der Alipay-Zahlungsschnittstelle und des allgemeinen Prozesses wie folgt

1. Erstellen Sie eine Anwendung und Konfiguration

Zuerst Sie Sie müssen die Anwendung auf der Ant Financial-Entwicklungsplattform (open.alipay.com) registrieren, die Anwendungs-ID abrufen und die Anwendung konfigurieren. Die Konfiguration umfasst hier hauptsächlich die Unterzeichnung eines Vertrags und die Generierung der öffentlichen und privaten RSA2-Schlüssel der Anwendung. und Erhalten des von Alipay bereitgestellten öffentlichen Zahlungsschlüssels. Im Hintergrund dieses Teils der offiziellen Website ist es relativ einfach

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 Nach Abschluss der drei Schritte können wir nun unseren eigenen Geschäftscode konfigurieren

4.1. Zahlungsauftragsinformationen bei der Organisation der APP-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;
 }

 }
}

4.2 erfolgreiche Zahlung mit Alipay meldet sich ständig Hat keine Auswirkung. 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öst Zu 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. Vielen Dank an alle für das Lesen. Bitte beachten Sie die PHP-Chinese-Website für weitere Inhalte!

Verwandte Empfehlungen:

ThinkPHP-Transaktionsdetails-Abfragefunktion

Das obige ist der detaillierte Inhalt vonDer PHP-Server integriert die Alipay-APP-Zahlung. 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