[TOC]
>如果你僅僅為了改一個 `支付狀態` 字段的話,看完本節的東西你就不用看了!因為你已經完成任務了!
>我們先把 Api\Controller\AlipayController.class 拷貝到本地對應目錄,先把代碼附上
也就是我們要對下邊紅框內的內容進行操作,如圖:

## 同步操作 return_url
```
/**
* return_url接收頁面
*/
public function alipay_return(){
// 引入支付寶
vendor('Alipay.AlipayNotify','','.class.php');
$config=$config=C('ALIPAY_CONFIG');
$notify=new \AlipayNotify($config);
// 驗證支付數據
$status=$notify->verifyReturn();
if($status){
// 下面寫驗證通過的邏輯 比如說更改訂單狀態等等 $_GET['out_trade_no'] 為訂單號;
echo "alipay_return success";
//$this->success('支付成功',U('User/Order/index')); //正式上線跳轉到用戶訂單頁
}else{
echo "alipay_return failed";
//$this->success('支付失敗',U('User/Order/index')); //正式上線跳轉到用戶支付失敗頁
}
}
```
>我們在這兒放一份邏輯
## 異步操作 notify_url
```
/**
* notify_url接收頁面
*/
public function alipay_notify(){
// 引入支付寶
vendor('Alipay.AlipayNotify','','.class.php');
$config=$config=C('ALIPAY_CONFIG');
$alipayNotify = new \AlipayNotify($config);
// 驗證支付數據
$verify_result = $alipayNotify->verifyNotify();
if($verify_result) {
echo "alipay_notify success";
// 下面寫驗證通過的邏輯 比如說更改訂單狀態等等 $_POST['out_trade_no'] 為訂單號;
}else {
echo "alipay_notify fail";
}
}
```
>我們把處理支付成功后的業務邏輯在這也放一份就可以了
舉例如下:
```
<?php
namespace Api\Controller;
use Common\Controller\HomebaseController;
/**
* 支付寶
*/
class AlipayController extends HomebaseController{
/**
* return_url接收頁面
*/
public function alipay_return(){
// 引入支付寶
vendor('Alipay.AlipayNotify','','.class.php');
$config=$config=C('ALIPAY_CONFIG');
$notify=new \AlipayNotify($config);
// 驗證支付數據
$status=$notify->verifyReturn();
//print_r($status); // TODO 這里為什么沒有返回數據呢?
// 注:原來 $status 沒有 ! ,因為沒有返回數據,所以暫時這樣先做!
if(!$status){
// 下面寫驗證通過的邏輯 比如說更改訂單狀態等等 $_GET['out_trade_no'] 為訂單號;
// 將“已支付”狀態存到數據表中
$transaction_model = M("CourseOrder");
$data['state'] = "1"; // 商品交易狀態-待支付(子俊讓修改為1)
$where['order'] = $_GET['out_trade_no'];
$transaction_model->where($where)->save($data);
$this->assign('total_fee',$_GET['total_fee']);
$this->display('success');
}else{
$this->display('failed');
}
}
/**
* notify_url接收頁面 TODO,這個地方目前好像沒有操作
*/
public function alipay_notify(){
// 引入支付寶
vendor('Alipay.AlipayNotify','','.class.php');
$config=$config=C('ALIPAY_CONFIG');
$alipayNotify = new \AlipayNotify($config);
// 驗證支付數據
$verify_result = $alipayNotify->verifyNotify();
if($verify_result) {
// 下面寫驗證通過的邏輯 比如說更改訂單狀態等等 $_POST['out_trade_no'] 為訂單號;
// 將“已支付”狀態存到數據表中
$transaction_model = M("CourseOrder");
$data['state'] = "1"; // 商品交易狀態-待支付
$where['order'] = $_GET['out_trade_no'];
$transaction_model->where($where)->save($data);
echo "success";exit;
}else {
echo "fail";exit;
}
}
}
```
如果還想深入了解的話,請繼續往下看!