$campaign_id = "";
$campaignService = $adWordsServices->get(sessionBuilder(), CampaignService::class);
$campaignCriterionService = $adWordsServices->get(sessionBuilder(), CampaignCriterionService::class);
// Create a campaign
$campaign = new Campaign();
$campaign->setName("New Campaign".' #' . uniqid()); //Set Campaign Name
$campaign->setAdvertisingChannelType(AdvertisingChannelType::DISPLAY);
//Budget Start
$budgetService = $adWordsServices->get(sessionBuilder(), BudgetService::class);
$budget = new Budget();
$budget->setName(' Budget #' . uniqid());
$budget->setIsExplicitlyShared(false);
$money = new Money();
$money->setMicroAmount((int)(500* 1000000));
$budget->setAmount($money);
$budget->setDeliveryMethod(BudgetBudgetDeliveryMethod::STANDARD);
$operations = [];
// Create a budget operation.
$operation = new BudgetOperation();
$operation->setOperand($budget);
$operation->setOperator(Operator::ADD);
$operations[] = $operation;
// Create the budget on the server.
$result = $budgetService->mutate($operations);
$budget = $result->getValue()[0];
//Budget End
// Set Budget to campaign
$campaign->setBudget(new Budget());
$campaign->getBudget()->setBudgetId($budget->getBudgetId());
// Bidding Strategy
$biddingStrategyConfiguration = new BiddingStrategyConfiguration();
$biddingStrategyConfiguration->setBiddingStrategyType(BiddingStrategyType::MANUAL_CPM);
$campaign->setBiddingStrategyConfiguration($biddingStrategyConfiguration);
//Pause Campaign
$campaign->setStatus(CampaignStatus::PAUSED);
// Create a campaign operation and add it to the operations list.
$operations = [];
$operation = new CampaignOperation();
$operation->setOperand($campaign);
$operation->setOperator(Operator::ADD);
$operations[] = $operation;
// Create the campaigns on the server
$resultCampaign = $campaignService->mutate($operations)->getValue()[0];
$campaign_id = $resultCampaign->getId();
$platform = new \Google\AdsApi\AdWords\v201809\cm\Platform();
$platform->setId('30002');
$criterion = new NegativeCampaignCriterion();
$criterion->setCampaignId($campaign_id);
$criterion->setCriterion($platform);
// Create a campaign criterion operation and add it to the operations list.
$operation = new CampaignCriterionOperation();
$operation->setOperator(Operator::ADD);
$operation->setOperand($criterion);
$operations = [$operation];
// Update campaign criteria on the server.
$results = $campaignCriterionService->mutate($operations);
return $result;