NotifyCommonController.php
3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
/**
* Created by PhpStorm.
* User: 29925
* Date: 2018/7/23
* Time: 15:19
*/
namespace api\portal\controller;
use api\portal\model\AgencyModel;
use api\portal\model\MemberModel;
use api\portal\model\MoneyDetailModel;
use api\portal\model\OrderModel;
use api\portal\model\UserNeedModel;
use cmf\controller\HomeBaseController;
use think\Db;
class NotifyCommonController extends HomeBaseController
{
/**
* 支付回调处理方法(通用)
* @param where 回调订单的where条件(含订单号,支付金额)
* @param transaction_id 支付业务参数
* @param pay_type 支付类型
* @param title 支付原因
*/
protected function changeOrderStatus($where, $transaction_id, $pay_type, $title) {
$order_model = new OrderModel();
$orderInfo = $order_model->where($where)->find();
if($orderInfo['status'] == 1) {
// $order_model->startTrans();
$update = [
'status' => 2,
'pay_type' => $pay_type,
'pay_time' => time(),
'transaction_id'=>$transaction_id
];
Db::name('Test')->insertGetId(['data'=>0]);
// 根据支付类型修改不同表的数据
if($orderInfo['type'] == 1) {
$user_need_model = new UserNeedModel();
$pay = $order_model->where($where)->update($update);
$status = $user_need_model->where(['id'=>$orderInfo['need_id']])->update(['status'=>2,'pay_time'=>time()]);
}
if($orderInfo['type'] == 2) {
$agency_model = new AgencyModel();
$pay = $order_model->where($where)->update($update);
$status = $agency_model->where(['id'=>$orderInfo['need_id']])->update(['status'=>2,'pay_time'=>time()]);
}
if($orderInfo['type'] == 3) {
$Intermediary = controller('Intermediary','controller');
$agencyOffer = $Intermediary->agencyOffer($orderInfo['user_id'],$orderInfo['need_id']);
$update['lower_price'] = $agencyOffer['money'];
$pay = $order_model->where($where)->update($update);
$status = 1;
}
if(!$pay || !$status) {
$order_model->rollback();
return false;
}
// 记录用户金额记录
$member_model = new MemberModel();
$user = $member_model->field(['id,type'])->where(['id'=>$orderInfo['user_id']])->find();
if(!$user) {
$order_model->rollback();
return false;
}
$money_detail_model = new MoneyDetailModel();
if($orderInfo['type'] == 1) {
$order_type = 1;
}
$insert = [
'order_id' => $orderInfo['id'],
'user_id' => $user['id'],
'user_type' => $user['type'],
'title' => $title,
'money' => $orderInfo['money'],
'order_type' => $order_type,
'type' => 2,
'pay_type' => $pay_type,
'create_time' => time()
];
$money_detail_insert = $money_detail_model->insertGetId($insert);
if(!$money_detail_insert) {
$order_model->rollback();
return false;
}
$order_model->commit();
return $orderInfo['type'];
}
}
}