Octroyer des produits gratuits
Utilisez cette méthode dans l’API d’achat du Microsoft Store pour accorder une application ou un module complémentaire gratuit (également appelé produit in-app ou IAP) à un utilisateur donné.
Actuellement, vous ne pouvez accorder que des produits gratuits. Si votre service tente d’utiliser cette méthode pour accorder un produit qui n’est pas gratuit, cette méthode retourne une erreur.
Prérequis
Pour utiliser cette méthode, vous aurez besoin des éléments suivants :
- Jeton d’accès Azure AD qui a la valeur
https://onestore.microsoft.com
de l’URI d’audience . - Clé d’ID du Microsoft Store qui représente l’identité de l’utilisateur pour lequel vous souhaitez accorder un produit gratuit.
Pour plus d’informations, consultez Gérer les droits de produit à partir d’un service.
Requête
Syntaxe de la requête
Méthode | URI de demande |
---|---|
POST | https://purchase.mp.microsoft.com/v6.0/purchases/grant |
En-tête de requête
En-tête | Type | Description |
---|---|---|
Autorisation | string | Obligatoire. Jeton d’accès Azure AD au format porteur<jeton>. |
Host | string | Doit être défini sur la valeur purchase.mp.microsoft.com. |
Longueur-contenu | nombre | Longueur du corps de la demande. |
Content-Type | string | Spécifie le type de demande et de réponse. Actuellement, la seule valeur prise en charge est application/json. |
Corps de la demande
Paramètre | Type | Description | Obligatoire |
---|---|---|---|
availabilityId | string | ID de disponibilité du produit à accorder à partir du catalogue du Microsoft Store. | Oui |
b2bKey | string | Clé d’ID du Microsoft Store qui représente l’identité de l’utilisateur pour lequel vous souhaitez accorder un produit. | Oui |
devOfferId | string | ID d’offre spécifié par le développeur qui apparaîtra dans l’élément collection après l’achat. | |
langage | string | Langue de l’utilisateur. | Oui |
market | string | Le marché de l’utilisateur. | Oui |
orderId | guid | GUID généré pour l’ordre. Cette valeur est unique pour l’utilisateur, mais elle n’est pas nécessaire pour être unique dans toutes les commandes. | Oui |
productId | string | ID store du produit dans le catalogue Microsoft Store. Un exemple d’ID Store pour un produit est 9NBLGGH42CFD. | Oui |
quantité | int | Quantité à acheter. Actuellement, la seule valeur prise en charge est 1. Si cet argument n'est pas spécifié, la valeur par défaut est 1. | Non |
skuId | string | ID store de la référence SKU du produit dans le catalogue du Microsoft Store. Un exemple d’ID store pour une référence SKU est 0010. | Oui |
Exemple de requête
POST https://purchase.mp.microsoft.com/v6.0/purchases/grant HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJK……
Content-Length: 1863
Content-Type: application/json
{
"b2bKey" : "eyJ0eXAiOiJK……",
"availabilityId" : "9RT7C09D5J3W",
"productId" : "9NBLGGH5WVP6",
"skuId" : "0010",
"language" : "en-us",
"market" : "us",
"orderId" : "3eea1529-611e-4aee-915c-345494e4ee76",
}
Response
Corps de réponse
Paramètre | Type | Description | Obligatoire |
---|---|---|---|
clientContext | ClientContextV6 | Informations contextuelles du client pour cette commande. Cette opération est affectée à la valeur clientID à partir du jeton Azure AD. | Oui |
createdtime | datetimeoffset | Heure de création de l’ordre. | Oui |
currencyCode | string | Code monétaire pour totalAmount et totalTaxAmount. N/A pour les éléments gratuits. | Oui |
friendlyName | string | Nom convivial de la commande. N/A pour les commandes effectuées à l’aide de l’API d’achat du Microsoft Store. | Oui |
isPIRequired | booléen | Indique si un instrument de paiement (PI) est requis dans le cadre du bon de commande. | Oui |
langage | string | ID de langue de l’ordre (par exemple, « en »). | Oui |
market | string | ID de marché de la commande (par exemple, « US »). | Oui |
orderId | string | ID qui identifie l’ordre d’un utilisateur particulier. | Oui |
orderLineItems | list<OrderLineItemV6> | Liste des éléments de ligne de la commande. En règle générale, il y a 1 élément de ligne par commande. | Oui |
orderState | string | État de l’ordre. Les états valides sont La modification, la vérification, l’attente, l’achat, le remboursement, le débit facturé et l’annulation. | Oui |
orderValidityEndTime | string | La dernière fois que la tarification de la commande est valide avant son envoi. N/A pour les applications gratuites. | Oui |
orderValidityStartTime | string | La première fois que la tarification de la commande est valide avant son envoi. N/A pour les applications gratuites. | Oui |
acheteur | IdentityV6 | Objet qui décrit l’identité de l’acheteur. | Oui |
totalAmount | decimal | Montant total de l’achat de tous les articles de la commande, y compris la taxe. | Oui |
totalAmountBeforeTax | decimal | Montant total de l’achat de tous les articles dans la commande avant taxe. | Oui |
totalChargedToCsvTopOffPI | decimal | Si vous utilisez un instrument de paiement distinct et une valeur stockée (CSV), le montant facturé au format CSV. | Oui |
totalTaxAmount | decimal | Montant total de la taxe pour tous les articles de ligne. | Oui |
L’objet ClientContext contient les paramètres suivants.
Paramètre | Type | Description | Obligatoire |
---|---|---|---|
client | string | ID client qui a créé la commande. | Non |
L’objet OrderLineItemV6 contient les paramètres suivants.
Paramètre | Type | Description | Obligatoire |
---|---|---|---|
agent | IdentityV6 | Agent qui a modifié l’élément de ligne pour la dernière fois. Pour plus d’informations sur cet objet, consultez le tableau ci-dessous. | Non |
availabilityId | string | ID de disponibilité du produit à acheter dans le catalogue du Microsoft Store. | Oui |
bénéficiaire | IdentityV6 | Identité du bénéficiaire de la commande. | Non |
billingState | string | État de facturation de la commande. Cette valeur est facturée lorsque vous avez terminé. | Non |
campaignId | string | ID de campagne pour cette commande. | Non |
currencyCode | string | Code monétaire utilisé pour les détails du prix. | Oui |
description | string | Description localisée de l’élément de ligne. | Oui |
devofferId | string | ID de l’offre pour l’ordre particulier, le cas échéant. | Non |
fulfillmentDate | datetimeoffset | Date à laquelle l’exécution s’est produite. | Non |
fulfillmentState | string | État de l’exécution de cet élément. Cette valeur est définie sur Remplie une fois terminée. | Non |
isPIRequired | booléen | Indique si un instrument de paiement est requis pour cet élément de ligne. | Oui |
isTaxIncluded | booléen | Indique si la taxe est incluse dans les détails de tarification de l’article. | Oui |
legacyBillingOrderId | string | ID de facturation hérité. | Non |
lineItemId | string | ID d’élément de ligne de l’élément dans cet ordre. | Oui |
listPrice | decimal | Prix de liste de l’article dans cet ordre. | Oui |
productId | string | ID store du produit qui représente l’élément de ligne dans le catalogue microsoft Store. Un exemple d’ID Store pour un produit est 9NBLGGH42CFD. | Oui |
productType | string | Type du produit. Les valeurs prises en charge sont Durable, Application et UnmanagedConsumable. | Oui |
quantité | int | Quantité de l’élément commandé. | Oui |
retailPrice | decimal | Prix de vente au détail de l’article commandé. | Oui |
revenueRecognitionState | string | État de reconnaissance des revenus. | Oui |
skuId | string | ID store pour la référence SKU de l’élément de ligne dans le catalogue du Microsoft Store. Un exemple d’ID store pour une référence SKU est 0010. | Oui |
taxAmount | decimal | Montant de la taxe pour l’élément de ligne. | Oui |
taxType | string | Type de taxe pour les taxes applicables. | Oui |
Titre | string | Titre localisé de l’élément de ligne. | Oui |
totalAmount | decimal | Montant total de l’achat de l’article de ligne, y compris la taxe. | Oui |
L’objet IdentityV6 contient les paramètres suivants.
Paramètre | Type | Description | Obligatoire |
---|---|---|---|
identityType | string | Contient la valeur « pub ». | Oui |
identityValue | string | Valeur de chaîne du publisherUserId à partir de la clé d’ID du Microsoft Store spécifiée. | Oui |
Exemple de réponse
Content-Length: 1203
Content-Type: application/json
MS-CorrelationId: fb2e69bc-f26a-4aab-a823-7586c19f5762
MS-RequestId: c1bc832c-f742-47e4-a76c-cf061402f698
MS-CV: XjfuNWLQlEuxj6Mt.8
MS-ServerId: 030032362
Date: Tue, 13 Oct 2015 21:21:51 GMT
{
"clientContext": {
"client": "86b78998-d05a-487b-b380-6c738f6553ea"
},
"createdTime": "2015-10-13T21:21:51.1863494+00:00",
"currencyCode": "USD",
"isPIRequired": false,
"language": "en-us",
"market": "us",
"orderId": "3eea1529-611e-4aee-915c-345494e4ee76",
"orderLineItems": [{
"availabilityId": "9RT7C09D5J3W",
"beneficiary": {
"identityType": "pub",
"identityValue": "user1"
},
"billingState": "Charged",
"currencyCode": "USD",
"description": "Jewels, Jewels, Jewels - Consumable 2",
"fulfillmentDate": "2015-10-13T21:21:51.639478+00:00",
"fulfillmentState": "Fulfilled",
"isPIRequired": false,
"isTaxIncluded": true,
"lineItemId": "2814d758-3ee3-46b3-9671-4fb3bdae9ffe",
"listPrice": 0.0,
"payments": [],
"productId": "9NBLGGH5WVP6",
"productType": "UnmanagedConsumable",
"quantity": 1,
"retailPrice": 0.0,
"revenueRecognitionState": "None",
"skuId": "0010",
"taxAmount": 0.0,
"taxType": "NoApplicableTaxes",
"title": "Jewels, Jewels, Jewels - Consumable 2",
"totalAmount": 0.0
}],
"orderState": "Purchased",
"orderValidityEndTime": "2015-10-14T21:21:51.1863494+00:00",
"orderValidityStartTime": "2015-10-13T21:21:51.1863494+00:00",
"purchaser": {
"identityType": "pub",
"identityValue": "user1"
},
"testScenarios": "None",
"totalAmount": 0.0,
"totalTaxAmount": 0.0
}
Codes d’erreur
Code | Error | Code d’erreur interne | Description |
---|---|---|---|
401 | Non autorisé | AuthenticationTokenInvalid | Le jeton d’accès Azure AD n’est pas valide. Dans certains cas, les détails de ServiceError contiennent plus d’informations, par exemple lorsque le jeton a expiré ou que la revendication appid est manquante. |
401 | Non autorisé | PartnerAadTicketRequired | Un jeton d’accès Azure AD n’a pas été transmis au service dans l’en-tête d’autorisation. |
401 | Non autorisé | InconsistentClientId | La revendication clientId dans la clé d’ID du Microsoft Store dans le corps de la demande et la revendication appid dans le jeton d’accès Azure AD dans l’en-tête d’autorisation ne correspondent pas. |
400 | BadRequest | InvalidParameter | Les détails contiennent des informations concernant le corps de la requête et les champs qui ont une valeur non valide. |