www.lightcourse.com/app/home/controller/Buyvirtual.php

163 lines
6.3 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace app\home\controller;
use think\facade\View;
use think\facade\Lang;
/**
* ============================================================================
* 联课教育商城系统
* ============================================================================
* 版权所有 2022 刻羽互动科技有限公司,并保留所有权利。
* 网站地址: http://www.o1h.cn
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
* 不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* 控制器
*/
class Buyvirtual extends BaseMember
{
public function initialize()
{
parent::initialize(); // TODO: Change the autogenerated stub
Lang::load(base_path() . 'home/lang/'.config('lang.default_lang').'/buy.lang.php');
//验证该会员是否禁止购买
if(!session('is_buy')){
$this->error(lang('cart_buy_noallow'));
}
if(config('ds_config.member_auth') && $this->member_info['member_auth_state']!=3){
$this->error(lang('cart_buy_noauth'),url('MemberAuth/index'));
}
}
/**
* 虚拟商品购买第一步
*/
public function buy_step1() {
$logic_buyvirtual = model('buyvirtual','logic');
$result = $logic_buyvirtual->getBuyStep1Data(input('goods_id'), input('quantity'), session('member_id'));
if (!$result['code']) {
$this->error($result['msg']);
}
View::assign('goods_info',$result['data']['goods_info']);
return View::fetch($this->template_dir.'buy_virtual_step1');
}
/**
* 虚拟商品购买第二步
*/
public function buy_step2() {
$logic_buyvirtual = model('buyvirtual','logic');
$result = $logic_buyvirtual->getBuyStep2Data(input('post.goods_id'), input('post.quantity'), session('member_id'));
if (!$result['code']) {
$this->error($result['msg']);
}
//处理会员信息
$member_info = array_merge($this->member_info,$result['data']['member_info']);
View::assign('goods_info',$result['data']['goods_info']);
View::assign('member_info',$member_info);
//返回店铺可用的代金券
View::assign('voucher_list', $result['data']['voucher_list']);
return View::fetch($this->template_dir.'buy_virtual_step2');
}
/**
* 虚拟商品购买第三步
*/
public function buy_step3() {
$logic_buyvirtual = model('buyvirtual','logic');
$post = input('post.');
$post['order_from'] = 1;
$result = $logic_buyvirtual->buyStep3($post,session('member_id'));
if (!$result['code']) {
$this->error($result['msg']);
}
//转向到商城支付页面
$this->redirect('buyvirtual/pay',['order_id'=>$result['data']['order_id']]);
}
/**
* 下单时支付页面
*/
public function pay() {
$order_id = intval(input('param.order_id'));
if ($order_id <= 0){
$this->error(lang('cart_order_pay_not_exists'),'membervrorder/index');
}
$vrorder_model = model('vrorder');
//取订单信息
$condition = array();
$condition[] = array('order_id','=',$order_id);
$order_info = $vrorder_model->getVrorderInfo($condition,'*',true);
if (empty($order_info) || !in_array($order_info['order_state'],array(ORDER_STATE_NEW,ORDER_STATE_PAY))) {
$this->error(lang('no_order_paid_was_found'),'memberorder/index');
}
//重新计算在线支付金额
$pay_amount_online = 0;
//订单总支付金额
$pay_amount = 0;
$payed_amount = floatval($order_info['rcb_amount']) + floatval($order_info['pd_amount']);
//计算所需要支付金额
$diff_pay_amount = ds_price_format(floatval($order_info['order_amount'])-$payed_amount);
//显示支付方式与支付结果
if ($payed_amount > 0) {
$payed_tips = '';
if (floatval($order_info['rcb_amount']) > 0) {
$payed_tips = lang('card_has_been_paid').':¥'.$order_info['rcb_amount'];
}
if (floatval($order_info['pd_amount']) > 0) {
$payed_tips .= lang('prepaid_deposits_beenpaid').':¥'.$order_info['pd_amount'];
}
$order_info['goods_price'] .= " ( {$payed_tips} )";
}
View::assign('order_info',$order_info);
//如果所需支付金额为0转到支付成功页
if ($diff_pay_amount == 0) {
$this->redirect('buyvirtual/pay_ok',['order_sn'=>$order_info['order_sn'],'order_id'=>$order_info['order_id'],'order_amount'=>ds_price_format($order_info['order_amount'])]);
}
View::assign('diff_pay_amount',ds_price_format($diff_pay_amount));
//显示支付接口列表
$payment_model = model('payment');
$condition = array();
$condition[] = array('payment_code','not in',array('offline', 'predeposit'));
$condition[] = array('payment_platform','=','pc');
$payment_list = $payment_model->getPaymentOpenList($condition);
if (empty($payment_list)) {
$this->error(lang('appropriate_payment_method'),'membervrorder/index');
}
View::assign('payment_list',$payment_list);
//显示预存款、支付密码、充值卡
$member_model=model('member');
$buyer_info=$member_model->getMemberInfoByID($this->member_info['member_id']);
View::assign('available_pd_amount', ($buyer_info['available_predeposit']>0)?$buyer_info['available_predeposit']:'');
View::assign('member_paypwd', $buyer_info['member_paypwd']);
View::assign('available_rcb_amount', ($buyer_info['available_rc_balance']>0)?$buyer_info['available_rc_balance']:'');
return View::fetch($this->template_dir.'buy_virtual_step3');
}
/**
* 支付成功页面
*/
public function pay_ok() {
$order_sn = input('param.order_sn');
if (!preg_match('/^\d{20}$/',$order_sn)){
$this->error(lang('cart_order_pay_not_exists'),'membervrorder/index');
}
return View::fetch($this->template_dir.'buy_virtual_step4');
}
}