Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Sep 24, 2026

Lorsque l'option de paiement par le demandeur est activée pour un bucket, le demandeur s'acquitte des frais de requête et de trafic, tandis que le propriétaire du bucket ne prend en charge que les coûts de stockage. Activez cette option pour partager les données de votre bucket sans supporter les frais de requête et de trafic lors des accès externes.

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 d'un bucket. Si vous souhaitez accéder aux ressources du bucket via 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 le demandeur, vous devez disposer de l'autorisation oss:PutBucketRequestPayment. Pour consulter la configuration de cette option, l'autorisation oss:GetBucketRequestPayment est requise. Pour en savoir plus, reportez-vous à la rubrique Accorder une stratégie personnalisée.

Exemples

Activer le paiement par le demandeur

L'exemple de code suivant montre comment activer le paiement par le 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 le demandeur d'un bucket

L'exemple de code suivant montre comment consulter la configuration du paiement par le 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 le demandeur, rendez-vous sur GitHub.

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

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

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