BaiduReport.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace General\Services\Report;
  3. use General\Models\Report\BaiDuAdAccount;
  4. use General\Models\Report\ReportUserBindRecord;
  5. use GuzzleHttp\Client;
  6. /**
  7. * 百度数据上报
  8. */
  9. class BaiduReport extends BaseReport
  10. {
  11. public function __construct()
  12. {
  13. $this->charge_event_type = 19;
  14. $this->register_event_type = 3;
  15. $this->report_url = 'https://ocpc.baidu.com/ocpcapi/api/uploadConvertData';
  16. }
  17. private function findToken(int $adid)
  18. {
  19. return BaiDuAdAccount::find($adid);
  20. }
  21. public function getChargeQueryParams(ReportUserBindRecord $user, float $amount): array
  22. {
  23. return [
  24. 'token' => $this->findToken($user->adid),
  25. 'conversionTypes' => [
  26. 'logidUrl' => $user->link,
  27. 'newType' => $this->charge_event_type,
  28. ]
  29. ];
  30. }
  31. public function getRegisterQueryParams(ReportUserBindRecord $user): array
  32. {
  33. return [
  34. 'token' => $this->findToken($user->adid),
  35. 'conversionTypes' => [
  36. 'logidUrl' => $user->link,
  37. 'newType' => $this->register_event_type,
  38. ]
  39. ];
  40. }
  41. public function report(array $query_params)
  42. {
  43. $result = false;
  44. $content = '';
  45. try {
  46. $client = new Client(['timeout' => 4]);
  47. $response = $client->post($this->report_url, ['json' => $query_params]);
  48. $content = $response->getBody()->getContents();
  49. $status_code = $response->getStatusCode();
  50. if ($status_code == 200) {
  51. $result = true;
  52. } else {
  53. $result = false;
  54. }
  55. } catch (Exception $e) {
  56. myLog('baidu_report')->error($e->getMessage());
  57. } finally {
  58. return [
  59. 'result' => $result,
  60. 'content' => $content,
  61. ];
  62. }
  63. }
  64. }