English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Integrazione della funzione di pagamento istantaneo di Alipay in PHP

Prima di tutto, vai su Alipay e richiedi un account di pagamento immediato, è necessario presentare i relativi documenti per la richiesta. Poi, secondo la documentazione API di pagamento immediato, procedi con l'integrazione. La documentazione API fornisce demo in varie versioni di linguaggio, qui ho scaricato la demo in PHP, quindi effettuato le relative modifiche. Puoi anche riunire il codice della versione demo, ma qui per facilitare il processo di pagamento immediato, non sto facendo una ricostruzione del codice.

Documentazione API:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7386797.0.0.eZb8FX&treeId=108&articleId=103950&docType=1

Sottomissione del modulo di anteprima

<form action="/pay/alipayapi.php" class="tm-panel-small uk-form uk-form-stacked" method="post" target="_blank">                             
  <div class="element" style="margin-top:60px;">                                                              
  </div>                                                                                  
  <div class="uk-form-row">                                                                        
  <div class="uk-form-controls">                                                                      
      <label for="form-username" class="uk-form-label" style="display:inline-block;padding: 0 10px;vertical-align: middle;margin-left:-20px;">Numero dell'ordine:</label>    
      <input class="uk-form-width-large" type="text" name="WIDout_trade_no" id="out_trade_no" value="<?php echo trim($_GET['orderid']);?>" >             
      <br>                                                                               
  </div>                                                                                  
  </div>                                                                                  
  <div class="uk-form-row">                                                                        
  <div class="uk-form-controls">                                                                      
      <label for="form-username" class="uk-form-label" style="display:inline-block;padding: 0 10px;vertical-align: middle;margin-left:-20px;">Nome del prodotto:</label>    
      <input class="uk-form-width-large" type="text" name="WIDsubject" value="<?php echo trim($_GET['orderid']);?>" >                         
      <br>                                                                               
  </div>                                                                                  
  </div>                                                                                  
  <div class="uk-form-row">                                                                        
  <div class="uk-form-controls">                                                                      
      <label for="form-username" class="uk-form-label" style="display:inline-block;padding: 0 10px;vertical-align: middle;margin-left:-20px;">Importo del Pagamento:</label>    
      <input class="uk-form-width-large" type="text" name="WIDtotal_fee" value="<?php echo trim($_GET['amt']);?>">                           
      <br>                                                                               
  </div>                                                                                  
  </div>                                                                                  
  <div class="uk-form-row">                                                                        
  <div class="uk-form-controls">                                                                      
      <label for="form-username" class="uk-form-label" style="display:inline-block;padding: 0 10px;vertical-align: middle;margin-left:-20px;">Descrizione del Prodotto:</label>    
      <input class="uk-form-width-large" type="text" name="WIDbody" value="Pagamento di Test dell'Ordine">                                       
      <br>                                                                               
  </div>                                                                                  
  </div>                                                                                  
 <input type="hidden" name="uid" value="<?php echo $_GET['uid'];?>">                                                    
 <input type="hidden" name="codes" value="<?php echo $_GET['code'];?>">                                                  
 <input type="hidden" name="tags" value="<?php echo $_GET['tag'] ?>">                                                   
  <div class="uk-form-row">                                                                        
   <input class="uk-button uk-button-primary uk-button-large uk-width-1-1" type="submit" class="alisubmit" value ="Conferma Pagamento">                    
  </div>                                                                                  
 </div>                                                                                  
 </form>

设置alipay.config.php配置文件,主要配置以下几个参数

$alipay_config['partner'] 设置签约账号ID
$alipay_config['key'] 设置MD5校验key
$alipay_config['notify_url'] 设置异步回调地址
$alipay_config['return_url'] 设置回调返回地址
$alipay_config['transport'] 设置协议类型,默认为http

