thinkphp5.0 integriert Alipay-Zahlung, thinkphp5.0 integriert WeChat-Zahlung, mobile App-Zahlung
thinkphp5.0 integriert Alipay-Mobile-Payment-Code-Funktionsimplementierung
Wenn die App mit Alipay-Zahlung verbunden ist, wenn das Mobiltelefon des Benutzers Wenn kein Alipay-Client installiert ist, wird die h5-Seite für mobiles Bezahlen von Alipay aufgerufen.
Wenn die Alipay-Zahlung installiert ist, wird der Alipay-Client zur Zahlung aktiviert und bietet Benutzern die beste Möglichkeit, Bargeld abzuheben.
Alipay-Dokumentadresse:
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7386797.0.0.Y4jDIe&treeId=59&articleId=103563&docType=1
Alle Daten werden auf der Serverseite zusammengeführt und schließlich wird ein verarbeiteter String an den Client zurückgegeben.
Die generierte Standardzeichenfolge wird bereitgestellt:
partner="2088101568358171"&seller_id="xxx@alipay.com"&out_trade_no="0819145412-6177"&subject="Test"&body="Test Test" &total_fee= "0.01"¬ify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"& payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&sign =" lBBK%2F0w5LOajrMrji7DUgEqNjIhQbidR13GovA5r3TgIbNqv231yC1NksLdw%2Ba3JnfHXoXuet6XNNHtn7VE%2BeCoRO1O%2BR1KugLrQEZMtG5jmJIe2pbjm%2F3kb%2FuGkpG%2 BwY QYI51%2BhA3YBbvZHVQBYveBqK%2Bh8mUyb7GM1HxWs9k4%3D"&sign_type="RSA"
Codeteil: //Alipay-Zahlung<br> function alipay_before(){<br> $mid = $this->is_login();<br> require_once EXTEND_PATH.'Alipay/alipaycore.php' <br> require_once EXTEND_PATH.'Alipay/alipayrsa.php';<br> $order_id = input("request.order_id");<br> if($order_id == 0){<br> ajaxmsg ('illegale Daten' 0 ); Anfrage<br> $out_trade_no = $order_info['order_sn'];<br> $total_fee = $order_info['total_price'] + $order_info['trans_price']; //Zahlungsbetrag<br> $body = ' Bestellen Sie die Zahlung '; // Produktdetails <br> $alipay_config = Config::get('alipay_config');<br> //Konstruieren Sie das anzufordernde Parameter-Array, es sind keine Änderungen erforderlich <br> $parameter = array(<br> 'partner' = & gt; $ alipay_config ['partner'], // Die Mitarbeiteridentitäts-ID <br> 'seller_id' = & gt; gt; $ OUT_TRADE_NO, // Händler-Website Die einzige Bestellnummer 'Betreff' = & gt; > 'toTal_fee' = & gt; I> 'notify_url' = & gt; // Schnittstellenname ' Payment_type ' =>$alipay_config['paid_type'],//Zahlungstyp<br> '_input_charset'=>$alipay_config['input_charset'],///Parameterkodierungszeichensatz<br> //Verketten Sie alle Elemente des per Post empfangenen Arrays mit dem Zeichen „&“ gemäß dem Muster „Parameter = Parameterwert“ zu einer Zeichenfolge. <br> $data = createLinkstring($parameter); log.txt im Protokollordner unter dem Projektverzeichnis. <br> logResult($data);<br><br> //Signieren Sie die zu signierende Zeichenfolge mit dem privaten Schlüssel und führen Sie urlencode aus. Hinweis: Sie müssen urlencode nur einmal ausführen, wenn Sie Alipay anfordern.<br> $rsa_sign = urlencode( rsaSign($data, $alipay_config['private_key']));<br><br> //Fügen Sie das signierte Zeichen und den Signaturtyp sign_type nach der zu signierenden Zeichenfolge zusammen. <br> $data = $data.'&sign='.'"'.$rsa_sign.'"'.'&sign_type='.'"'.$alipay_config['sign_type'].'"';<br><br> // Zurück zum Client Es wird empfohlen, dass der Client den öffentlichen Schlüssel verwendet, der dem privaten Schlüssel entspricht, um eine Signaturüberprüfung durchzuführen, um sicherzustellen, dass er nicht von anderen übertragen wurde. <br> //echo $data;<br> $list['form'] = $data; <br> //Alipay-Zahlungsbenachrichtigung<br> öffentliche Funktion alipay_notify_url()<br> {<br> $alipay_config = Config ::get('alipay_config');
//Ergebnis der Benachrichtigungsüberprüfung berechnen $alipayNotify = new Alipaynotify($alipay_config);<br> If($alipayNotify->getResponse($_POST['notify_id' ])) // Nach erfolgreicher Beurteilung mithilfe der getResponse-Methode feststellen, ob es sich um eine von Alipay gesendete asynchrone Benachrichtigung handelt. <br> {<f> if ($ alipaynotify-& gt; getSignveryFy ($ _ post, $ _post ['sign'])) {// Alipay-Schlüsselinspektion verwenden <br> <br> // – Bitte nach Ihren Wünschen Ihrer Meinung nach Die Geschäftslogik zum Schreiben des Programms (der folgende Code dient nur als Referenz) - <br> // Erhalten Sie die Benachrichtigung von Alipay und geben Sie die Parameter zurück = $_POST['out_trade_no'];<br><br> //Alipay-Transaktionsnummer Status <br> $trade_status = $ _Post ['trade_status']; <br> <br> if ($ _ post ['trade_status'] == 'trade_finished') {<br> // bestimmen, ob Die Bestellung wurde auf der Händler-Website bearbeitet <br> // Wenn Sie dies noch nicht getan haben, können Sie die Bestellung im Bestellsystem der Händler-Website anhand der Bestellnummer (out_trade_no) finden und das Geschäft abschließen Programm des Händlers <br> // Geschäftsabläufe<br> // Hinweis:// Nachdem das Rückerstattungsdatum den Rückerstattungszeitraum überschreitet (z. B. eine erstattungsfähige Rückerstattung), sendet das Alipay-System die Transaktionsstatusbenachrichtigung <br> // Bitte ermitteln Sie die Gesamtgebühr, die Verkäufer-ID und die Benachrichtigungen, wenn die Anfrage die Anfrage anfordert. } <br> else if ($ _post ['trade_status'] == 'trade_success') {<br> $ order_info = db :: name ("order")-& gt; where ("order_sn = '{$out_trade_no }'")->find();<br> If($order_info['status'] == 0){<br><br> Db ::name("order")->where("id ={$order_info['id']}")->save(<br> t;2,<br> "pay_sn"=>$trade_no,<br> 'pay_time'=>time(),<br> 'stauts'=>1<br> ));<br> $this->fen xiao_account($ out_trade_no);<br> //Bitte nicht ändern oder löschen <br>} <br> Sonst // Überprüfen Sie den Signaturfehler <br> {<br> Echo „SIGN FAIL“; <br>} <br> Sonst // Überprüfen Sie, ob die Benachrichtigung von Alipay fehlschlägt {<br> Echo „Response Fail“; Erklären Sie, dass das Protokoll, die Kontonummer und die Schlüsselmethode alle konsistent sind. <br>Der zweite Schritt besteht darin, die Benachrichtigung von Alipay nach erfolgreicher Zahlung zu akzeptieren und die Datenbank auf Ihrem Server detailliert anzuzeigen. <br>Verhindern Sie wiederholte Aktualisierungen von Bestellungen und Benutzergeldkonten. <br><br>Ich habe den Code einfach direkt in das Extend-Verzeichnis eingefügt und direkt im Controller aufgerufen. <br>Stellen Sie sicher, dass Sie die Konfigurationsdatei korrekt schreiben, insbesondere wie Sie den öffentlichen Schlüssel und den privaten Schlüssel generieren, und sie in das Alipay-Plattformcenter hochladen. <br><br>Technische Austauschgruppe: <strong>495654168</strong><br></f>
Alipay.zip ( 140,02 KB Download: 24 Mal)