

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

PayPal è un sistema di pagamento che facilita i trasferimenti di denaro online tra le parti, come i trasferimenti tra clienti e fornitori online. Se sei un PayPal utente, il tuo account contiene dati sulle tue transazioni, come i pagatori, le date e lo stato. Puoi utilizzarli AWS Glue per trasferire dati PayPal da determinati AWS servizi o altre applicazioni supportate.

**Topics**
+ [AWS Glue supporto per PayPal](paypal-support.md)
+ [Policy contenenti le operazioni API per creare e utilizzare le connessioni](paypal-configuring-iam-permissions.md)
+ [Configurazione PayPal](paypal-configuring.md)
+ [Configurazione delle connessioni PayPal](paypal-configuring-connections.md)
+ [Lettura da PayPal entità](paypal-reading-from-entities.md)
+ [PayPal opzioni di connessione](paypal-connection-options.md)
+ [Limitazioni e note per il PayPal connettore](paypal-connector-limitations.md)

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

AWS Glue supporta PayPal quanto segue:

**Supportato come origine?**  
Sì. È possibile utilizzare i job AWS Glue ETL da PayPal cui interrogare i dati.

**Supportato come destinazione?**  
No.

**Versioni PayPal API supportate**  
Sono supportate le seguenti versioni PayPal API:
+ v1

# Policy contenenti le operazioni API per creare e utilizzare le connessioni
<a name="paypal-configuring-iam-permissions"></a>

La seguente policy di esempio descrive le autorizzazioni AWS IAM richieste per la creazione e l'utilizzo delle connessioni. Se si sta creando un nuovo ruolo, creare una policy che contenga quanto segue:

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

****  

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

------

In alternativa, se non desideri utilizzare il metodo precedente, utilizza le seguenti policy IAM gestite:
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)— Garantisce l'accesso alle risorse che AWS Glue i vari processi richiedono per l'esecuzione per conto dell'utente. Queste risorse includono AWS Glue Amazon S3, IAM, CloudWatch Logs e Amazon. EC2 Se segui la convenzione di denominazione delle risorse specificata in questa politica, AWS Glue i processi dispongono delle autorizzazioni richieste. Questa policy è in genere collegata ai ruoli specificati quando si definiscono crawler, processi ed endpoint di sviluppo.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)— Concede l'accesso completo alle AWS Glue risorse quando un'identità a cui è allegata la policy utilizza la AWS console di gestione. Se si segue la convenzione per la denominazione per le risorse specificate nella policy, gli utenti hanno la piena funzionalità della console. Questa policy è in genere associata agli utenti della AWS Glue console.

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

Prima di poter utilizzare AWS Glue per trasferire dati da PayPal, è necessario soddisfare i seguenti requisiti:

## Requisiti minimi
<a name="paypal-configuring-min-requirements"></a>

I requisiti minimi sono i seguenti:
+ Hai un PayPal account con le credenziali del cliente.
+ Il tuo PayPal account ha accesso all'API con una licenza valida.

Se soddisfi questi requisiti, sei pronto per connetterti AWS Glue al tuo PayPal account. Per le connessioni tipiche, non devi fare nient'altro PayPal.

# Configurazione delle connessioni PayPal
<a name="paypal-configuring-connections"></a>

