Tous les produits
Search
Centre de documentation

Object Storage Service:Activer le paiement par demandeur à l'aide du SDK OSS pour PHP 2.0

Dernière mise à jour :Aug 18, 2026

Lorsque l'option de paiement par demandeur est activée pour un bucket, le demandeur prend en charge les frais liés aux requêtes et au trafic, tandis que le propriétaire du bucket ne paie que les coûts de stockage. Activez cette fonctionnalité pour un bucket afin de partager les données qu'il contient sans supporter les frais de requête et de trafic lorsque d'autres utilisateurs accèdent à votre bucket.

Notes d'utilisation

  • Les exemples de code présentés dans cette rubrique utilisent l'ID de région cn-hangzhou correspondant à la région Chine (Hangzhou). Par défaut, un endpoint public est utilisé pour accéder aux ressources stockées dans un bucket. Si vous souhaitez accéder aux ressources de ce bucket depuis d'autres services Alibaba Cloud situés dans la même région, utilisez un endpoint interne. Pour plus d'informations sur les régions et les endpoints OSS, consultez la section Régions et endpoints.

  • Pour activer le paiement par demandeur, vous devez disposer de l'autorisation oss:PutBucketRequestPayment. Pour consulter la configuration du paiement par demandeur, vous devez disposer de l'autorisation oss:GetBucketRequestPayment. Pour en savoir plus, reportez-vous à la rubrique Accorder une stratégie personnalisée.

Exemples

Activer le paiement par demandeur

L'exemple de code suivant montre comment activer le paiement par demandeur :

<?php

require_once __DIR__ . '/../vendor/autoload.php'; // Automaticically load objects and dependency libraries.

use AlibabaCloud\Oss\V2 as Oss;

// Specify command line parameters.
$optsdesc = [
    "region" => ['help' => The region in which the bucket is located.', 'required' => True],  // (Required) Specify the region in which the bucket is located. Example: oss-cn-hangzhou. 
    "endpoint" => ['help' => The domain names that other services can use to access OSS.', 'required' => False], // (Optional) Specify the endpoint that can be used by other services to access OSS. 
    "bucket" => ['help' => The name of the bucket, 'required' => True], // (Required) Specify the name of the bucket. 
];
$longopts = \array_map(function ($key) {
    return "$key:"; // Add a colon (:) to the end of each parameter to indicate that a value is required.
}, array_keys($optsdesc));

// Parse command line parameters.
$options = getopt("", $longopts); 

// Check whether the required parameters are configured.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // Specifies that the required parameters are not configured.
        exit(1); 
    }
}

// Obtain the values of the command line parameters.
$region = $options["region"]; // The region in which the bucket is located. 
$bucket = $options["bucket"]; // The name of the bucket. 

// Use environment variables to load the credential information (AccessKey ID and AccessKey secret).
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); 

// Use the default configurations of the SDK.
$cfg=Oss\Config::loadDefault(); // Load the default configurations of the SDK. 
$cfg->setCredentialsProvider($credentialsProvider); // Specify the credential provider. 
$cfg->setRegion($region); // Specify the region. 
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Specify the endpoint if an endpoint is provided. 
}

// Create an OSSClient instance.
$client = new Oss\Client($cfg); 

// Create a request to specify the payer of the request.
$request = new Oss\Models\PutBucketRequestPaymentRequest(
    $bucket,
    new Oss\Models\RequestPaymentConfiguration('Requester') 
);

// Use the putBucketRequestPayment method to specify the payer of the request.
$result = $client->putBucketRequestPayment($request); 

// Display the returned result.
printf(
    'status code:' . $result-> statusCode. PHP_EOL . // The HTTP response status code. 
    'request id:' . $result->requestId // The unique identifier of the request. 
);

Consulter la configuration du paiement par demandeur d'un bucket

L'exemple de code suivant montre comment consulter la configuration du paiement par demandeur d'un bucket :

<?php

require_once __DIR__ . '/../vendor/autoload.php'; // Automatically load objects and dependency libraries.

use AlibabaCloud\Oss\V2 as Oss;

// Specify command line parameters.
$optsdesc = [
    "region" => ['help' => The region in which the bucket is located.', 'required' => True], // (Required) Specify the region in which the bucket is located. Example: oss-cn-hangzhou. 
    "endpoint" => ['help' => The domain names that other services can use to access OSS.', 'required' => False], // (Optional) Specify the endpoint that can be used by other services to access OSS. 
    "bucket" => ['help' => The name of the bucket, 'required' => True], // (Required) Specify the name of the bucket. 
];
$longopts = \array_map(function ($key) {
    return "$key:"; // Add a colon (:) to the end of each parameter to indicate that a value is required.
}, array_keys($optsdesc));

// Parse command line parameters.
$options = getopt("", $longopts); 

// Check whether the required parameters are configured.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // Specifies that the required parameters are not configured.
        exit(1); 
    }
}

// Obtain the values of the command line parameters.
$region = $options["region"]; // The region in which the bucket is located. 
$bucket = $options["bucket"]; // The name of the bucket. 

// Use environment variables to load the credential information (AccessKey ID and AccessKey secret).
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); 

// Use the default configurations of the SDK.
$cfg=Oss\Config::loadDefault(); // Load the default configurations of the SDK. 
$cfg->setCredentialsProvider($credentialsProvider); // Specify the credential provider. 
$cfg->setRegion($region); // Specify the region. 
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Specify the endpoint if an endpoint is provided. 
}

// Create an OSSClient instance.
$client = new Oss\Client($cfg); 

// Create a request to query the pay-by-requester configurations of the bucket.
$request = new Oss\Models\GetBucketRequestPaymentRequest($bucket); 

// Use the getBucketRequestPayment method to query the pay-by-requester configurations of the bucket.
$result = $client->getBucketRequestPayment($request); 

// Display the returned result.
printf(

    'status code:' . $result-> statusCode. PHP_EOL . // The HTTP response status code. 
    'request id:' . $result-> requestId. PHP_EOL . // The unique identifier of the request. 
    'request payer:' . $result->requestPaymentConfiguration->payer // The payer of requests. Valid values: BucketOwner or Requester. 
);

Références

  • Pour consulter l'exemple de code complet permettant d'activer le paiement par demandeur, rendez-vous sur GitHub.

  • Pour plus d'informations sur l'opération API à appeler pour activer le paiement par demandeur, consultez la rubrique PutBucketRequestPayment.

  • Pour consulter l'exemple de code complet permettant de vérifier la configuration du paiement par demandeur d'un bucket, rendez-vous sur GitHub.

  • Pour plus d'informations sur l'opération API à appeler pour consulter la configuration du paiement par demandeur d'un bucket, consultez la rubrique GetBucketRequestPayment.