$alipay_config['partner'] = 'xxxxxxxxxxxx';                                  
//收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号                    
$alipay_config['seller_id'] = $alipay_config['partner'];                                
//MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm          
$alipay_config['key'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';                        
//服务器异步通知页面路径,需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问            
$alipay_config['notify_url'] = "http://xx.xx.xx.xx/pay/notify_url.php";                           
//页面跳转同步通知页面路径,需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问           
$alipay_config['return_url'] = "http://xx.xx.xx.xx/pay/return_url.php";                           
//签名方式                                                         
$alipay_config['sign_type'] = strtoupper('MD5');                                     
//字符编码格式,目前支持gbk或utf-8                                            
$alipay_config['input_charset'] = strtolower('utf-8');                                    
// Indirizzo del percorso del certificato CA, utilizzato per la verifica SSL in curl                                             
// Assicurarsi che il file cacert.pem sia nella directory corrente                                          
$alipay_config['cacert']  = getcwd().'\\cacert.pem';                                   
// Modalità di accesso, basata sul supporto del server per l'accesso SSL, se supportato, selezionare https; se non supportato, selezionare http                      
$alipay_config['transport']  = 'http';                                          
// Tipo di pagamento, non modificare                                                   
$alipay_config['payment_type'] = "1";                                            
// Tipo di prodotto, non modificare                                                    
$alipay_config['service'] = "create_direct_pay_by_user";

Dopo la conclusione del processo di transazione, verranno inviate le informazioni dell'ordine e lo stato della transazione al file return_url.php specificato, puoi determinare se la transazione è stata eseguita con successo attraverso lo stato dell'ordine fornito, se è stato eseguito con successo, procedi al passo successivo logico (la tua logica di elaborazione dell'ordine), altrimenti torna fallito.

<?php}}
/* * 
 * Funzione: Pagina di notifica sincrona di salto pagina Alipay
 * Versione: 3.3
 * Data: 2012-07-23 
 * Spiegazione:
 * Il codice seguente è fornito solo come esempio per facilitare il test del commerciante e può essere modificato in base alle esigenze del sito web del commerciante, non è necessario utilizzare questo codice necessariamente.
 * Questo codice è solo per scopi di studio e ricerca delle interfacce Alipay e fornisce solo un riferimento.
 ************************* Descrizione delle funzionalità della pagina *************************
 * Questa pagina può essere testata sul computer locale
 * È possibile inserire codice HTML e altri codici per migliorare l'aspetto della pagina e il programma logico delle operazioni del commerciante
 * Questa pagina può essere debuggata con strumenti di sviluppo PHP o con la funzione logResult, che è disattivata per default, vedere la funzione verifyReturn in alipay_notify_class.php
 require_once("alipay.config.php");
 require_once("lib/alipay_notify.class.php");
 ?>
 <!DOCTYPE HTML>
 <html>
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <?php}}
 //Calcola il risultato della verifica della notifica
 $alipayNotify = new AlipayNotify($alipay_config);
 $verify_result = $alipayNotify->verifyReturn();
 if($verify_result) { //Verifica riuscita
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //Aggiungere qui il codice del programma di logica del commerciante
     //——Scrivere il programma in base alla vostra logica di business(il seguente codice è solo un esempio)——
   //Ottieni i parametri di ritorno delle notifiche di Alipay, consultare la lista dei parametri delle notifiche di transizione sincrona nella documentazione tecnica
     //Numero dell'ordine del commerciante^M
     $out_trade_no = $_GET['out_trade_no'];
     //Numero della transazione Alipay^M
     $trade_no = $_GET['trade_no'];
     //Stato della transazione
     $trade_status = $_GET['trade_status'];
     $total_fee = $_GET['total_fee'];
     //Ottieni i dati di ritorno dell'utente
     $user_info = $_GET['extra_common_param'];
     $user_arr = explode('.',$user_info);
     $uid = $user_arr[0];
     $code = $user_arr[1];
     $tags = $user_arr[2];
   if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
         $types = "alipay";
         $user_url = "/user_obj/do_orderinfo.php";
         die("<script>;window.location='{$user_url}?uid={$uid}&code={$code}&tags={$tags}&payAmount={$total_fee}&order={$out_trade_no}&types={$types}';</script>");
         //Determinare se questo ordine è stato trattato nel sito web del commerciante
         //Se non è stato effettuato alcun trattamento, cercare dettagli dell'ordine (out_trade_no) nel sistema degli ordini del sito web del commerciante e eseguire il programma di business del commerciante
         //Se è stato effettuato un processo, non eseguire il programma aziendale
   }
   else {
    echo "trade_status=".$_GET['trade_status'];
   }
 var_dump($verify_result);
     echo "Verifica riuscita<br />";
     //——Scrivere il programma in base alla vostra logica aziendale (il codice sopra è solo un esempio)
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 }
 else {
   //Verifica fallita
   //Per il debug, vedere la funzione verifyReturn nella pagina alipay_notify.php
   echo "Verifica fallita";
 }
 ?>
     <title>Interfaccia di transazione支付宝即时到账</title>
     </head>
   <body>
   </body>
 </html>

Come ha spiegato l'editor, questo articolo introduce la funzione di connessione di PHP con支付宝即时到账功能,spero che sia utile per tutti. Se avete domande, lasciate un messaggio, l'editor risponderà tempestivamente. In questo senso, ringrazio anche tutti i sostenitori del sito tutorial di urla!

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright spetta agli autori, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene i diritti di proprietà, non è stato editato manualmente e non assume alcuna responsabilità legale correlata. Se trovi contenuti sospetti di copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, questo sito eliminerà immediatamente il contenuto sospetto di violazione del copyright.

Ti potrebbe interessare