# Achats depuis les messages in-app iOS

Pour permettre à vos utilisateurs d'effectuer des achats directement depuis les messages in-app affichés dans votre application iOS, vous pouvez implémenter la solution prête à l'emploi pour vos Rich Media et ajouter des callbacks pour obtenir plus d'informations sur les achats in-app.

<Aside>
Disponible pour la **version 6.4.5 du SDK iOS et les versions ultérieures**.
</Aside>

## Implémentation JavaScript pour les Rich Media

Pour implémenter les achats in-app dans vos Rich Media, utilisez un simple **appel de fonction JavaScript** :

```javascript
pushwooshImpl.makePurchaseWithIdentifier("Premium"); // identifiant de produit spécifié dans les informations de votre produit sur l'App Store
```

## Méthodes AppDelegate pour les callbacks

Si vous avez besoin que des callbacks soient exécutés lors d'un achat, implémentez le protocole **PWPurchaseDelegate** comme suit :

1\. Faites en sorte que l'AppDelegate de votre projet se conforme au protocole PWPurchaseDelegate :

```objective-c
@interface AppDelegate : PWAppDelegate <PushNotificationDelegate, PWPurchaseDelegate>
```

2\. Implémentez les méthodes de PWPurchaseDelegate dans votre AppDelegate :

```objective-c
#pragma mark - Purchase delegate methods
- (void) onPWInAppPurchaseHelperPaymentComplete:(NSString*) identifier {
    NSLog(@“Délégué d'achat personnalisé -- paiement terminé pour l'identifiant : %@“, identifier);
}
-(void)onPWInAppPurchaseHelperProducts:(NSArray<SKProduct *>* _Nullable)products {
    NSLog(@“Délégué d'achat personnalisé -- liste des produits récupérée”);
}
-(void)onPWInAppPurchaseHelperPaymentFailedProductIdentifier:(NSString* _Nullable)identifier error:(NSError* _Nullable)error {
    NSLog(@“Délégué d'achat personnalisé -- échec du paiement avec l'identifiant %@ et l'erreur %@“, identifier, error.description);
}
```

### Liste des méthodes PWPurchaseDelegate disponibles

#### Liste des produits

```objective-c
@protocol PWPurchaseDelegate <NSObject>
// Informations détaillées sur la liste des produits dans votre application 
-(void)onPWInAppPurchaseHelperProducts:(NSArray<SKProduct *>* _Nullable)products;
@end
```

#### Transaction réussie

```objective-c
@protocol PWPurchaseDelegate &#x3C;NSObject>
// Une transaction traitée avec succès 
<strong>-(void)onPWInAppPurchaseHelperPaymentComplete:(NSString* _Nullable)identifier;
</strong>
@end
```

#### Transaction échouée

```objective-c
@protocol PWPurchaseDelegate &#x3C;NSObject>
<strong>// Une transaction échouée 
</strong>-(void)onPWInAppPurchaseHelperPaymentFailedProductIdentifier:(NSString* _Nullable)identifier error:(NSError* _Nullable)error;
@end
```

#### Promu depuis l'App Store

```objective-c
@protocol PWPurchaseDelegate <NSObject>
// Un achat in-app est initié depuis l'App Store, et la transaction se poursuit dans votre application.
-(void)onPWInAppPurchaseHelperCallPromotedPurchase:(NSString* _Nullable)identifier;
@end
```

#### Échec de la restauration des transactions terminées

```objective-c
@protocol PWPurchaseDelegate <NSObject>
// Une erreur s'est produite lors de la restauration des transactions
-(void)onPWInAppPurchaseHelperRestoreCompletedTransactionsFailed:(NSError * _Nullable)error;
@end
```

<Aside type="note">
Si vos besoins ne sont pas couverts par les méthodes spécifiées dans ce guide, veuillez contacter notre [équipe de support client](https://help.pushwoosh.com/hc/en-us/requests/new?utm_content=pwwebsite&utm_term=footer&utm_campaign=support), et nous serons heureux de vous fournir des conseils supplémentaires.
</Aside>