/** * 输出还款html代码 * * @param string $order_id 订单编号 * @param number $issue 期号,0表示支付首付,其它表示指定账单,仅配合month=1使用 * @param number $month 还款月份,0表示一次性还清,其它表示还款的期数 */ public function alipay($order_id, $issue = 0, $month = 1) { // 获取并验证订单 $user = get_user() or $this->error('请先登录!', '/login'); $orderModel = new \Loan\Model\OrderModel(); $billModel = new \Loan\Model\BillModel(); $order = $orderModel->field('status,first_money,is_allow_prepayment')->where(['uid' => $user['uid'], 'id' => $order_id])->find() or $this->error('找不到此订单信息!'); $issue = intval($issue); $month = intval($month); if ($month == 1) { if ($issue == 0) { // 正常支付首付 $order['status'] == $orderModel::STATUS_UNPAY or $this->error('此订单状态当前不允许支付首付!'); $subject = '指尖分期-支付首付'; $money = $order['first_money']; } else { // 正常支付指定账单 if ($order['status'] == $orderModel::STATUS_UNPAY) { $this->error('请先支付首付!'); } in_array($order['status'], $orderModel->allowRepayStatus()) or $this->error('当前订单状态不允许执行还款!'); // 获取并验证账单信息 $bill = M('loan_bill')->field('issue,money_total,return_money,status')->where(['order_id' => $order_id, 'issue' => $issue])->find() or $this->error('找不到此账单信息!'); $bill['status'] == 0 or $this->error('此账单当前不为待付款状态!'); $bill['money_total'] > 0 or $this->error('此账单无需支付!'); $subject = '指尖分期-' . "支付第{$issue}期"; $money = $bill['money_total'] - $bill['return_money']; } } elseif ($month == 0) { // 一次性还清 $subject = '指尖分期-' . "一次性还款"; $repay = $billModel->getRepay($order_id) or $this->error($billModel->getError()); $money = $repay['money_total']; } elseif ($month > 1) { // 提前还$month期 $subject = '指尖分期-' . "提前还{$month}期"; $repay = $billModel->getRepay($order_id, $month) or $this->error($billModel->getError()); $money = $repay['money_total']; } else { $this->error('还款期数异常!'); } $alipayModel = M('loan_pay_alipay'); $pay_id = $alipayModel->add(['created' => time(), 'order_id' => $order_id, 'issue' => $issue, 'month' => $month, 'money' => $money, 'is_notify' => 0, 'is_action' => 0]); // 确认生成支付表单 $body = '订单号:' . $order_id; $notify_url = U('/pay/alipay_notify/' . $pay_id, null, true, $_SERVER['HTTP_HOST']); $return_url = U('/pay/alipay_return/' . $pay_id, null, true, $_SERVER['HTTP_HOST']); $show_url = U('/user/order/' . $order_id . '@fenqi'); $alipay = new \Common\Util\Alipay\Alipay(); header('Location: ' . $alipay->pay($notify_url, $return_url, $order_id . '-' . $pay_id, $subject, $body, $show_url, $money)); }
/** * 支付宝充值页面 * * @param number $money 充值金额 */ public function alipay($money) { // 获取当前用户 $user = get_user() or $this->error('请先登录!', '/login'); $uid = $user['uid']; // 判断充值金额 is_numeric($money) or $this->error('请输入正确的金额!'); $money > 0 or $this->error('充值金额必须大于0!'); // 判断用户资金账户 $moneyModel = new \Common\Model\UserMoneyModel(); $moneyModel->checkExists($uid) or $this->error('资金账户不存在!'); $pay_id = M('user_money_pay_alipay')->add(['created' => time(), 'uid' => $uid, 'money' => $money, 'is_notify' => 0, 'is_action' => 0]); // 确认生成支付表单 $body = '充值金额:' . number_format($money, 2); $notify_url = U('/pay/alipay_notify/pay_id/' . $pay_id, null, true, $_SERVER['HTTP_HOST']); $return_url = U('/pay/alipay_return/pay_id/' . $pay_id, null, true, $_SERVER['HTTP_HOST']); $show_url = ''; $alipay = new \Common\Util\Alipay\Alipay(); header('Location: ' . $alipay->pay($notify_url, $return_url, $pay_id, '充值', $body, $show_url, $money, '', true)); }