| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 | 
							- <?php
 
- /**
 
-  * Quhulian.php  UTF-8
 
-  * huosdk_mini_program
 
-  *
 
-  * @date    : 2019/3/21 13:56
 
-  *
 
-  * @license 这不是一个自由软件,未经授权不许任何使用和传播。
 
-  * @author  : chenbingling <cbl@huosdk.com>
 
-  * @version : HUOSDK 8.0
 
-  */
 
- namespace huomp\controller\cpa_reversal;
 
- use huo\controller\common\Base;
 
- use huolib\constant\MemConst;
 
- use huolib\tool\StrUtils;
 
- use huomp\model\agent\AgentAdsCfgModel;
 
- use huomp\model\log\LogAdsQuhulianModel;
 
- use think\Log;
 
- class Quhulian extends Base {
 
-     private $url = '';   //异步地址
 
-     private $key = '';   //密钥
 
-     /***
 
-      * 趣互联异步通知
 
-      *
 
-      * @param $data
 
-      *
 
-      * @return bool
 
-      */
 
-     public function QuhulianNotify($data) {
 
-         if (MemConst::MEMBER_OLD == $data['status']) {
 
-             return $this->insertLog($data);
 
-         }
 
-         if (empty($data['openid_m']) || empty($data['device_id'])) {
 
-             return true;
 
-         }
 
-         if (empty($data['agent_id'])) {
 
-             Log::write(
 
-                 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode($data).'&msg=缺少渠道参数',
 
-                 Log::ERROR
 
-             );
 
-             return false;
 
-         }
 
-         $_rs = $this->getAgentCfg($data['agent_id']);
 
-         if (false == $_rs) {
 
-             Log::write(
 
-                 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode($data).'&rs='
 
-                 .json_encode($_rs).'&msg=缺少渠道参数', Log::ERROR
 
-             );
 
-             return false;
 
-         }
 
-         $_param = $this->setParam($data);
 
-         $_i = 0;
 
-         $_return = false;
 
-         while (1) {
 
-             $_i++;
 
-             $_rs = $this->curlBack($this->url, $_param);
 
-             if ($_rs > 0) {
 
-                 $_return = true;
 
-                 $this->insertLog($data);
 
-                 break;
 
-             } else {
 
-                 sleep(1);
 
-             }
 
-             if ($_i == 3) {
 
-                 break;
 
-             }
 
-         }
 
-         return $_return;
 
-     }
 
-     /**
 
-      * 插入记录
 
-      *
 
-      * @param $data
 
-      *
 
-      * @return bool
 
-      */
 
-     public function insertLog($data) {
 
-         $_data = [
 
-             'mp_id'     => get_val($data, 'mp_id'),
 
-             'openid'    => get_val($data, 'openid'),
 
-             'openid_m'  => get_val($data, 'openid_m'),
 
-             'device_id' => get_val($data, 'device_id'),
 
-             'mem_id'    => get_val($data, 'mem_id', 0),
 
-             'status'    => get_val($data, 'status', 1),
 
-         ];
 
-         $_rs = (new LogAdsQuhulianModel())->addData($_data);
 
-         if (false == $_rs) {
 
-             Log::write(
 
-                 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode([$data, $_data]).'&rs='
 
-                 .json_encode($_rs), Log::ERROR
 
-             );
 
-         }
 
-         return $_rs;
 
-     }
 
-     /**
 
-      * 获取配置信息
 
-      *
 
-      * @param $agent_id
 
-      *
 
-      * @return bool
 
-      */
 
-     public function getAgentCfg($agent_id) {
 
-         $_cfg = (new AgentAdsCfgModel())->getInfoByAgentId($agent_id);
 
-         if (empty($_cfg)) {
 
-             return false;
 
-         }
 
-         if (empty($_cfg['back_url']) || empty($_cfg['key'])) {
 
-             return false;
 
-         }
 
-         $this->url = $_cfg['back_url'];
 
-         $this->key = $_cfg['key'];
 
-         return true;
 
-     }
 
-     /**
 
-      * 设置回调参数
 
-      *
 
-      * @param array $data
 
-      *
 
-      * @return bool|string
 
-      */
 
-     public function setParam($data = []) {
 
-         $_rq_data['openid_m'] = get_val($data, 'openid_m');
 
-         $_rq_data['openid_x'] = get_val($data, 'openid');
 
-         $_rq_data['appid'] = get_val($data, 'mp_id');
 
-         $_rq_data['device_id'] = get_val($data, 'device_id');
 
-         $_param = StrUtils::argSort($_rq_data);
 
-         $_sign_str = StrUtils::createLinkString($_param);
 
-         $_sign = strtoupper(md5($_sign_str."&key=".$this->key));
 
-         $_rq_data['sign'] = $_sign;
 
-         return $_sign_str."&sign=".$_sign;
 
-     }
 
-     /**
 
-      * 回调请求函数
 
-      *
 
-      * @param $url    string 请求地址与端口
 
-      * @param $params string post数据
 
-      *
 
-      * @return int 请求结果
 
-      */
 
-     public static function curlBack($url, $params) {
 
-         $curl = curl_init(); //初始化curl
 
-         curl_setopt($curl, CURLOPT_URL, $url);
 
-         curl_setopt($curl, CURLOPT_HEADER, 0); // 过滤HTTP头
 
-         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
 
-         curl_setopt($curl, CURLOPT_POST, 1); // post传输数据
 
-         curl_setopt($curl, CURLOPT_POSTFIELDS, $params);// post传输数据
 
-         curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 3);//设置等待时间
 
-         //https 请求
 
-         if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
 
-             curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
 
-             curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
 
-         }
 
-         $header = array("Content-Type: application/x-www-form-urlencoded; charset=UTF-8");
 
-         curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
 
-         //https 请求
 
-         if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
 
-             curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
 
-             curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
 
-         }
 
-         $_rs = curl_exec($curl);
 
-         curl_close($curl);
 
-         if (isset($_rs['errno']) && 0 == $_rs['errno']) {
 
-             $result = 1;
 
-         } else {
 
-             Log::write(
 
-                 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode($params).'&rs='
 
-                 .json_encode($_rs), Log::ERROR
 
-             );
 
-             $result = 0;
 
-         }
 
-         return $result;
 
-     }
 
- }
 
 
  |