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

Integração do PHP com a função de pagamento imediato do Alipay

Primeiro, por favor, solicite uma conta de interface de pagamento à tempo real no Alipay, é necessário apresentar documentos relevantes para a solicitação. Em seguida, faça a integração conforme o documento do API de pagamento à tempo real. O documento do API oferece demos em várias versões de idioma, aqui estou usando a demo em php, e então faço as operações de modificação relevantes. Você também pode integrar novamente o código da versão demo, aqui estou temporariamente não reestruturando o código para que o processo de recarga à tempo real funcione.

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

前台表单提交

<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;">订单序号:</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;">商品名称:</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;">付款金额:</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;">商品描述:</label>    
      <input class="uk-form-width-large" type="text" name="WIDbody" value="订单测试支付">                                       
      <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 ="Confirmar pagamento">                    
  </div>                                                                                  
 </div>                                                                                  
 </form>

Configura o arquivo de configuração alipay.config.php, configura principalmente os seguintes parâmetros

$alipay_config['partner'] configura o ID da conta de assinatura
$alipay_config['key'] configura MD5Verificação de key
$alipay_config['notify_url'] configura o endereço de callback assíncrono
$alipay_config['return_url'] configura o endereço de retorno de chamada
$alipay_config['transport'] configura o tipo de protocolo, o padrão é http

$alipay_config['partner']        = 'xxxxxxxxxxxx';                                  
//Conta do支付宝 recebimento, com2088Começa com16String composta por dígitos, geralmente a conta de recebimento é a conta de assinatura                    
$alipay_config['seller_id']   = $alipay_config['partner'];                                
// MD5Chave secreta, código de verificação de segurança, composto por dígitos e letras32String de dígitos, consulte o endereço: https://b.alipay.com/order/pidAndKey.htm          
$alipay_config['key']          = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';                        
// Página de notificação assíncrona do servidor, precisa ser http://caminho completo do formato, não pode adicionar?id=123Este tipo de parâmetros personalizados, deve ser acessível via internet            
$alipay_config['notify_url'] = "http://xx.xx.xx.xx/pay/notify_url.php";                           
// Notificação de página de rolagem sincronizada, a página de rolagem precisa ser http://caminho completo do formato, não pode adicionar?id=123Este tipo de parâmetros personalizados, deve ser acessível via internet           
$alipay_config['return_url'] = "http://xx.xx.xx.xx/pay/return_url.php";                           
//Método de assinatura                                                         
$alipay_config['sign_type']  = strtoupper('MD5);                                     
//Formato de codificação de caracteres, atualmente suportado gbk ou utf-8                                            
$alipay_config['input_charset']= strtolower('utf-8);                                    
//Endereço do caminho do certificado ca, usado para a verificação ssl no curl                                             
//Certifique-se de que o arquivo cacert.pem esteja no diretório atual                                          
$alipay_config['cacert']  = getcwd().'\\cacert.pem';                                   
//Modo de acesso, dependendo de se o seu servidor suporta acesso ssl, se suportar, selecione https; se não suportar, selecione http                      
$alipay_config['transport']  = 'http';                                          
// Tipo de pagamento, não precisa ser modificado                                                   
$alipay_config['payment_type'] = "1";                                            
// Tipo de produto, não precisa ser modificado                                                    
$alipay_config['service'] = "create_direct_pay_by_user";

Após a conclusão do processamento do pagamento, as informações do pedido e o estado da transação serão enviadas para o return_url.php especificado, você pode usar o estado do pedido retornado para julgar se a transação foi bem-sucedida. Se bem-sucedida, vá para o próximo lógica (sua lógica de processamento de pedido), caso contrário, retorne como falhou.

<?php
/* * 
 * Função: Página de notificação de saltto sincronizado da página do Alipay
 * Versão:3.3
 * Data:2012-07-23 
 * Nota:
 * O seguinte código é fornecido apenas como exemplo para facilitar o teste do comerciante e pode ser ajustado conforme necessário para o site do comerciante, não é necessário usar este código.
 * Este código é fornecido apenas para fins de aprendizado e pesquisa das interfaces do Alipay e fornece uma referência. Apenas para referência.
 *************************Descrição das funções da página*************************
 * Esta página pode ser testada no computador local
 * Código para melhorar a aparência da página HTML e código de lógica de negócios do comerciante
 * Esta página pode ser debugada com ferramentas de desenvolvimento PHP ou usando a função de escrita de texto logResult, que está desativada por padrão, veja a função verifyReturn no arquivo 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
 //Calcular o resultado de verificação da notificação
 $alipayNotify = new AlipayNotify($alipay_config);
 $verify_result = $alipayNotify->verifyReturn();
 if($verify_result) {//Verificação bem-sucedida
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //Adicione o código do lógica de negócios do comerciante aqui
     //——Por favor, escreva o código do lógica de negócios do seu negócio com base em sua lógica de negócios——
   //Obter os parâmetros de retorno da notificação do Alipay, consulte a lista de parâmetros de notificação de redirecionamento sincronizado na documentação técnica
     //Número do pedido do comerciante^M
     $out_trade_no = $_GET['out_trade_no'];
     //Número da transação do Alipay^M
     $trade_no = $_GET['trade_no'];
     //Status da transação
     $trade_status = $_GET['trade_status'];
     $total_fee = $_GET['total_fee'];
     //Obter dados de retorno do usuário
     $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}&"63;uid={$uid}&code={$code}&tags={$tags}&payAmount={$total_fee}&order={$out_trade_no}&types={$types}';</script>");
         //Verifique se o pedido já foi processado no site do comerciante
         //Se você não realizou o processo, localize o detalhe do pedido (out_trade_no) no sistema de pedidos do site do comerciante e execute o programa de negócios do comerciante
         //Se você já realizou o processo, não execute o programa de negócios do comerciante
   }
   else {
    echo "trade_status=".$_GET['trade_status'];
   }
 var_dump($verify_result);
     echo "Verificação bem-sucedida<br />";
     //——Por favor, escreva o programa com base em sua lógica de negócios (o código acima é apenas um exemplo)——
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 }
 else {
   //Falha na verificação
   //Para depuração, consulte a função verifyReturn na página alipay_notify.php
   echo "Falha na verificação";
 }
 ?>
     <title>Interface de transação de pagamento instantâneo do Alipay</title>
     </head>
   <body>
   </body>
 </html>

O que foi mencionado acima é o que o editor apresentou sobre a integração do PHP com a função de pagamento instantâneo do Alipay, esperando ajudar a todos. Se você tiver qualquer dúvida, deixe um comentário e o editor responderá o mais rápido possível. Agradecemos também o apoio do site tutorial de clamor!

Declaração: o conteúdo deste artigo é de origem na internet, pertence ao respectivo proprietário, fornecido pelos usuários da internet, o site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade legal. Se você encontrar conteúdo suspeito de infringir direitos autorais, envie um e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar, e forneça provas relacionadas. Em caso de verificação, o site deletará imediatamente o conteúdo suspeito de infringir direitos autorais.)

Você também pode gostar