佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > PHP接入支付寶接口失效流程詳解

PHP接入支付寶接口失效流程詳解

熱門標(biāo)簽:科大訊飛語(yǔ)音識(shí)別系統(tǒng) 服務(wù)器配置 Linux服務(wù)器 阿里云 銀行業(yè)務(wù) 團(tuán)購(gòu)網(wǎng)站 Mysql連接數(shù)設(shè)置 電子圍欄

最近在寫個(gè)需要簡(jiǎn)單支付的小項(xiàng)目,用到了支付寶接口,現(xiàn)已完成。把php接入支付寶的流程寫在這里供像我一樣的小白參考。

1.首先要有一個(gè)創(chuàng)建一個(gè)應(yīng)用(選好自己想要的功能,關(guān)于支付的功能,貌似都需要簽約)


2.下載SDKDome網(wǎng)址

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.CBtzBFtreeId=203articleId=105910docType=1

 

我選擇的是MD5簽名方式,下面紅框內(nèi)就是做好的php Demo


  • lib文件很重要,是整個(gè)接口的核心類文件;
  • alipay.config.php是相關(guān)參數(shù)的配置文件
  • alipayapi.php 是支付寶接口入口文件
  • notify_url.php 是服務(wù)器異步通知頁(yè)面文件;
  • return_url.php 是頁(yè)面跳轉(zhuǎn)同步通知文件;

3.打開(kāi)alipay.config.php


4.配置完成后這個(gè)小例子就能直接訪問(wèn)了

 
 
通過(guò)這個(gè)例子,我們就能靈活運(yùn)用了 開(kāi)發(fā)文檔: 

https://doc.open.alipay.com/docs/doc.htm?treeId=203articleId=105288docType=1

嵌入thinkphp3.2.3 我保留了


重新命名為 


分別給這五個(gè)文件加上命名空間

這四個(gè)文件的命名空間改為


Alipay.class.php 有改動(dòng)

?php
namespace Extend\Alipay;
class Alipay {
  public function pay($alipay_config,$args){
    /**************************請(qǐng)求參數(shù)**************************/
    //支付類型
  $payment_type = "1";
  //必填,不能修改
  //服務(wù)器異步通知頁(yè)面路徑
  $notify_url = $args['notify_url'];
  //需http://格式的完整路徑,不能加?id=123這類自定義參數(shù)
  //頁(yè)面跳轉(zhuǎn)同步通知頁(yè)面路徑
  $return_url = $args['return_url'];
  //需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),不能寫成http://localhost/
    //商戶訂單號(hào)
  $out_trade_no = $args['out_trade_no'];
  //商戶網(wǎng)站訂單系統(tǒng)中唯一訂單號(hào),必填
  //訂單名稱
  $subject = "測(cè)試";
  //必填
  //付款金額
  $total_fee = $args['total'];
  //必填
  //訂單描述
  $body = "test";
  //需以http://開(kāi)頭的完整路徑,例如:http://www.商戶網(wǎng)址.com/myorder.html
  //防釣魚(yú)時(shí)間戳
  $anti_phishing_key = "";
  //若要使用請(qǐng)調(diào)用類文件submit中的query_timestamp函數(shù)
  //客戶端的IP地址
  $exter_invoke_ip = "";
  //非局域網(wǎng)的外網(wǎng)IP地址,如:221.0.0.1
  /************************************************************/
  //構(gòu)造要請(qǐng)求的參數(shù)數(shù)組,無(wú)需改動(dòng)
  $parameter = array(
    "service" => "create_direct_pay_by_user",
    "partner" => trim($alipay_config['partner']),
    "seller_id" => trim($alipay_config['seller_id']),
    "payment_type" => $payment_type,
    "notify_url"  => $notify_url,
    "return_url"  => $return_url,
    "out_trade_no" => $out_trade_no,
    "subject"    => $subject,
    "total_fee"   => $total_fee,
    "body" => $body,
    "show_url"   => $show_url,
    "anti_phishing_key"   => $anti_phishing_key,
    "exter_invoke_ip"    => $exter_invoke_ip,
    "_input_charset"    => trim(strtolower($alipay_config['input_charset']))
  );
  //建立請(qǐng)求
  $alipaySubmit = new lib\AlipaySubmit($alipay_config);
    $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "確認(rèn)");
    echo $html_text;
  }
}

在config.php配置文件里配置參數(shù)


然后新建控制器TextController.class.php

