IndexController.php
2.89 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
<?php
class pay_IndexController extends QLib_Controller_Action {
public function init() {
/* Initialize action controller here */
}
public function indexAction() {
$this->_helper->layout()->disableLayout();
$orderCode = $this->helpGparam('order_code');
$paymentType = $this->helpGparam('payment_type');
// $uid = $this->helpAuth('/pay?order_code=' . $orderCode);
$uid = $this->helpAuth();
$paymentPars = explode('_', $paymentType);
if(count($paymentPars) != 2){
//发生错误
$this->helpJsRedirect('请选择一个支付方式');
}
$profileInfo = QINPassport_Client::getProfile($uid);
$isTest = RELEASE_ENV !=Q_SCHEMA_RELEASE ? true : false;
$paymentParams = QCPay_Models_Payment_Client::getOneById($paymentPars[0]);
$payService = QCPay_Utils_Factory::factory($paymentParams);
if($payService == false){
//TODO 报错
$this->helpJsRedirect('请选择一个支付方式');
}
$_spbill_create_ip = Q_Common_Request::getClientIp(); //ip2long
$orderInfo = QModels_Orders_Client::getOneByCode($orderCode, $uid);
$amount = $orderInfo['amount'] * 100 ;
$paymentParameter = $paymentPars[1];
if($paymentType == 2){
//判断是否传入token
$alipay_token = $this->helpSession('passport_register')->__get('alipay_user_token');
if(!empty($alipay_token)){
$paymentParameter = $alipay_token;
}
}
$reqParams = new QCPay_Utils_Reqparams($orderCode, $amount, '有货订单号:' . $orderCode, $_spbill_create_ip, $orderInfo['create_time'], $paymentParameter, $isTest, $uid, $profileInfo['profile_name']);
$reqPars = $payService->getPayRequestPars($reqParams);
//记录或修改支付方式
($record_bank = $this->updatePayment($orderCode,$uid,$paymentPars)) ? TRUE : $this->helpJsonResult('500','支付方式记录失败');
if($reqPars['reqType'] == 'get'){
//直接跳转到支付界面
$toUrl = $reqPars['pay_url'] . '?' . $reqPars['pars'];
$this->helpGo($toUrl);
}else{
//如果是post,去form提交
$this->view->reqPars = $reqPars;
}
}
/**
* 记录并更改订单支付方式
* @param int $orderCode
* @param int $uid
* @param array $paymentPars
* return bool
*/
public function updatePayment($orderCode,$uid,$paymentPars){
if(count($paymentPars) == 2){
$order_code = (int)$orderCode;
$payment = (int)$paymentPars[0];
$recode_pay = QINOrders_Models_Orders_Client::updateOrderPayment($order_code,$uid,$payment);
$bank_code = $paymentPars[1] != 'platform' ? $paymentPars[1] : '';
if(QINOrders_Models_Orders_PayBank_Client::getBankByOrder($order_code)){
$recode_pay_bank = QINOrders_Models_Orders_PayBank_Client::updatePayBank($order_code, $payment, $bank_code);
}else{
$recode_pay_bank = QINOrders_Models_Orders_PayBank_Client::setOrderPayBank($order_code, $payment, $bank_code);
}
return $recode_pay && $recode_pay_bank;
}
}
}