279 lines
9.8 KiB
PHP
279 lines
9.8 KiB
PHP
<?php
|
|
/**
|
|
* SAAS应用系统 --- 十年开发经验汇集巨献!
|
|
* ==========================================================
|
|
* Copy right 2020-2050 成都众联思索科技有限公司,保留所有权利。
|
|
* ----------------------------------------------------------
|
|
* 官方网址: https://www.zoomtk.com
|
|
* 这不是自由软件!未经允许不得用于商业目或程序代码摘取及修改。
|
|
* 任何企业和个人未经允许对程序代码以任何形式任何目的再发布传播。
|
|
* 唯一发布渠道www.zoomtk.com;非官方渠道统一视为侵权行为。
|
|
* ==========================================================
|
|
*/
|
|
|
|
namespace addon\aliapp\model;
|
|
|
|
use app\model\system\Site;
|
|
use think\Exception;
|
|
use think\facade\Db;
|
|
|
|
class AuthNotify
|
|
{
|
|
/***
|
|
* 服务订购
|
|
* @param $param
|
|
* @return void
|
|
*/
|
|
public function Notify($param = [])
|
|
{
|
|
$rsaCheck = $this->rsaCheck($param);
|
|
if ($rsaCheck && isset($param['notify_type'])) {
|
|
switch ($param['notify_type']) {
|
|
case 'alipay.service.check':
|
|
echo 'success';
|
|
break;
|
|
case 'servicemarket_order_notify': //服务订单通知
|
|
$this->servicemarketOrderNotify($param);
|
|
break;
|
|
case 'open_app_auth_notify': //授权通知
|
|
$this->openAppAuthnotify($param);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/***
|
|
* 授权通知处理
|
|
* @param $param
|
|
*/
|
|
public function openAppAuthnotify($param)
|
|
{
|
|
$authInfo = json_decode($param['biz_content'], true);
|
|
$detail = $authInfo['detail'];
|
|
$user_id = $detail['user_id'];
|
|
$data = [
|
|
'original_id' => $user_id,
|
|
'type' => 'aliapp',
|
|
'auth_value' => json_encode($detail),
|
|
'update_time' => time(),
|
|
];
|
|
$where = [
|
|
['apps_id', '=', $detail['auth_app_id']]
|
|
];
|
|
Db::name('cloud_order')->where($where)->update($data);
|
|
if (isset($param['status']) && $param['status'] == 'execute_auth') {
|
|
$cloudOrder = Db::name('cloud_order')->where($where)->field('site_id,ag_site_id')->find();
|
|
if ($cloudOrder) {
|
|
$this->setAlipayConfig($cloudOrder['site_id'], $cloudOrder['ag_site_id'], $detail);
|
|
} else if (isset($authInfo['notify_context']['trigger_context']['out_biz_no'])) { //小程序新注册授权
|
|
$out_biz_no = $authInfo['notify_context']['trigger_context']['out_biz_no'] ?? '';
|
|
if ($out_biz_no) {
|
|
$bw = [
|
|
'business_code' => $out_biz_no,
|
|
'app_type' => 'aliapp',
|
|
];
|
|
$applet = Db::name('applet_reg')->where($bw)->field('site_id,ag_site_id')->find();
|
|
if ($applet) {
|
|
$this->setAlipayConfig($applet['site_id'], $applet['ag_site_id'], $detail);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
echo 'success';
|
|
}
|
|
|
|
/***
|
|
* 用户小程序订购
|
|
*/
|
|
public function servicemarketOrderNotify($param)
|
|
{
|
|
$user_id = $param['merchant_pid'];
|
|
$site_id = '';
|
|
$ag_site_id = 1;
|
|
if (isset($param['isv_ticket'])) {
|
|
$reg = model('applet_reg')->getInfo(['business_code' => $param['isv_ticket'], 'app_type' => 'aliapp'], 'site_id,ag_site_id,contact_phone');
|
|
if ($reg) {
|
|
$site_id = $reg['site_id'];
|
|
$ag_site_id = $reg['ag_site_id'];
|
|
if (!isset($param['phone'])) {
|
|
$param['phone'] = $reg['contact_phone'];
|
|
}
|
|
}
|
|
$param['ag_site_id'] = $ag_site_id;
|
|
$this->upDateMinireg($param);
|
|
}
|
|
$data = [
|
|
'site_id' => $site_id,
|
|
'ag_site_id' => $ag_site_id,
|
|
'goods_name' => $param['title'],
|
|
'cloud_goods_id' => $param['item_code'],
|
|
'order_id' => $param['commodity_order_id'],
|
|
'third_order_id' => $param['commodity_order_id'],
|
|
'original_id' => $user_id,
|
|
'type' => 'aliapp',
|
|
'pay_status' => 1,
|
|
'money' => $param['total_price'],
|
|
'contact_name' => $param['contactor'],
|
|
'mobile' => $param['phone'],
|
|
'raw_data' => json_encode($param),
|
|
'update_time' => time(),
|
|
'apps_id' => $param['consumer_miniAppId'],
|
|
];
|
|
$where = [
|
|
'original_id' => $user_id,
|
|
'third_order_id' => $param['commodity_order_id'],
|
|
];
|
|
try {
|
|
if (!$site_id) {
|
|
unset($data['site_id']);
|
|
if ($data['money'] > 0) {
|
|
$data['is_try'] = 0;
|
|
} else {
|
|
$data['is_try'] = 1;
|
|
$data['expire_time'] = $param['period_day']??7;
|
|
}
|
|
$shopInfo = $this->createShop($data); //创建店铺
|
|
if ($shopInfo['data']['code'] == 0) {
|
|
$data['site_id'] = $shopInfo['data']['data'];
|
|
} else {
|
|
$data['site_id'] = Db::name('site')->where(['username' => $data['mobile']])->value('site_id');
|
|
}
|
|
}
|
|
$info = Db::name('cloud_order')->where($where)->find();
|
|
if ($info) {
|
|
Db::name('cloud_order')->where($where)->update($data);
|
|
} else {
|
|
$data['create_time'] = time();
|
|
Db::name('cloud_order')->insert($data);
|
|
}
|
|
echo 'success';
|
|
} catch (Exception $e) {
|
|
echo 'success';
|
|
}
|
|
}
|
|
|
|
|
|
/***
|
|
* 更新注册信息
|
|
* @param $param
|
|
* @return void
|
|
*/
|
|
public function upDateMinireg($param)
|
|
{
|
|
if (isset($param['isv_ticket'])) {
|
|
try {
|
|
$data['original_id'] = $param['merchant_pid'];
|
|
$data['appid'] = $param['consumer_miniAppId'];
|
|
$data['app_type'] = 'aliapp';
|
|
$data['create_time'] = strtotime($param['timestamp']);
|
|
$data['update_time'] = time();
|
|
$data['status'] = 'SUCCESS';
|
|
$data['reg_fee'] = model('website')->getValue(['site_id' => $param['ag_site_id']], 'appreg_rate');
|
|
model('applet_reg')->update($data, ['business_code' => $param['isv_ticket'], 'app_type' => 'aliapp']);
|
|
} catch (Exception $e) {
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
/***
|
|
* 设置站点授权信息
|
|
* @param $site_id
|
|
* @param $ag_site_id
|
|
* @param $detail
|
|
* @return int
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\DbException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
*/
|
|
public function setAlipayConfig($site_id, $ag_site_id = 0, $detail)
|
|
{
|
|
|
|
$paydata = [
|
|
'line_type' => 'auth',
|
|
'app_type' => 'aliapp',
|
|
'site_id' => $site_id,
|
|
'ag_site_id' => $ag_site_id,
|
|
'appid' => $detail['auth_app_id'],
|
|
'appsecret' => '',
|
|
'token' => '',
|
|
'app_name' => '',
|
|
'head_img' => '',
|
|
'qrcode' => '',
|
|
'account' => $detail['user_id'],
|
|
'alipay_public' => '',
|
|
'private_key' => '',
|
|
'app_auth_token' => $detail['app_auth_token'],
|
|
'app_refresh_token' => $detail['app_refresh_token'],
|
|
'app_original' => $detail['user_id'],
|
|
'original_values' => $detail,
|
|
];
|
|
if ($site_id) {
|
|
$minapp = new Config();
|
|
$minapp->setAlipayConfig($detail['auth_app_id'], $paydata, $site_id, $paydata['app_original']);
|
|
event('MiniappAuthInfo', $paydata);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
/***
|
|
* 云订单创建店铺
|
|
* @param $data
|
|
* @return array
|
|
*/
|
|
public function createShop($data)
|
|
{
|
|
//店铺信息
|
|
$shop_data = [
|
|
'site_name' => $data['contact_name'], //店铺名称
|
|
'contacts_name' => $data['contact_name'], //联系人
|
|
'contacts_mobile' => $data['mobile'], //联系电话
|
|
'agent_id' => $data['ag_site_id'], //所属代理
|
|
'group_id' => 1,
|
|
'expire_time' => $data['expire_time']??0,
|
|
'fee_commission' => 2,
|
|
'is_try' => $data['is_try'], //是否体验用户
|
|
];
|
|
$username = $data['mobile'] ?? $data['original_id'];
|
|
$mobile='';
|
|
if (preg_match("/^1[345789]\d{9}$/", $data['mobile'])) {
|
|
$_see_password =substr($data['mobile'], -6);
|
|
$mobile=$data['mobile'];
|
|
$password = data_md5($_see_password);
|
|
} else {
|
|
$_see_password ='888888';
|
|
$password = data_md5($_see_password);
|
|
}
|
|
$user_info = [
|
|
'username' => $username,
|
|
'password' => $password,
|
|
];
|
|
$site_model = new Site();
|
|
$result = $site_model->addSite($shop_data, $user_info, false);
|
|
if ($result['code'] == 0) {
|
|
$log = array(
|
|
"uid" => 0,
|
|
"username" => $username,
|
|
"site_id" => $data['ag_site_id'],
|
|
"url" => '',
|
|
"ip" => request()->ip(),
|
|
"data" => json_encode($shop_data),
|
|
"action_name" => '云市场自动注册店铺',
|
|
"create_time" => time(),
|
|
);
|
|
model("user_log")->add($log);
|
|
$user_info['password']=$_see_password;
|
|
$user_info['mobile']=$mobile;
|
|
event('AlipayServicemarketAddSite',$user_info);
|
|
}
|
|
return success('0', '注册成功', $result);
|
|
}
|
|
|
|
|
|
public function rsaCheck($param)
|
|
{
|
|
$payModel = new MinCode();
|
|
$res = $payModel->verifySgin($param);
|
|
return $res;
|
|
}
|
|
} |