?php
namespace Home\Controller;
use Think\Controller;
use \Extend\Alipay as Alipays;
class TextController extends Controller {
  public function index(){
    $this->display();
  }
  public function dobuy(){
    $out_trade_no = date('YmdHis');
    $baseurl = 'http://'.$_SERVER['HTTP_HOST'];
    $args = array(
      'out_trade_no'=>$out_trade_no,
      'notify_url'=> $baseurl.'/index.php/Home/Text/notifyurl.html',
      'return_url'=> $baseurl.'/index.php/Home/Text/returnurl.html',
      'total'=> $_POST['WIDtotal_fee'],
      );
    $s = new Alipays\Alipay();
    $s->pay(C('alipay'),$args);
  }
  // 同步跳轉(zhuǎn)
  public function returnurl(){
    $alipay_config = C('alipay');
    //計(jì)算得出通知驗(yàn)證結(jié)果
    $alipayNotify = new Alipays\lib\AlipayNotify($alipay_config);
    $verify_result = $alipayNotify->verifyReturn();
    if($verify_result) {//驗(yàn)證成功
      //商戶訂單號(hào)
      $out_trade_no = $_GET['out_trade_no'];
      //支付寶交易號(hào)
      $trade_no = $_GET['trade_no'];
      //交易狀態(tài)
      $trade_status = $_GET['trade_status'];
      if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
        //交易成功        
      }else {
       echo "trade_status=".$_GET['trade_status'];
      }  
      echo "驗(yàn)證成功br />";
      }else {
      //驗(yàn)證失敗
      //如要調(diào)試,請(qǐng)看alipay_notify.php頁(yè)面的verifyReturn函數(shù)
      echo "驗(yàn)證失敗";
    }
  }
  // 異步跳轉(zhuǎn)
  public function notifyurl(){
    $alipay_config = C('alipay');
    //計(jì)算得出通知驗(yàn)證結(jié)果
    $alipayNotify = new Alipays\AlipayNotify($alipay_config);
    $verify_result = $alipayNotify->verifyNotify();
    if($verify_result) {//驗(yàn)證成功
      $out_trade_no = $_POST['out_trade_no'];
      //支付寶交易號(hào)
      $trade_no = $_POST['trade_no'];
      //交易狀態(tài)
      $trade_status = $_POST['trade_status'];
      if($_POST['trade_status'] == 'TRADE_FINISHED'||$_POST['trade_status'] == 'TRADE_SUCCESS') {
       //交易成功
      }
      echo "success";   //請(qǐng)不要修改或刪除
      
    }
    else {
      //驗(yàn)證失敗
      echo "fail";
      //調(diào)試用,寫文本函數(shù)記錄程序運(yùn)行情況是否正常
      //logResult("這里寫入想要調(diào)試的代碼變量值,或其他運(yùn)行的結(jié)果記錄");
    }
  }
}

然后


這樣就成功完成簡(jiǎn)單的支付功能了

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PHP封裝XML和JSON格式數(shù)據(jù)接口操作示例
  • PHP調(diào)用全國(guó)天氣預(yù)報(bào)數(shù)據(jù)接口查詢天氣示例
  • php的api數(shù)據(jù)接口書寫實(shí)例(推薦)
  • PHP實(shí)現(xiàn)chrome表單請(qǐng)求數(shù)據(jù)轉(zhuǎn)換為接口使用的json數(shù)據(jù)
  • PHP實(shí)現(xiàn)騰訊短網(wǎng)址生成api接口實(shí)例
  • PHP語(yǔ)言對(duì)接抖音快手小紅書視頻/圖片去水印API接口源碼
  • PHP預(yù)定義接口——Iterator用法示例
  • php與阿里云短信接口接入操作案例分析
  • PHP開(kāi)發(fā)API接口簽名生成及驗(yàn)證操作示例
  • PHP接口類(interface)的定義、特點(diǎn)和應(yīng)用示例
  • 微信小程序開(kāi)發(fā)之獲取用戶手機(jī)號(hào)碼(php接口解密)
  • PHP 對(duì)象接口簡(jiǎn)單實(shí)現(xiàn)方法示例
  • PHP開(kāi)發(fā)api接口安全驗(yàn)證操作實(shí)例詳解
  • 如何用PHP編寫簡(jiǎn)單的api數(shù)據(jù)接口

標(biāo)簽:蚌埠 江蘇 廣元 衢州 萍鄉(xiāng) 棗莊 衡水 大理

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP接入支付寶接口失效流程詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    老河口市| 霍林郭勒市| 洞头县| 满城县| 绿春县| 黑水县| 萍乡市| 武安市| 永昌县| 鹰潭市| 治多县| 黄石市| 迁安市| 潮安县| 定结县| 铁岭县| 黔西县| 万荣县| 大丰市| 长岛县| 榆林市| 应用必备| 乡宁县| 临猗县| 栾城县| 渭源县| 林周县| 广东省| 济南市| 景宁| 泸溪县| 全州县| 太仆寺旗| 彭山县| 南靖县| 吉隆县| 东乌| 仪征市| 定边县| 临汾市| 微山县|