Browse Source

百度快应用补回传充值

zhuchengjie 3 years ago
parent
commit
0522400ddc
2 changed files with 112 additions and 0 deletions
  1. 24 0
      src/Models/Qapp/QappSendOrders.php
  2. 88 0
      src/Services/Report/QappBaiduReport.php

+ 24 - 0
src/Models/Qapp/QappSendOrders.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace General\Models\Qapp;
+
+use Illuminate\Database\Eloquent\Model;
+
+class QappSendOrders extends Model
+{
+    protected $table = 'qapp_send_orders';
+    protected $fillable = [
+        'send_order_id',
+        'account',
+        'channel_user_id',
+        'distribution_channel_id',
+        'report_version',
+        'report_type',
+        'report_rate',
+        'eligible_count',
+        'extra_config',
+        'platform',
+        'first_charge_template_id',
+        'second_charge_template_id'
+    ];
+}

+ 88 - 0
src/Services/Report/QappBaiduReport.php

@@ -0,0 +1,88 @@
+<?php
+
+namespace General\Services\Report;
+
+use General\Models\Order\Order;
+use General\Models\Qapp\QappSendOrders;
+use General\Models\Report\ReportUserBindRecord;
+
+/**
+ * 抖音数据上报
+ */
+class QappBaiduReport extends BaseReport
+{
+    public function __construct()
+    {
+        $this->register_event_type = 'register';
+        $this->charge_event_type = 'ec_buy';
+        $this->add_desk_event_type = 'activate';
+    }
+
+    public function getChargeQueryParams(ReportUserBindRecord $user, float $amount): array
+    {
+        //百度回传链接
+        $this->report_url = $user->link;
+
+        //替换a_type的值
+        $this->getReplaceUrl('a_type',$this->charge_event_type);
+
+        //替换a_value的值
+        $this->getReplaceUrl('a_value',$amount * 100);
+
+        //百度akey
+        $akey = $this->getBaiduAkey($user->uid);
+
+        $this->report_url .= '&sign=' . md5($this->report_url.$akey);
+
+        return  [];
+    }
+
+    /**
+     * 替换url中的操作类型和值
+     * @param $type
+     * @param $value
+     * @return void
+     */
+    protected function getReplaceUrl($type, $value)
+    {
+        //获取$type的值
+        $type_value = $this->matchItemInUrl($type,$this->report_url);
+
+        //替换$type的值
+        $this->report_url = str_replace($type.$type_value,$type.$value,$this->report_url);
+    }
+
+    /**
+     * 获取百度akey
+     * @param $uid
+     * @return mixed|string
+     */
+    protected function getBaiduAkey($uid)
+    {
+        //获取派单id
+        $send_order_id = Order::where('uid',$uid)->value('send_order_id');
+
+        //获取派单平台配置
+        $extra_config = QappSendOrders::where('send_order_id',$send_order_id)->value('extra_config');
+        if(isset($extra_config) && !empty($extra_config)){
+            $extra_config = json_decode($extra_config,true);
+            return isset($extra_config['baidu_akey']) ? $extra_config['baidu_akey'] : '';
+        }
+        return '';
+    }
+
+    /**
+     * 获取查询字符串的值
+     * @param string $item
+     * @param string $url
+     * @return mixed|string
+     */
+    protected function matchItemInUrl(string $item, string $url)
+    {
+        preg_match('/&?' . $item . '=([^&\s]+)&?/i', $url, $arr);
+        if ($arr) {
+            return $arr[1];
+        }
+        return '';
+    }
+}