[TOC]
>如果你仅仅为了改一个 `支付状态` 字段的话,看完本节的东西你就不用看了!因为你已经完成任务了!
>我们先把 Api\Controller\AlipayController.class 拷贝到本地对应目录,先把代码附上
也就是我们要对下边红框内的内容进行操作,如图:
![mark](http://qiniu.newthink.cc/blog/20170915-235331968.png)
## 同步操作 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;
}
}
}
```
如果还想深入了解的话,请继续往下看!