

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Connexion à PayPal
<a name="connecting-to-data-paypal"></a>

PayPal est un système de paiement qui facilite les transferts d'argent en ligne entre les parties, tels que les transferts entre clients et fournisseurs en ligne. Si vous êtes un PayPal utilisateur, votre compte contient des données relatives à vos transactions, telles que leurs payeurs, leurs dates et leurs statuts. Vous pouvez l'utiliser AWS Glue pour transférer des données depuis certains AWS services ou PayPal vers d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour PayPal](paypal-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](paypal-configuring-iam-permissions.md)
+ [Configuration PayPal](paypal-configuring.md)
+ [Configuration des PayPal connexions](paypal-configuring-connections.md)
+ [Lecture à partir d' PayPal entités](paypal-reading-from-entities.md)
+ [PayPal options de connexion](paypal-connection-options.md)
+ [Limitations et remarques relatives au PayPal connecteur](paypal-connector-limitations.md)

# AWS Glue support pour PayPal
<a name="paypal-support"></a>

AWS Glue prend en charge PayPal les éléments suivants :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser des tâches AWS Glue ETL pour interroger des données à partir de PayPal.

**Prise en charge en tant que cible ?**  
Non.

**Versions PayPal d'API prises en charge**  
Les versions PayPal d'API suivantes sont prises en charge :
+ v1

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="paypal-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)— Accorde l'accès aux ressources dont AWS Glue les différents processus ont besoin pour s'exécuter en votre nom. Ces ressources incluent AWS Glue Amazon S3, IAM, CloudWatch Logs et Amazon EC2. Si vous suivez la convention de dénomination des ressources spécifiée dans cette politique, AWS Glue les processus disposent des autorisations requises. Cette politique est généralement attachée aux rôles spécifiés lorsque vous définissez les crawlers, les tâches et les points de terminaison de développement.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)— Accorde un accès complet aux AWS Glue ressources lorsqu'une identité à laquelle la politique est attachée utilise la console AWS de gestion. Si vous suivez la convention de dénomination pour les ressources spécifiées dans la politique, les utilisateurs bénéficient des capacités totales de la console. Cette politique s'applique généralement aux utilisateurs de la AWS Glue console.

# Configuration PayPal
<a name="paypal-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis PayPal, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="paypal-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Vous avez un PayPal compte avec des informations d'identification client.
+ Votre PayPal compte dispose d'un accès à l'API avec une licence valide.

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre PayPal compte. Pour les connexions classiques, vous n'avez rien d'autre à faire dans PayPal.

# Configuration des PayPal connexions
<a name="paypal-configuring-connections"></a>

PayPal prend en charge le type de subvention CLIENT CREDENTIALS pour OAuth2.
+ Ce type de subvention est considéré comme bidimensionnel OAuth 2.0 car il est utilisé par les clients pour obtenir un jeton d'accès en dehors du contexte d'un utilisateur. AWS Glue est capable d'utiliser l'ID client et le secret du client pour authentifier PayPal APIs ceux fournis par les services personnalisés que vous définissez.
+ Chaque service personnalisé appartient à un utilisateur régi uniquement par l’API, qui dispose d’un ensemble de rôles et d’autorisations autorisant le service à effectuer des actions spécifiques. Un jeton d’accès est associé à un seul service personnalisé.
+ Ce type d’autorisation donne lieu à un jeton d’accès de courte durée qui peut être renouvelé en appelant à nouveau le point de terminaison `/v2/oauth2/token`.
+ Pour la PayPal documentation publique de la OAuth version 2.0 avec les informations d'identification du client, voir [Authentification](https://developer.paypal.com/api/rest/authentication/).

Pour configurer une PayPal connexion :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir le secret du consommateur de l’application connectée avec `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` comme clé.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez un **type de connexion**, sélectionnez PayPal.

   1. Indiquez `INSTANCE_URL` l' PayPal instance à laquelle vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

## Obtenir des informations d'identification OAuth 2.0
<a name="paypal-getting-oauth-20-credentials"></a>

Pour appeler l’API Rest, vous devez échanger votre ID client et votre secret client contre un jeton d’accès. Pour plus d'informations, consultez [Commencer avec PayPal REST APIs](https://developer.paypal.com/api/rest/).

# Lecture à partir d' PayPal entités
<a name="paypal-reading-from-entities"></a>

**Prérequis**

Un PayPal objet que vous aimeriez lire. Vous aurez besoin du nom de l’objet, `transaction`.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| transaction | Oui | Oui | Non | Oui | Oui | 

**Exemple :**

```
paypal_read = glueContext.create_dynamic_frame.from_options(
    connection_type="paypal",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "transaction",
        "API_VERSION": "v1",
        "INSTANCE_URL": "https://api-m.paypal.com"
    }
```

**PayPal détails de l'entité et du champ** :

Entités avec métadonnées statiques :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/paypal-reading-from-entities.html)

