Hello I needed to replace an existing payments profile with another and I couldn't do it. can you help me.
ERROR
API error with message: '{
"message": "Request contains an invalid argument.",
"code": 3,
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "
type.googleapis.com\/google.ads.googleads.v15.errors.GoogleAdsFailure",
"errors": [
{
"errorCode": {
"billingSetupError": "NO_SIGNUP_PERMISSION"
},
"message": "The customer does not have permission to signup for billing or does not have permission to use a given payments profile ID."
}
],
}
]
}'.
CODE:
?php
require 'vendor/autoload.php';
use Google\Ads\GoogleAds\Lib\V15\GoogleAdsClientBuilder;
use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder;
use Google\Ads\GoogleAds\Lib\V15\GoogleAdsException;
use Google\Ads\GoogleAds\V15\Resources\BillingSetup;
use Google\Ads\GoogleAds\V15\Resources\BillingSetup\PaymentsAccountInfo;
use Google\Ads\GoogleAds\V15\Services\BillingSetupOperation;
use Google\ApiCore\ApiException;
function createBillingSetup($customerId) {
$developer_token = 'xxx';
$client_id = 'xxxxxx';
$client_secret = 'xxxxx';
$refresh_token = 'xxxxxx';
$customer_id = 'xxxxx';
$manager_customer_id = 'xxxxxx'; // Yönetici müşteri kimliği
$googleAdsClient = (new GoogleAdsClientBuilder())
->withDeveloperToken($developer_token)
->withOAuth2Credential(
(new OAuth2TokenBuilder())
->withClientId($client_id)
->withClientSecret($client_secret)
->withRefreshToken($refresh_token)
->build()
)
->withLoginCustomerId($manager_customer_id)
->build();
$start_date_time = date('Y-m-d\TH:i:sP'); // ISO 8601 formatında şimdiki zaman
try {
$paymentsAccountInfo = new PaymentsAccountInfo([
'payments_account_name' => 'xxxx',
'payments_profile_id' => 'xxxx-xxxx-xxxx'
]);
$billingSetup = new BillingSetup([
'payments_account_info' => $paymentsAccountInfo
]);
$billingSetup->setPaymentsAccountInfo($paymentsAccountInfo);
$billingSetup->setStartDateTime($start_date_time);
$billingSetupOperation = new BillingSetupOperation();
$billingSetupOperation->setCreate($billingSetup);
$billingSetupServiceClient = $googleAdsClient->getBillingSetupServiceClient();
$response = $billingSetupServiceClient->mutateBillingSetup($customer_id, $billingSetupOperation);
printf("Created Billing Setup with resource name: '%s'.\n", $response->getResult()->getResourceName());
} catch (GoogleAdsException $googleAdsException) {
foreach ($googleAdsException->getGoogleAdsFailure()->getErrors() as $error) {
printf("Error with message: '%s'.\n", $error->getMessage());
}
} catch (ApiException $apiException) {
printf("API error with message: '%s'.\n", $apiException->getMessage());
}
}
// Örnek kullanım:
createBillingSetup('xxxxxxx');
?>