Payment.php
4.67 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
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
<?php
/**
* @class Payment
* @brief 支付方式 操作类
*/
class Payment{
private $payment_id;
private $payment = array();
private $_config = null;
public function __construct($payment_id){
$model = new Model("payment as pa");
$this->payment = $model->fields('pa.*,pi.class_name,pi.name,pi.logo')->join("left join pay_plugin as pi on pa.plugin_id = pi.id")->where("pa.id = '".$payment_id."' or pi.class_name = '".$payment_id."'")->find();
if($this->payment){
$this->payment_id = $this->payment['id'];
$this->_config = unserialize($this->payment['config']);
if(empty($this->_config)) $this->_config = null;
}
}
public function getPaymentId()
{
return $this->payment_id;
}
public function getPaymentPlugin(){
if($this->payment){
$class_name = 'pay_'.$this->payment['class_name'];
$newClass = new $class_name($this->payment_id);
$newClass->setClassConfig($this->_config);
return $newClass;
}else{
return null;
}
}
/**
* @brief 根据支付方式配置编号 获取该插件的详细配置信息
* @param int 支付方式配置编号
* @return 返回支付插件类对象
*/
public function getPayment(){
return $this->payment;
}
/**
* @brief 获取订单中的支付信息
* @type 信息获取方式 order:订单支付;recharge:在线充值;
* @argument 参数
* @return array 支付提交信息
* R表示店铺 ; P表示用户;
*/
public function getPaymentInfo($type,$argument){
$controller = Tiny::app()->getController();
//支付信息
$payment = array();
//取的支付商户的ID与密钥
$paymentObj = $this->getPayment();
$payment['M_PartnerId'] = isset($this->_config['partner_id'])?$this->_config['partner_id']:'';
$payment['M_PartnerKey'] = isset($this->_config['partner_key'])?$this->_config['partner_key']:'';
$model = new Model("order");
if($type == 'order'){
$order_id = $argument;
//获取订单信息
$order = $model->where('id = '.$order_id.' and status = 2')->find();
if(empty($order))
{
$msg = array('type'=>'fail','msg'=>'订单信息不正确,不能进行支付!');
$controller ->redirect('/index/msg',false,$msg);
exit;
}
$payment ['M_Remark'] = $order['user_remark'];
$payment ['M_OrderId'] = $order['id'];
$payment ['M_OrderNO'] = $order['order_no'];
$payment ['M_Amount'] = $order['order_amount'];
//用户信息
$payment ['P_Mobile'] = $order['mobile'];
$payment ['P_Name'] = $order['accept_name'];
$payment ['P_PostCode'] = $order['zip'];
$payment ['P_Telephone'] = $order['phone'];
$payment ['P_Address'] = $order['addr'];
$payment ['P_Email'] = '';
}
else if($type == 'recharge')
{
if(!isset($argument['account']) || $argument['account'] <= 0){
$msg = array('type'=>'fail','msg'=>'请填入正确的充值金额!');
$controller ->redirect('/index/msg',false,$msg);
exit;
}
$safebox = Safebox::getInstance();
$user = $safebox->get('user');
$recharge = new Model('recharge');
$data = array(
'user_id' => $user['id'],
'recharge_no' => Common::createOrderNo(),
'account' => $argument['account'],
'time' => date('Y-m-d H:i:s'),
'payment_name'=> $argument['paymentName'],
'status' => 0,
);
$r_id = $recharge->data($data)->insert();
//充值时用户id跟随交易号一起发送,以"_"分割
$payment ['M_OrderNO'] = 'recharge_'.$data['recharge_no'];
$payment ['M_OrderId'] = $r_id;
$payment ['M_Amount'] = $data['account'];
}
$config = Config::getInstance();
$site_config = $config->get("globals");
//交易信息
$payment ['M_Def_Amount']= 0.01;
$payment ['M_Time'] = time ();
$payment ['M_Goods'] = '';
$payment ['M_Language'] = "zh_CN";
$payment ['M_Paymentid'] = $this->payment_id;
//商城信息
$payment ['R_Address'] = isset($site_config['site_addr']) ? $site_config['site_addr'] : '';
$payment ['R_Name'] = isset($site_config['site_name']) ? $site_config['site_name'] : '';
$payment ['R_Mobile'] = isset($site_config['site_mobile'])? $site_config['site_mobile'] : '';
$payment ['R_Telephone'] = isset($site_config['site_phone']) ? $site_config['site_phone'] : '';
$payment ['R_Postcode'] = isset($site_config['site_zip']) ? $site_config['site_zip'] : '';
$payment ['R_Email'] = isset($site_config['site_email']) ? $site_config['site_email'] : '';
return $payment;
}
}
?>