jh-admin/addon/saas/model/OrderCreate.php

132 lines
5.2 KiB
PHP

<?php
/**
* SAAS应用系统 --- 十年开发经验汇集巨献!
* ==========================================================
* Copy right 2020-2050 成都众联思索科技有限公司,保留所有权利。
* ----------------------------------------------------------
* 官方网址: https://www.zoomtk.com
* 这不是自由软件!未经允许不得用于商业目或程序代码摘取及修改。
* 任何企业和个人未经允许对程序代码以任何形式任何目的再发布传播。
* 唯一发布渠道www.zoomtk.com;非官方渠道统一视为侵权行为。
* ==========================================================
*/
namespace addon\saas\model;
use app\model\BaseModel;
use app\model\system\Pay;
use think\facade\Cache;
use think\facade\Db;
class OrderCreate extends BaseModel
{
// 订单待支付
const ORDER_CREATE = 0;
// 订单已支付
const ORDER_PAY = 1;
// 订单已关闭
const ORDER_CLOSE = -1;
/***
* 创建充值订单
* @param $pay_money
* @param $member_id
* @return array|mixed|string|void
*/
public function rechargeOrderCreate($pay_money, $member_id, $site_id)
{
$pay = new Pay();
$order_name = 'SAAS应用服务';
$pay_type = 'alipay';//支付方式
$app_type = 'cashier'; //扫码支付
$out_trade_no = $pay->createOutTradeNo($member_id);
$pay_detail = $site_id . '_' . $member_id;
$order_id = $pay->addPay(1, $out_trade_no, $pay_type, $order_name, $pay_detail, $pay_money, '', 'SaasRechargeOrderPayNotify', '', '');
$order_data = array();
$order_data['site_id'] = 1;
$order_data['order_id'] = $order_id;
$order_data['type'] = 'saas';
$order_data['third_order_id'] = $out_trade_no;
$order_data['cloud_account'] = $site_id;
$order_data['goods_name'] = $order_name;
$order_data['pay_type'] = $pay_type;
$order_data['create_time'] = time();
$order_data['money'] = $pay_money;
Db::name('cloud_order')->insert($order_data);
$notify_url = addon_url("pay/pay/notify/paytype/" . $pay_type . '/app_type/' . $app_type . '/site_id/1');
$return_url = addon_url("pay/pay/payreturn", ['out_trade_no' => $out_trade_no, 'app_type' => $app_type]);
$data['site_id'] = 1;
$data['out_trade_no'] = $out_trade_no;
$data['pay_money'] = $pay_money;
$data['app_type'] = $app_type;
$data['pay_body'] = $order_name;
$data['notify_url'] = $notify_url;
$data['return_url'] = $return_url;
$data['pay_type'] = $pay_type;
$data["member_id"] = $member_id;
$data["is_matched"] = 0;
$data["hb_fq_num"] = 0;
$res = event('Pay', $data, true);
$res['data']['out_trade_no'] = $out_trade_no;
return $res;
}
/***
* 套餐购买
* @param $pay_money
* @param $member_id
* @param $site_id
* @param $agnet_site_id
*/
public function saasOrderCreate($pay_money, $member_id, $site_id, $agnet_site_id)
{
$pay = new Pay();
$order_name = 'SAAS套餐购买';
$pay_type = 'wechatpay';//支付方式
$app_type = 'pc'; //扫码支付
$out_trade_no = $pay->createOutTradeNo($member_id);
$pay_detail = $site_id . '_' . $member_id;
$order_id = $pay->addPay($agnet_site_id, $out_trade_no, $pay_type, $order_name, $pay_detail, $pay_money, '', 'SaasOrderPayNotify', '', '');
$order_data = array();
$order_data['site_id'] = $agnet_site_id;
$order_data['order_id'] = $order_id;
$order_data['type'] = 'saas';
$order_data['third_order_id'] = $out_trade_no;
$order_data['cloud_account'] = $site_id;
$order_data['goods_name'] = $order_name;
$order_data['pay_type'] = $pay_type;
$order_data['create_time'] = time();
$order_data['money'] = $pay_money;
$insert = Db::name('cloud_order')->insert($order_data);
$notify_url = addon_url("pay/pay/notify/paytype/" . $pay_type . '/app_type/' . $app_type . '/site_id/1');
$return_url = addon_url("pay/pay/payreturn", ['out_trade_no' => $out_trade_no, 'app_type' => $app_type]);
$data['site_id'] = 1;
$data['out_trade_no'] = $out_trade_no;
$data['pay_money'] = $pay_money;
$data['app_type'] = $app_type;
$data['pay_body'] = $order_name;
$data['notify_url'] = $notify_url;
$data['return_url'] = $return_url;
$data['pay_type'] = $pay_type;
$data["member_id"] = $member_id;
$data["is_matched"] = 0;
$res = event('Pay', $data, true);
$res['data']['out_trade_no'] = $out_trade_no;
return $res;
}
/**
* 生成订单编号
*
* @param array $site_id
*/
public function createOrderNo($site_id, $member_id = 0)
{
$time_str = date('YmdHi');
$max_no = Cache::get($site_id . "_" . $member_id . "_" . $time_str);
if (!isset($max_no) || empty($max_no)) {
$max_no = 1;
} else {
$max_no = $max_no + 1;
}
$order_no = $time_str . $member_id . sprintf("%03d", $max_no);
Cache::set($site_id . "_" . $member_id . "_" . $time_str, $max_no);
return $order_no;
}
}