|
|
<?php
|
|
|
/**
|
|
|
* Created by PhpStorm.
|
|
|
* User: 29925
|
|
|
* Date: 2018/6/14
|
|
|
* Time: 16:05
|
|
|
*/
|
|
|
|
|
|
namespace api\portal\controller;
|
|
|
|
|
|
use api\portal\controller\NotifyCommonController;
|
|
|
use think\Db;
|
|
|
use traits\controller\Jump;
|
|
|
use api\portal\model\OrderModel;
|
|
|
|
|
|
class AlipayController extends NotifyCommonController
|
|
|
{
|
|
|
public function _initialize()
|
|
|
{
|
|
|
require_once VENDOR_PATH.'alipay/config.php';
|
|
|
require_once VENDOR_PATH.'alipay/pagepay/service/AlipayTradeService.php';
|
|
|
require_once VENDOR_PATH.'alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';
|
|
|
$this->config = $config;
|
|
|
}
|
|
|
|
|
|
|
|
|
public function alipay() {
|
|
|
$data = $this->request->param();
|
|
|
$config = $this->config;
|
|
|
//商户订单号,商户网站订单系统中唯一订单号,必填
|
|
|
$out_trade_no = trim($data['order_sn']);
|
|
|
|
|
|
//订单名称,必填
|
|
|
$subject = trim($data['name']);
|
|
|
|
|
|
//付款金额,必填
|
|
|
// $total_amount = trim(I('get.price'));
|
|
|
$total_amount = trim(0.01);
|
|
|
|
|
|
//商品描述,可空
|
|
|
$body = '';
|
|
|
|
|
|
//构造参数
|
|
|
$payRequestBuilder = new \AlipayTradePagePayContentBuilder();
|
|
|
$payRequestBuilder->setBody($body);
|
|
|
$payRequestBuilder->setSubject($subject);
|
|
|
$payRequestBuilder->setTotalAmount($total_amount);
|
|
|
$payRequestBuilder->setOutTradeNo($out_trade_no);
|
|
|
|
|
|
$aop = new \AlipayTradeService($config);
|
|
|
|
|
|
/**
|
|
|
* pagePay 电脑网站支付请求
|
|
|
* @param $builder 业务参数,使用buildmodel中的对象生成。
|
|
|
* @param $return_url 同步跳转地址,公网可以访问
|
|
|
* @param $notify_url 异步通知地址,公网可以访问
|
|
|
* @return $response 支付宝返回的信息
|
|
|
*/
|
|
|
$response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);
|
|
|
|
|
|
//输出表单
|
|
|
var_dump($response);
|
|
|
}
|
|
|
|
|
|
// 回调
|
|
|
public function notify_url() {
|
|
|
$config = $this->config;
|
|
|
$arr=$_POST;
|
|
|
$alipaySevice = new \AlipayTradeService($config);
|
|
|
$alipaySevice->writeLog(var_export($_POST,true));
|
|
|
$result = $alipaySevice->check($arr);
|
|
|
if($result) {
|
|
|
//商户订单号
|
|
|
|
|
|
$out_trade_no = $_POST['out_trade_no'];
|
|
|
|
|
|
//支付宝交易号
|
|
|
|
|
|
$trade_no = $_POST['trade_no'];
|
|
|
|
|
|
//交易状态
|
|
|
$trade_status = $_POST['trade_status'];
|
|
|
|
|
|
|
|
|
if($_POST['trade_status'] == 'TRADE_FINISHED') {
|
|
|
|
|
|
//判断该笔订单是否在商户网站中已经做过处理
|
|
|
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
|
|
|
//请务必判断请求时的total_amount与通知时获取的total_fee为一致的
|
|
|
//如果有做过处理,不执行商户的业务程序
|
|
|
$where['order_sn'] = $out_trade_no;
|
|
|
// $where['money'] = $data['total_amount'];
|
|
|
$res = $this->changeOrderStatus($where,$trade_no,3,'pc支付宝支付');
|
|
|
if(!$res) {
|
|
|
echo 'fail';exit;
|
|
|
}
|
|
|
//注意:
|
|
|
//退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
|
|
|
}
|
|
|
else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
|
|
|
//判断该笔订单是否在商户网站中已经做过处理
|
|
|
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
|
|
|
//请务必判断请求时的total_amount与通知时获取的total_fee为一致的
|
|
|
//如果有做过处理,不执行商户的业务程序
|
|
|
$where['order_sn'] = $out_trade_no;
|
|
|
// $where['money'] = $data['total_amount'];
|
|
|
$res = $this->changeOrderStatus($where,$trade_no,3,'pc支付宝支付');
|
|
|
if(!$res) {
|
|
|
echo 'fail';exit;
|
|
|
}
|
|
|
//注意:
|
|
|
//付款完成后,支付宝系统发送该交易状态通知
|
|
|
}
|
|
|
echo "success"; //请不要修改或删除
|
|
|
}else {
|
|
|
//验证失败
|
|
|
echo "fail"; //请不要修改或删除
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//
|
|
|
public function return_url() {
|
|
|
$config = $this->config;
|
|
|
$arr = $_GET;
|
|
|
$alipaySevice = new \AlipayTradeService($config);
|
|
|
$result = $alipaySevice->check($arr);
|
|
|
// var_dump($_GET);
|
|
|
// echo '<br/>';
|
|
|
if ($result) {
|
|
|
//商户订单号
|
|
|
$out_trade_no = htmlspecialchars($_GET['out_trade_no']);
|
|
|
|
|
|
//支付宝交易号
|
|
|
$trade_no = htmlspecialchars($_GET['trade_no']);
|
|
|
$data = $_GET;
|
|
|
$where['order_sn'] = $data['out_trade_no'];
|
|
|
// $where['money'] = $data['total_amount'];
|
|
|
$res = $this->changeOrderStatus($where,$data['trade_no'],3,'pc支付宝支付');
|
|
|
if($res) {
|
|
|
$this->redirect('http://bifangjia.cn/Compare_Price/pay/PayResult.html');
|
|
|
} else {
|
|
|
$this->redirect('http://bifangjia.cn');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
} |
|
|
\ No newline at end of file |
...
|
...
|
|