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; } }