Files
juipphp/app/ros/controller/Order.php

198 lines
5.6 KiB
PHP
Raw Normal View History

2022-03-22 16:05:07 +08:00
<?php
namespace app\ros\controller;
use app\ros\model\Product as ProductModel;
use app\ros\model\Order as OrderModel;
use fastphp\base\Controller;
use extend\wechatpay\Wxpay;
use extend\alipay\Alipay;
use app\user\model\User as UserModel;
use app\user\model\UserScore as UserScore;
class Order extends Controller
{
/**
* @description: 支付宝付款
* @param {*}
* @return {*}
*/
public function alipay()
{
$data = json_decode(file_get_contents("php://input"),true)['data'];
$product_model = new ProductModel();
$product_info = $product_model->getOne(['id' => $data['product_id']]);
$money = abs($product_info['price']);
$order_no = md5(time());
$order_model = new OrderModel();
$order_data = [
'user_id' => $this->userinfo['UserId'],
'product_id' => $product_info['id'],
'product_name' => $product_info['name'],
'order_price' => $product_info['price'],
'real_price' => $money,
'order_no' =>$order_no,
'user' =>$data['username'],
'phone' =>$data['phone'],
'address' =>$data['address'],
];
$order_model->add($order_data);
$param = [
'out_trade_no' => $order_no,
'total_amount' => $money,
'subject' => '购买软路由'.$product_info['name'].'-'.$this->userinfo['LoginName'],
'product_code' => 'FAST_INSTANT_TRADE_PAY',
'timeout_express' => '30m',
];
$pay_html = Alipay::pay($param);
$info = [
'code'=>2,
'data' => $pay_html
];
echo json_encode($info);
die;
}
/**
* @description: 微信支付
* @param {*}
* @return {*}
*/
public function wxpay() {
$data = json_decode(file_get_contents("php://input"),true)['data'];
$product_model = new ProductModel();
$product_info = $product_model->getOne(['id' => $data['product_id']]);
$money = abs($product_info['price']);
$order_no = md5(time());
$order_model = new OrderModel();
$order_data = [
'user_id' => $this->userinfo['UserId'],
'product_id' => $product_info['id'],
'product_name' => $product_info['name'],
'order_price' => $product_info['price'],
'real_price' => $money,
'order_no' =>$order_no,
'user' =>$data['username'],
'phone' =>$data['phone'],
'address' =>$data['address'],
];
$order_model->add($order_data);
//微信支付
$wxpay = new Wxpay();
$param = [
'username' => $this->userinfo['LoginName'],
'money' => $money*100,
'order_no' => $order_no,
];
$url = $wxpay->pay($param);
$info = [
'code'=>1,
'data' => $url
];
echo json_encode($info);
die;
}
/**
* @description: 余额支付
* @param {*}
* @return {*}
*/
public function balancepay(){
$data = json_decode(file_get_contents("php://input"),true)['data'];
$product_model = new ProductModel();
$product_info = $product_model->getOne(['id' => $data['product_id']]);
$money = abs($product_info['price']);
$user_model = new UserModel;
$user_info = $user_model->getOne(['Id' => $this->userinfo['UserId']]);
$old_balance = $rest_money = $user_info['RestAmount'];
if ($money > $rest_money) {
$info = [
'code'=>-1,
'msg' => '余额不足'
];
echo json_encode($info);
die;
} else {
$rest_money -= $money;
$rest_data = [
'RestAmount' => $rest_money
];
if ($user_model->updateOne(['Id'=>$this->userinfo['UserId'],'RestAmount'=>$old_balance],$rest_data)) {
$score_model = new UserScore;
$score_data = [
'UserId' => $this->userinfo['UserId'],
'ScoreType' => '6',
'ScoreTypeName' => '购买软路由',
'ScoreValue' => $money,
'UserName' => $user_info['Phone'],
'OperateUserName' => $user_info['LoginCode'],
'RestAmount1' => $old_balance,
'RestAmount2' => $rest_money,
'CreateTime' => date('Y-m-d H:i:s'),
'UpdateTime' => date('Y-m-d H:i:s'),
];
$score_model->add($score_data);
} else {
$info = [
'code'=>-1,
'msg' => '支付失败,请联系客服!'
];
echo json_encode($info);
die;
}
$order_no = md5(time());
$order_model = new OrderModel();
$order_data = [
'user_id' => $this->userinfo['UserId'],
'product_id' => $product_info['id'],
'product_name' => $product_info['name'],
'order_price' => $product_info['price'],
'real_price' => $money,
'order_no' =>$order_no,
'user' =>$data['username'],
'phone' =>$data['phone'],
'address' =>$data['address'],
];
$order_model->add($order_data);
}
$info = [
'code'=>3,
];
echo json_encode($info);
die;
}
}