Как изменить валюту (currency) перед созданием личного рекламного кабинета по API Facebook
Допустим ситуацию: у нас есть РУ-аккаунт (или другое гео), свежерег, соответственно, рекламный кабинет на нем еще не создан (не активирован). Если мы пройдем в управление рекламой или создадим кабинет по API (об этом расскажу позже), то будет создан кабинет с валютой, соответствующей вашему гео. В нашем случае валюта будет RUB, но мы хотим оплачивать в USD.Рассмотрим вариант изменения валюты платежей за рекламу по API. Еще раз предупрежу: данный способ изменения валюты подходит в том случае, когда у вас свежерег и рекламный кабинет не создан!
Напишем скрипт со следующей логикой:
1. Авторизуемся в фб с использованием прокси — получим access_token, session_cookies, user_id.
2. Изменим валюту (currency), используя полученные данные.
Разбирать отдельные куски кода не буду, он простой. Все понятно из комментариев.
<?php //Параметры подключения к proxy SOCKS/HTTP $proxy_sp = 'host:port'; $proxy_lp = 'login:password'; //Login и password аккаунта фб $login = 'email@example.com'; //email, user_id, phone $password = 'password'; //Устанавливаемая валюта $currency = 'USD'; //1. Авторизуемся в фб $auth_data = getAuthData($login, $password, $proxy_sp, $proxy_lp); //В ответе будет: session_key, uid, secret, access_token, machine_id, session_cookies, identifier //Разбираем session_cookies в строку foreach ($auth_data['session_cookies'] as $cookie) { if ($cookie['name'] == 'c_user') {$cookies['c_user'] = $cookie['value'];}; if ($cookie['name'] == 'xs') {$cookies['xs'] = $cookie['value'];}; if ($cookie['name'] == 'fr') {$cookies['fr'] = $cookie['value'];}; if ($cookie['name'] == 'datr') {$cookies['datr'] = $cookie['value'];}; } $cookies = 'c_user='.$cookies['c_user'].'; xs='.$cookies['xs'].'; fr='.$cookies['fr'].'; datr='.$cookies['datr']; //2. Устанавливаем валюту $set_currency = setCurrency($auth_data['access_token'], $auth_data['uid'], $currency, $cookies, $proxy_sp, $proxy_lp); //Выводим результат на экран echo "<pre>"; print_r($set_currency); echo "</pre>"; //Функция авторизации в фб и получения access_token, session_cookies, user_id function getAuthData($login, $password, $proxy_server_port, $proxy_login_password) { $data = array ( "access_token" => "438142079694454|fc0a7caa49b192f64f6f5a6d9643bb28", //Ads Manager Android "email" => $login, "format" => "json", "generate_session_cookies" => "1", "locale" => "ru_RU", "password" => $password ); return sendRequest('auth/login/', $data, 'POST', $proxy_server_port, $proxy_login_password); } //Функция изменения валюты function setCurrency($access_token, $user_id, $currency, $cookies, $proxy_server_port, $proxy_login_password) { $data = array ( "access_token" => $access_token, "fb_api_caller_class" => "RelayModern", "fb_api_req_friendly_name" => "usePaymentsCometUpdateCurrencyMutation", "variables" => '{"input":{"currency":"'.$currency.'","payment_type":"FBPAY_HUB","actor_id":"'.$user_id.'","client_mutation_id":"1"}}', "server_timestamps" => "true", "doc_id" => "2455682581215389", "cookies" => $cookies, ); return sendRequest('graphql', $data, 'POST', $proxy_server_port, $proxy_login_password); } //Функция отправки запросов к серверу фб с использованием прокси function sendRequest($edge, $data, $method, $proxy_server_port, $proxy_login_password, $useragent = 'Mozilla/5.0 (Linux; Android 9; SM-G960F Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Mobile Safari/537.36') { $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 200); curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); //или CURLPROXY_HTTP curl_setopt($curl, CURLOPT_PROXY, $proxy_server_port); curl_setopt($curl, CURLOPT_PROXYUSERPWD, $proxy_login_password); curl_setopt($curl, CURLOPT_USERAGENT, $useragent); if ($data['cookies']) { curl_setopt($curl, CURLOPT_COOKIE, $data['cookies']); } if ($method == 'GET') { curl_setopt($curl, CURLOPT_URL, 'https://graph.facebook.com/v8.0/'.$edge.'?'.http_build_query($data)); } elseif ($method == 'POST') { curl_setopt($curl, CURLOPT_URL, 'https://graph.facebook.com/v8.0/'.$edge.'/'); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); } return json_decode(curl_exec($curl), 1); curl_close($curl); } ?>В ответ получим следующий массив с информацией:
Array ( [data] => Array ( [update_user_currency] => Array ( [client_mutation_id] => 1 [currency_preferences] => Array ( [can_change_currency] => [last_change_time] => 1613214413 [next_change_time] => 1613473613 [user_currency] => USD ) [payments_error] => ) ) [extensions] => Array ( [server_metadata] => Array ( [request_start_time_ms] => 1613214413423 [time_at_flush_ms] => 1613214413704 ) [is_final] => 1 ) )Если, после выполнения скрипта зайти в аккаунте в настройки Facebook Pay (https://secure.facebook.com/facebook_pay/settings), то увидим установленную валюту для нашего аккаунта.

13.02.2021 г.
384
Комментарии ()
Написать комментарий
Статьи
Комментарии
27 ноября 2021, 21:05
24 февраля 2021, 12:17
14 февраля 2021, 20:36
14 февраля 2021, 20:12
14 февраля 2021, 20:04
14 февраля 2021, 19:50
14 февраля 2021, 19:50
14 февраля 2021, 20:04
Данный способ меняет валюту в соцакке. Сначала меняешь валюту в соцакке, потом идешь (впервые) в адсменеджер и активируется рекламный кабинет с валютой соцакка.
14 февраля 2021, 20:12
14 февраля 2021, 20:36