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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<?php
// 微信支付结果通知
require_once ("../user_include.inc");
ErrorLogger::doOutput($_REQUEST);
class PayNotifyCallBack extends WxPayNotify
{
//查询订单
public function Queryorder($transaction_id)
{
$input = new WxPayOrderQuery();
$input->SetTransaction_id($transaction_id);
$result = WxPayApi::orderQuery($input);
if(array_key_exists("return_code", $result)
&& array_key_exists("result_code", $result)
&& $result["return_code"] == "SUCCESS"
&& $result["result_code"] == "SUCCESS")
{
return true;
}
return false;
}
//重写回调处理函数
public function NotifyProcess($data, &$msg)
{
ErrorLogger::doOutput("Compass...api_wx_pay_notify...call back:" . json_encode($data));
if(!array_key_exists("transaction_id", $data)){
$msg = "输入参数不正确";
return false;
}
//查询订单,判断订单真实性
if(!$this->Queryorder($data["transaction_id"])){
$msg = "订单查询失败";
return false;
}
ErrorLogger::doOutput("Compass...api_wx_pay_notify.php.....out_trade_no=" . $data["out_trade_no"], 0);
$mchid_order_no = $data["transaction_id"];
$type = substr($data["out_trade_no"],0,1);
switch($type){
// 购买视频支付后处理
case 'C':
$param = array();
$param["delete_flg"] = false;
$param["status"] = "NEW";
$param["order_no"] = $data["out_trade_no"];
$userMediaDatList = UserMediaDat::getList($param);
// 找到订单
if (count($userMediaDatList) < 1) {
ErrorLogger::doOutput("Compass...api_wx_pay_notify...UserMediaDat is null.");
return false;
}
$userMediaDat = $userMediaDatList[0];
//更新支付状态
$mediaDat = CourseMediaDat::getById($userMediaDat->media_id);
$userMediaDat->money=$mediaDat->price;
$userMediaDat->mchid_order_no=$mchid_order_no;
$userMediaDat->status="SUCCESS";
$userMediaDat->save();
//添加用户支付记录汇总
$userMst = UserMst::getById($userMediaDat->user_id);
$userPayLog = new UserPayLog();
$userPayLog->user_id = $userMst->id;
$userPayLog->user_name = $userMst->name;
$userPayLog->action_type = "MEDIA";
$userPayLog->money = $mediaDat->price;
$userPayLog->save();
break;
// 募捐支付后处理
case 'D':
$param = array();
$param["delete_flg"] = false;
$param["status"] = "NEW";
$param["order_no"] = $data["out_trade_no"];
$userDonationList = UserDonationDat::getList($param);
// 找到订单
if (count($userDonationList) < 1) {
ErrorLogger::doOutput("Compass...api_wx_pay_notify...userDonation is null.");
return false;
}
$userDonation = $userDonationList[0];
//更新用户账户
$userDonation->mchid_order_no=$mchid_order_no;
$userDonation->status = "SUCCESS";
$userDonation->save();
//添加用户支付记录汇总
$userMst = UserMst::getById($userDonation->user_id);
$userPayLog = new UserPayLog();
$userPayLog->user_id = $userMst->id;
$userPayLog->user_name = $userMst->name;
$userPayLog->action_type = "DONATION";
$userPayLog->money = $userDonation->money;
$userPayLog->save();
break;
// 会员购买支付后处理
case 'M':
$param = array();
$param["delete_flg"] = false;
$param["status"] = "NEW";
$param["order_no"] = $data["out_trade_no"];
$userBuyMemberList = UserBuyMemberDat::getList($param);
// 找到订单
if (count($userBuyMemberList) < 1) {
ErrorLogger::doOutput("Compass...api_wx_pay_notify...userBuyMember is null.");
return false;
}
$userBuyMemberDat = $userBuyMemberList[0];
//更新支付状态
$userBuyMemberDat->mchid_order_no=$mchid_order_no;
$userBuyMemberDat->status = "SUCCESS";
$userBuyMemberDat->save();
$userMst = UserMst::getById($userBuyMemberDat->user_id);
//添加用户支付记录汇总
$userPayLog = new UserPayLog();
$userPayLog->user_id = $userMst->id;
$userPayLog->user_name = $userMst->name;
$userPayLog->action_type = "MEMBER";
$userPayLog->money = $userBuyMemberDat->money;
$userPayLog->save();
//用户状态更新
$userMst->is_member = true;
$userMst->save();
break;
default:
break;
}
return true;
}
}
$notify = new PayNotifyCallBack();
$notify->Handle(false);