PayPal supporta il tipo di concessione CLIENT CREDENTIALS per. OAuth2
+ Questo tipo di concessione è considerato OAuth 2.0 a 2 gambe in quanto viene utilizzato dai client per ottenere un token di accesso al di fuori del contesto di un utente. AWS Glue è in grado di utilizzare l'ID client e il client secret per autenticare i PayPal APIs servizi forniti dai servizi personalizzati definiti dall'utente.
+ Ogni servizio personalizzato è di proprietà di un utente che utilizza solo API e dispone di una serie di ruoli e autorizzazioni che autorizzano il servizio a eseguire azioni specifiche. Un token di accesso è associato a un singolo servizio personalizzato.
+ Questo tipo di concessione determina un token di accesso di breve durata e che può essere rinnovato chiamando nuovamente l'endpoint `/v2/oauth2/token`.
+ [Per la PayPal documentazione pubblica per la OAuth versione 2.0 con le credenziali del client, vedere Autenticazione.](https://developer.paypal.com/api/rest/authentication/)

Per configurare una PayPal connessione:

1. In AWS Secrets Manager, crea un segreto con i seguenti dettagli:

   1. Per le app connesse gestite dal cliente: il segreto deve contenere l'app connessa Consumer Secret con `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` come chiave.

   1. Nota: devi creare un segreto per le tue connessioni in AWS Glue.

1. In AWS Glue Glue Studio, crea una connessione in **Connessioni dati** seguendo i passaggi seguenti:

   1. Quando si seleziona un **tipo di connessione**, selezionare PayPal.

   1. Fornisci `INSTANCE_URL` l' PayPal istanza a cui desideri connetterti.

   1. Seleziona il ruolo AWS IAM che AWS Glue può assumere e dispone delle autorizzazioni per le seguenti azioni:

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

****  

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

------

   1. Seleziona quello `secretName` che desideri utilizzare per questa connessione per AWS Glue inserire i token.

   1. Selezionare le opzioni di rete se si desidera utilizzare la propria rete.

1. Concedi il permesso di lettura `secretName` al ruolo IAM associato al tuo AWS Glue lavoro.

## Ottenere le credenziali OAuth 2.0
<a name="paypal-getting-oauth-20-credentials"></a>

Per chiamare l'API Rest, occorre scambiare l'ID client e il segreto del client con un token di accesso. Per ulteriori informazioni, consulta Guida [introduttiva a PayPal REST APIs](https://developer.paypal.com/api/rest/).

# Lettura da PayPal entità
<a name="paypal-reading-from-entities"></a>

**Prerequisito**

Un PayPal oggetto da cui desideri leggere. È necessario il nome dell'oggetto, `transaction`.

**Entità supportate come origine**:


| Entità | Può essere filtrato | Supporta limite | Supporta Ordina per | Supporta Seleziona \$1 | Supporta il partizionamento | 
| --- | --- | --- | --- | --- | --- | 
| transaction | Sì  | Sì | No | Sì | Sì | 

**Esempio**:

```
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 dettagli dell'entità e del campo**:

Entità con metadati statici:

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

## Query di partizionamento
<a name="paypal-reading-partitioning-queries"></a>

Puoi fornire le opzioni Spark aggiuntive `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se desideri utilizzare la concorrenza in Spark. Con questi parametri, la query originale viene suddivisa in `NUM_PARTITIONS` query secondarie che possono essere eseguite contemporaneamente dalle attività Spark.
+ `PARTITION_FIELD`: il nome del campo da utilizzare per partizionare la query.
+ `LOWER_BOUND`: un valore limite inferiore **inclusivo** del campo di partizione scelto.

  Per il campo Datetime, accettiamo il valore in formato ISO.

  Esempi di valori validi:

  ```
  "2024-07-01T00:00:00.000Z"
  ```
+ `UPPER_BOUND`: un valore limite superiore **esclusivo** del campo di partizione scelto.
+ `NUM_PARTITIONS`: il numero di partizioni.

Il seguente campo è supportato per il partizionamento per entità:


| Nome dell'entità | Campi di partizionamento | Tipo di dati | 
| --- | --- | --- | 
| transaction | transaction\$1initiation\$1date | DateTime | 

Esempio:

```
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 opzioni di connessione
<a name="paypal-connection-options"></a>

Di seguito sono elencate le opzioni di connessione per PayPal:
+ `ENTITY_NAME`(String): (obbligatorio) utilizzato per la lettura. Il nome dell'oggetto in PayPal.
+ `API_VERSION`(String) - (Obbligatorio) Usato per la lettura. PayPal Versione dell'API Rest che desideri utilizzare.
+ `SELECTED_FIELDS`(List<String>): predefinito: vuoto (SELECT \$1). Utilizzato per la lettura. Colonne da selezionare per l'oggetto.
+ `FILTER_PREDICATE`(Stringa): predefinito: vuoto. Utilizzato per la lettura. Dev'essere in formato Spark SQL.
+ `QUERY`(Stringa): predefinito: vuoto. Utilizzato per la lettura. Query Spark SQL completa.
+ `PARTITION_FIELD`(Stringa): utilizzato per la lettura. Campo da utilizzare per partizionare la query.
+ `LOWER_BOUND`(Stringa): utilizzato per la lettura. Un valore limite inferiore inclusivo del campo di partizione scelto.
+ `UPPER_BOUND`(Stringa): utilizzato per la lettura. Un valore limite superiore esclusivo del campo di partizione scelto.
+ `NUM_PARTITIONS`(Numero intero): predefinito: 1. Utilizzato per la lettura. Numero di partizioni da leggere.

# Limitazioni e note per il PayPal connettore
<a name="paypal-connector-limitations"></a>

Di seguito sono riportate le limitazioni o le note relative al PayPal connettore:
+ La [documentazione PayPal sulle transazioni](https://developer.paypal.com/docs/api/transaction-search/v1/#search_get) indica che sono necessarie un massimo di tre ore prima che le transazioni eseguite vengano visualizzate nella chiamata delle transazioni dell'elenco. Tuttavia, è stato osservato che richiede più tempo a seconda del [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`Ecco il periodo di tempo fino al quale i dati saranno disponibili da. APIs
+ Se `last_refreshed_datetime` è inferiore al `end_date` richiesto, `end_date` diventa uguale a `last_refreshed_datetime` in quanto abbiamo solo dati fino a quel momento.
+ Il campo `transaction_initiation_date` è un filtro obbligatorio da fornire per l'entità `transaction` e l'intervallo di date [massimo supportato](https://developer.paypal.com/docs/transaction-search/#:~:text=The%20maximum%20supported%20date%20range%20is%2031%20days.) per questo campo è 31 giorni.
+ Quando si chiama la richiesta API dell'entità `transaction` con filtri (parametri di query) diversi dal campo `transaction_initiation_date`, si prevede che il valore del campo [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.) non verrà recuperato nella risposta.