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

PHPで支付宝即時到账機能の接続

まずは支付宝側で即時入金のインターフェースアカウントを申請してください。関連する書類を提出して申請を行います。即時入金のAPIドキュメントに基づいて接続を行います。APIドキュメントには、さまざまな言語バージョンのデモが提供されており、私はここでPHP版のデモをダウンロードし、関連する変更を行いました。デモ版のコードを再構成することもできますが、私のここでは、充電即時入金の流れを通すために、コードの再構築は行いません。

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 ="確認支払い">                    
  </div>                                                                                  
 </div>                                                                                  
 </form>

alipay.config.php設定ファイルを設定、以下のパラメータを主に設定

$alipay_config['partner'] 契約アカウントIDを設定
$alipay_config['key'] MDを設定5キー検証
$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:で指定必要//形式の完全なパス、#を含めないでください。63;id=123このようなカスタムパラメータは、外部ネットワークから正常にアクセスできる必要があります。            
$alipay_config['notify_url'] = "http://xx.xx.xx.xx/pay/"notify_url.php";                           
// ページ遷移同期通知ページパスはhttp:で指定必要//形式の完全なパス、#を含めないでください。63;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);                                    
//CA証明書のパスアドレス、curlのSSL検証に使用されます。                                             
//cacert.pemファイルが現在のフォルダー内にあることを確認してください。                                          
$alipay_config['cacert']  = getcwd().'\\cacert.pem';                                   
//アクセスモード、サーバーがSSLアクセスをサポートしているかどうかによって、httpsを選択してください。サポートしていない場合はhttpを選択してください。                      
$alipay_config['transport']  = 'http';                                          
// 支払いタイプ、変更しないでください。                                                   
$alipay_config['payment_type'] = "1";                                            
// 製品タイプ、変更しないでください。                                                    
$alipay_config['service'] = "create_direct_pay_by_user";

取引が処理されると、注文情報および取引状態が指定されたreturn_url.phpに送信されます。あなたはこの注文状態を通じて取引が成功したかどうかを判断できます。成功した場合、次のロジック(あなたの注文処理ロジック)に進みます。失敗した場合は、エラーに戻ります。

<?php
/* * 
 * 機能:アリペイページ遷移同期通知ページ
 * バージョン:3.3
 * 日付:2012-07-23 
 * 説明:
 * 以下のコードは、マーチャントがテストするために提供されたサンプルコードです。マーチャントは自分のウェブサイトの必要に応じて、技術文書に従ってコードを書く必要があります。これは必ずしもこのコードを使用する必要はありません。
 * このコードはアリペイインターフェースの学習と研究のために提供されています。これは単なる参考です。
 *************************ページ機能説明*************************
 * このページはローカルのコンピュータでテストできます。
 * HTMLなどでページを美しくするコード、マーチャントのビジネスロジックコードをここに含めることができます。
 * このページはPHP開発ツールでデバッグができます。また、logResult関数を使用してテキストを書き込むこともできます。この関数はデフォルトでオフになっています。alipay_notify_class.phpのverifyReturn関数を参照してください。
 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
 //通知検証結果を計算
 $alipayNotify = new AlipayNotify($alipay_config);
 $verify_result = $alipayNotify;->verifyReturn();
 if($verify_result) {//検証成功
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //ここにあなたのビジネスロジックプログラムコードを追加してください
     //——あなたのビジネスロジックに基づいてプログラムを書くことをお願いします(以下のコードは参考用のみ)——
   //アリペイの通知返信パラメータを取得し、技術文書のページ遷移同期通知パラメータリストを参照してください
     //店の注文番号^M
     $out_trade_no = $_GET['out_trade_no'];
     //アリペイ取引番号^M
     $trade_no = $_GET['trade_no'];
     //取引状態
     $trade_status = $_GET['trade_status'];
     $total_fee = $_GET['total_fee'];
     //ユーザーが返信データを取得
     $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>
         //その注文が事業者のウェブサイトで既に処理されているかどうかを判断してください。
         //まだ処理を行っていない場合は、注文番号(out_trade_no)を使用して、事業者のウェブサイトの注文システムでその注文の詳細を検索し、事業者のビジネスプログラムを実行してください。
         //既に処理を行った場合は、事業者のビジネスプログラムを実行しないでください。
   }
   else {
    echo "trade_status=".$_GET['trade_status'];
   }
 var_dump($verify_result);
     echo "認証成功<br />";
     //——ご自身のビジネスロジックに基づいてプログラムを書いてください(上記のコードは参考用です)——
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 }
 else {
   //認証失敗
   //デバッグを行う場合は、alipay_notify.phpページのverifyReturn関数を参照してください。
   echo "認証失敗";
 }
 ?>
     <title>アリペイ即時決済取引インターフェース</title>
     </head>
   <body>
   </body>
 </html>

以上は編集者が皆さんに紹介したPHPがアリペイの即時決済機能に接続する方法です。皆さんの助けになれば幸いです。何か疑問があれば、コメントを残してください。編集者は皆さんの質問に迅速に回答します。このサイトへのサポートに感謝しています!

声明:本文の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしました。本サイトは所有権を持ちません。人工編集は行われていません。また、関連する法的責任も負いません。著作権侵害の疑いがある場合は、メールを送信してください:notice#oldtoolbag.com(メール送信時、#を@に変更してください。報告を行い、関連する証拠を提供してください。一旦確認がついた場合、本サイトは即座に侵害される内容を削除します。)

おすすめ