123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- <?php
- /**
- * reyun.php UTF-8
- * huosdk_v8_dev
- *
- * @date : 2019/4/23 15:19
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : chenbingling <cbl@huosdk.com>
- * @version : HUOSDK 8.0
- */
- namespace reyun\api;
- use huo\controller\request\Request;
- use huolib\constant\GameConst;
- use reyun\model\GameReyunModel;
- use think\Log;
- class reyun {
- public $reyun_conf
- = array(
- 'appid' => '', /* 热云应用唯一标识 32位的16进制 */
- 'appkey' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', /* 热云应用唯一标识 32位的16进制 */
- 'url' => 'http://log.reyun.com', /* 请求地址 */
- 'install' => '/receive/tkio/install', /* 统计用户首次打开应用方法 */
- 'startup' => '/receive/tkio/startup', /* 统计用户打开应用方法 */
- 'register' => '/receive/tkio/register', /* 统计用户注册方法 */
- 'login' => '/receive/tkio/loggedin', /* 统计用户登陆方法 */
- 'payment' => '/receive/tkio/payment', /* 统计用户充值方法 */
- 'event' => '/receive/tkio/event', /* 统计用户自定义事件方法 */
- 'profile' => '/receive/tkio/profile', /* 统计用户属性方法 */
- );
- /**
- * 自定义错误处理
- *
- * @param string $msg
- * @param string $level
- *
- */
- private function _error($msg, $level = 'error') {
- Log::write('line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'&msg='.$msg, $level);
- }
- public function __construct() {
- $_conf_file = CONF_PATH."extra/reyun/config.php";
- if (file_exists($_conf_file)) {
- $this->reyun_conf = include $_conf_file;
- }
- }
- /**
- * @param string $func
- * @param array $param
- *
- * @param string $who 账户ID
- *
- * @return bool 请求成功与失败
- */
- public function request($func, array $param, $who = '') {
- $_query_array['appid'] = $this->reyun_conf['appid'];
- $_context = $param;
- //$_context['_campaignid'] = '_default_';
- if (!empty($who)) {
- $_query_array['who'] = $who;
- }
- $_query_array['context'] = $_context;
- $_query_str = @json_encode($_query_array);
- $request_url = $this->reyun_conf['url'].$func;
- $_rs = Request::httpJsonpost($request_url, $_query_str);
- if (empty($_rs)) {
- Log::write(
- 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode(
- [$request_url, $_query_str]
- ).'&rs='.$_rs, Log::ERROR
- );
- return false;
- }
- $_json_array = @json_decode($_rs, true);
- if (empty($_json_array) || !is_array($_json_array) || !isset($_json_array['status'])) {
- Log::write(
- 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode(
- [$request_url, $_query_str]
- ).'&rs='.$_rs, Log::ERROR
- );
- return false;
- }
- if (0 != $_json_array['status']) {
- $_result = isset($_json_array['result']) ? json_encode($_json_array['result']) : '';
- $this->_error($_result);
- return false;
- }
- return true;
- }
- public function check($params = array()) {
- /* 获取appid */
- $_app_id = isset($params['app_id']) ? $params['app_id'] : 0;
- if (empty($_app_id)) {
- Log::write(
- 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode($params).'&rs='
- .json_encode($_app_id), Log::ERROR
- );
- return false;
- }
- $_reyun_conf = (new GameReyunModel())->getInfoByAppId($_app_id);
- if (empty($_reyun_conf)) {
- Log::write(
- 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode($params).'&rs='
- .json_encode($_reyun_conf), Log::ERROR
- );
- return false;
- }
- $this->reyun_conf['appid'] = get_val($_reyun_conf, 'reyun_app_id', '');
- return true;
- }
- /**
- * 用户首次打开应用
- *
- * @param array $params 请求参数
- *
- * @return bool
- */
- public function install($params = array()) {
- $_rs = $this->check($params);
- if (false === $_rs) {
- return false;
- }
- $_context['_campaignid'] = isset($params['agent_id']) ? $params['agent_id'] : '_default_';
- if (!empty($params['from']) && GameConst::GAME_ANDROID == $params['from']) {
- $_context['_deviceid'] = isset($params['device_id']) ? $params['device_id'] : 'unknown';
- $_context['_imei'] = isset($params['device_id']) ? $params['device_id'] : 'unknown';
- $_context['_idfa'] = 'unknown';
- $_context['_idfv'] = 'unknown';
- $_context['_androidid'] = $params['device_id'];
- $_context['_ryos'] = 'android';
- } else {
- $_context['_deviceid'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- $_context['_idfa'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- $_context['_idfv'] = isset($params['idfv']) ? $params['idfv'] : 'unknown';
- $_context['_imei'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- $_context['_androidid'] = 'unknown';
- $_context['_ryos'] = 'ios';
- }
- $_context['_ip'] = isset($params['ip']) ? $params['ip'] : 'unknown';
- $_context['_manufacturer'] = 'unknown';
- $_context['_ryosversion'] = 'unknown';
- if (!empty($params['deviceinfo'])) {
- $_device_array = explode('||', $params['deviceinfo']);
- if (isset($_device_array[0])) {
- $_context['_manufacturer'] = $_device_array[0];
- }
- if (isset($_device_array[1])) {
- $_context['_ryosversion'] = $_device_array[1];
- }
- }
- return $this->request($this->reyun_conf['install'], $_context);
- }
- /**
- * 统计用户打开应用方法
- * '/receive/tkio/startup'
- *
- * @param array $params 请求参数
- *
- * @return bool
- */
- public function startup($params = array()) {
- $_rs = $this->check($params);
- if (false === $_rs) {
- return false;
- }
- /* _tz 否 STRING 最长16默认:+8 时区
- _devicetype 否 STRING 64 设备类型
- _op 否 STRING 32 运营商
- _network 否 STRING 16 网络制式2G,3G,WIFI.
- _os 否 STRING 32 操作系统
- _resolution 否 STRING 16 分辨率
- */
- $_context['_campaignid'] = isset($params['agent_id']) ? $params['agent_id'] : '_default_';
- if (!empty($params['from']) && GameConst::GAME_ANDROID == $params['from']) {
- $_context['_deviceid'] = isset($params['device_id']) ? $params['device_id'] : 'unknown';
- $_context['_imei'] = isset($params['device_id']) ? $params['device_id'] : 'unknown';
- $_context['_idfa'] = 'unknown';
- $_context['_idfv'] = 'unknown';
- } else {
- $_context['_deviceid'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- $_context['_idfa'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- $_context['_idfv'] = isset($params['idfv']) ? $params['idfv'] : 'unknown';
- $_context['_imei'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- }
- $_context['_ip'] = isset($params['ip']) ? $params['ip'] : 'unknown';
- // $_context['_tz'] = '';
- // $_context['_devicetype'] = '';
- // $_context['_op'] = '';
- // $_context['_network'] = '';
- // $_context['_os'] = '';
- // $_context['_resolution'] = '';
- return $this->request($this->reyun_conf['startup'], $_context);
- }
- /**
- * 统计用户注册方法
- * '/receive/tkio/register'
- *
- * @param array $params 请求参数
- *
- * @return bool
- */
- public function register($params = array()) {
- $_rs = $this->check($params);
- if (false === $_rs) {
- Log::write(
- 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode($params).'&rs='
- .json_encode($_rs), Log::ERROR
- );
- return false;
- }
- if (empty($params['mem_id'])) {
- Log::write(
- 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode($params).'&msg=缺少玩家id',
- Log::ERROR
- );
- return false;
- }
- $_who = $params['mem_id'];
- $_context['_campaignid'] = isset($params['agent_id']) ? $params['agent_id'] : '_default_';
- if (!empty($params['from']) && GameConst::GAME_ANDROID == $params['from']) {
- $_context['_deviceid'] = isset($params['device_id']) ? $params['device_id'] : 'unknown';
- $_context['_imei'] = isset($params['device_id']) ? $params['device_id'] : 'unknown';
- $_context['_idfa'] = 'unknown';
- $_context['_idfv'] = 'unknown';
- } else {
- $_context['_deviceid'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- $_context['_idfa'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- $_context['_idfv'] = isset($params['idfv']) ? $params['idfv'] : 'unknown';
- $_context['_imei'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- }
- $_context['_ip'] = isset($params['ip']) ? $params['ip'] : 'unknown';
- return $this->request($this->reyun_conf['register'], $_context, $_who);
- }
- /**
- * 统计用户登陆方法
- * '/receive/tkio/login'
- *
- * @param array $params 请求参数
- *
- * @return bool
- */
- public function login($params = array()) {
- $_rs = $this->check($params);
- if (false === $_rs) {
- Log::write(
- 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode($params).'&rs='
- .json_encode($_rs), Log::ERROR
- );
- return false;
- }
- if (empty($params['mem_id'])) {
- Log::write(
- 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode($params).'&msg=缺少玩家id',
- Log::ERROR
- );
- return false;
- }
- $_who = $params['mem_id'];
- $_context['_campaignid'] = isset($params['agent_id']) ? $params['agent_id'] : '_default_';
- if (!empty($params['from']) && GameConst::GAME_ANDROID == $params['from']) {
- $_context['_deviceid'] = isset($params['device_id']) ? $params['device_id'] : 'unknown';
- $_context['_imei'] = isset($params['device_id']) ? $params['device_id'] : 'unknown';
- $_context['_idfa'] = 'unknown';
- $_context['_idfv'] = 'unknown';
- } else {
- $_context['_deviceid'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- $_context['_idfa'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- $_context['_idfv'] = isset($params['idfv']) ? $params['idfv'] : 'unknown';
- $_context['_imei'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- }
- $_context['_ip'] = isset($params['ip']) ? $params['ip'] : 'unknown';
- return $this->request($this->reyun_conf['login'], $_context, $_who);
- }
- /**
- * 统计用户充值方法
- * '/receive/tkio/payment'
- *
- * @param array $params 请求参数
- *
- * @return bool
- */
- public function payment($params = array()) {
- $_rs = $this->check($params);
- if (false === $_rs) {
- return false;
- }
- if (empty($params['mem_id'])) {
- return false;
- }
- if (empty($params['order_id'])) {
- return false;
- }
- $_who = $params['mem_id'];
- $_context['_campaignid'] = isset($params['agent_id']) ? $params['agent_id'] : '_default_';
- if (!empty($params['from']) && GameConst::GAME_ANDROID == $params['from']) {
- $_context['_deviceid'] = isset($params['device_id']) ? $params['device_id'] : 'unknown';
- $_context['_imei'] = isset($params['device_id']) ? $params['device_id'] : 'unknown';
- $_context['_idfa'] = 'unknown';
- $_context['_idfv'] = 'unknown';
- } else {
- $_context['_deviceid'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- $_context['_idfa'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- $_context['_idfv'] = isset($params['idfv']) ? $params['idfv'] : 'unknown';
- $_context['_imei'] = isset($params['idfa']) ? $params['idfa'] : 'unknown';
- }
- $_context['_ip'] = isset($params['ip']) ? $params['ip'] : 'unknown';
- $_context['_transactionid'] = $params['order_id'];
- $_context['_paymenttype'] = isset($params['payway']) ? $params['payway'] : 0.00;
- $_context['_currencytype'] = 'CNY'; /* 货币类型,按照国际标准组织ISO 4217中规范的3位字母,例如CNY人民币、USD美金等 */
- $_context['_currencyamount'] = isset($params['amount']) ? $params['amount'] : 0.00; /* 支付的真实货币的金额 */
- return $this->request($this->reyun_conf['payment'], $_context, $_who);
- }
- /**
- * 统计用户自定义事件方法
- * '/receive/tkio/event'
- *
- * @param array $params 请求参数
- *
- * @return bool
- */
- public function event($params = array()) {
- $_rs = $this->check($params);
- if (false === $_rs) {
- return false;
- }
- return true;
- }
- /**
- * 统计用户属性方法
- * '/receive/tkio/profile'
- *
- * @param array $params 请求参数
- *
- * @return bool
- */
- public function profile($params = array()) {
- $_rs = $this->check($params);
- if (false === $_rs) {
- return false;
- }
- return true;
- }
- }
|