## Requêtes de partitionnement
<a name="paypal-reading-partitioning-queries"></a>

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons la valeur au format ISO.

  Exemples de valeurs valides :

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Le champ suivant est pris en charge pour le partitionnement par entité :


| Nom de l'entité | Champs de partitionnement | Type de données | 
| --- | --- | --- | 
| transaction | transaction\$1initiation\$1date | DateTime | 

Exemple :

```
paypal_read = glueContext.create_dynamic_frame.from_options(
    connection_type="paypal",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "transaction",
        "API_VERSION": "v1",
        "PARTITION_FIELD": "transaction_initiation_date"
        "LOWER_BOUND": "2024-07-01T00:00:00.000Z"
        "UPPER_BOUND": "2024-07-02T00:00:00.000Z"
        "NUM_PARTITIONS": "10"
    }
```

# PayPal options de connexion
<a name="paypal-connection-options"></a>

Les options de connexion suivantes sont disponibles pour PayPal :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans PayPal.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. PayPal Version de l'API Rest que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.

# Limitations et remarques relatives au PayPal connecteur
<a name="paypal-connector-limitations"></a>

Les limitations ou remarques suivantes concernent le PayPal connecteur :
+ La [documentation PayPal des transactions](https://developer.paypal.com/docs/api/transaction-search/v1/#search_get) indique qu'il faut au maximum trois heures pour que les transactions exécutées apparaissent dans l'appel de transactions de liste. Cependant, il a été observé que cela prenait plus de temps que cela, en fonction de la valeur [https://developer.paypal.com/docs/api/transaction-search/v1/#search_get:~:text=last_refreshed_datetime](https://developer.paypal.com/docs/api/transaction-search/v1/#search_get:~:text=last_refreshed_datetime). `last_refreshed_datetime`Voici la durée pendant laquelle vous avez des données disponibles auprès du APIs.
+ Si la valeur `last_refreshed_datetime` est inférieure à la valeur `end_date` demandée, `end_date` devient égale à `last_refreshed_datetime`, car nous n’avons que des données jusqu’à ce moment-là.
+ Le champ `transaction_initiation_date` est un filtre obligatoire à fournir pour l’entité `transaction` et la plage de dates [maximale prise en charge](https://developer.paypal.com/docs/transaction-search/#:~:text=The%20maximum%20supported%20date%20range%20is%2031%20days.) pour ce champ est de 31 jours.
+ Lorsque vous appelez la demande d’API d’entité `transaction` avec des filtres (paramètres de requête) autres que le champ `transaction_initiation_date`, il est prévu que la valeur du champ [https://developer.paypal.com/docs/api/transaction-search/v1/#search_get:~:text=If%20you%20specify%20one%20or%20more%20optional%20query%20parameters%2C%20the%20ending_balance%20response%20field%20is%20empty.](https://developer.paypal.com/docs/api/transaction-search/v1/#search_get:~:text=If%20you%20specify%20one%20or%20more%20optional%20query%20parameters%2C%20the%20ending_balance%20response%20field%20is%20empty.) ne soit pas extraite dans la réponse.