# Payment Process Explanation

# Merchant signature
```mermaid
sequenceDiagram

actor Client (Merchant Client)
participant Merchant Server
participant Vamospago Server

autonumber

Client (Merchant Client)->>Merchant Server: Select payment method and place order
Merchant Server->>Vamospago Server: Call order API to create order(used sha512 + https ensure data security)
    Vamospago Server->>Vamospago Server: check sign
    Vamospago Server-->>Merchant Server: Return checkout URL(used AES + https ensure data security)

    Merchant Server-->>Client (Merchant Client): Return Vamospago checkout

Client (Merchant Client)->>Vamospago Server: open Vamospago checkout
Vamospago Server->>Vamospago Server: check the sign
Vamospago Server-->>Client (Merchant Client): load Vamospago checkout 

```

# PSE HPP
```mermaid
sequenceDiagram

actor User
participant Merchant
participant Vamospago
participant PVS
participant Bank or Wallet

User->>Merchant: Selecr CVU Payment
Merchant->>Vamospago: Return checkout payment page(show CVU)
Vamospago-->>User: Return checkout payment page(show CVU)
User->>User: Copy CVU account number
User->>Bank or Wallet: Open Bank or Wallet transfer CVU

User->>User: Filled the bank reference no on checkout payment page
User->>Vamospago: submit the form

Bank or Wallet->>PVS: Callback bank reference no and amount
PVS->>Vamospago: Open Callback bank reference no and amount
Vamospago->>Vamospago: Mapping the merchant order by User's submit bank reference no and PVS callback bank reference no and valid amount

alt when User's submit bank reference no equal PVS callback bank reference no 
Vamospago->>Merchant: callback the order result
else when User's submit bank reference no no equal PVS callback bank reference no mapp
Vamospago->>Vamospago: waiting mapping
end

```

# PSE H2H Native Mode

```mermaid
sequenceDiagram

actor Client (Merchant Client)
participant Merchant Server
participant Vamospago Checkout
participant Vamospago Server
participant Wallet or Bank

autonumber
activate Client (Merchant Client)
Client (Merchant Client)->>Client (Merchant Client): Select payment method and fill payment info (phone, email)
Client (Merchant Client)->>Merchant Server: Submit payment method form info


activate Merchant Server
Merchant Server->>Vamospago Server: Call order API to create order
deactivate Merchant Server

    activate Vamospago Server
    Vamospago Server-->>Client (Merchant Client): Return order result and bank checkout page
    deactivate Vamospago Server
       
Client (Merchant Client)->>Vamospago Checkout: Open Vamospago checkout
    activate Vamospago Checkout
    Vamospago Checkout->>Vamospago Checkout: User selects payment method at checkout
    Vamospago Checkout->>Wallet or Bank APP: Payment request
        activate Wallet or Bank APP
        Wallet or Bank APP-->>Vamospago Checkout: Return payment result
        deactivate Wallet or Bank APP
    Vamospago Checkout->>Vamospago Checkout: Redirect to payment result page
    Vamospago Checkout-->>Client (Merchant Client): User clicks return to merchant direct URL
    deactivate Vamospago Checkout
deactivate Client (Merchant Client)

Wallet or Bank APP-->>Vamospago Server: Callback order result
    activate Vamospago Server
Vamospago Server -)Merchant Server: Notify webhook order result
activate Merchant Server
    Merchant Server-->>Vamospago Server: Response received successfully
    deactivate Vamospago Server
deactivate Merchant Server


Merchant Server -)Vamospago Server: Call order inquiry API to check order result
activate Merchant Server
    activate Vamospago Server
    Vamospago Server-->>Merchant Server: Response received successfully
    deactivate Vamospago Server
deactivate Merchant Server


```



# Native + Checkout Mode (Mexico)

```mermaid
sequenceDiagram

actor Client (Merchant Client)
participant Merchant Checkout
participant Vamospago Checkout
participant Merchant Server
participant Vamospago Server
participant Wallet or Bank APP

autonumber

Client (Merchant Client)->>Merchant Server: Select payment method and place order
activate Client (Merchant Client)
activate Merchant Server
Merchant Server->>Vamospago Server: Call order API to create order

deactivate Merchant Server
    activate Vamospago Server
    Vamospago Server-->>Merchant Server: Return order result, checkout URL and virtual account info
    deactivate Vamospago Server
    activate Merchant Server
alt Merchant's own checkout H2H
Merchant Server->>Client (Merchant Client): Return merchant checkout
    
Client (Merchant Client)->>Merchant Checkout: Open merchant checkout, copy virtual card number

else Merchant doesn't have checkout HPP
Merchant Server->>Client (Merchant Client): Return Vamospago checkout
deactivate Merchant Server
Client (Merchant Client)->>Vamospago Checkout: Open Vamospago checkout, copy virtual card number
end

    Client (Merchant Client)->>Wallet or Bank APP: User opens payment wallet or bank APP
    activate Wallet or Bank APP
    Wallet or Bank APP->>Wallet or Bank APP: Copy checkout card number, make transfer payment
    Wallet or Bank APP-->>Client (Merchant Client): Return payment result
    deactivate Wallet or Bank APP
deactivate Client (Merchant Client)
        Wallet or Bank APP-->>Vamospago Server: Notify payment result        
        activate Vamospago Server
        

Vamospago Server -)Merchant Server: Notify webhook order result
        deactivate Vamospago Server
activate Merchant Server
    activate Vamospago Server
    Merchant Server-->>Vamospago Server: Response received successfully
    deactivate Vamospago Server
deactivate Merchant Server


Merchant Server -)Vamospago Server: Call order inquiry API to check order result
activate Merchant Server
    activate Vamospago Server
    Vamospago Server-->>Merchant Server: Response received successfully
    deactivate Vamospago Server
deactivate Merchant Server
```

# Checkout Mode (Mexico Cash Payment)
```mermaid
sequenceDiagram

actor Client (Merchant Client)
participant Offline Store
participant Merchant Server
participant Vamospago Checkout
participant Vamospago Server

autonumber

Client (Merchant Client)->>Merchant Server: Select payment method and place order
activate Client (Merchant Client)
activate Merchant Server
Merchant Server->>Vamospago Server: Call order API to create order

deactivate Merchant Server
    activate Vamospago Server
    Vamospago Server-->>Client (Merchant Client): Return order result and checkout URL
    deactivate Vamospago Server
    
Client (Merchant Client)->>Vamospago Checkout: Open Vamospago checkout
activate Vamospago Checkout
Vamospago Checkout->>Vamospago Checkout: Download barcode
Vamospago Checkout-->>Client (Merchant Client): 
deactivate Vamospago Checkout
Client (Merchant Client)->>Offline Store: Show downloaded barcode or open Vamospago checkout
    activate Offline Store
    Offline Store->>Offline Store: Provide cash to clerk, clerk scans barcode with scanner
    Offline Store-->>Client (Merchant Client): Return payment result
    deactivate Offline Store

deactivate Client (Merchant Client)

Vamospago Server -)+Merchant Server: Notify webhook order result
activate Merchant Server
    activate Vamospago Server
    Merchant Server-->>-Vamospago Server: Response received successfully
    deactivate Vamospago Server
deactivate Merchant Server


Merchant Server -)Vamospago Server: Call order inquiry API to check order result
activate Merchant Server
    activate Vamospago Server
    Vamospago Server-->>Merchant Server: Response received successfully
    deactivate Vamospago Server
deactivate Merchant Server


```

#  Checkout Mode
```mermaid
sequenceDiagram

actor Client (Merchant Client)
participant Merchant Server
participant Vamospago Checkout
participant Vamospago Server
participant Wallet or Bank APP

autonumber

Client (Merchant Client)->>Merchant Server: Select payment method and place order
activate Client (Merchant Client)
activate Merchant Server
Merchant Server->>Vamospago Server: Call order API to create order

deactivate Merchant Server
    activate Vamospago Server
    Vamospago Server-->>Client (Merchant Client): Return order result and checkout URL
    deactivate Vamospago Server
    
Client (Merchant Client)->>Vamospago Checkout: Open Vamospago checkout
    activate Vamospago Checkout
    Vamospago Checkout->>Vamospago Checkout: User selects payment method at checkout
    Vamospago Checkout->>Wallet or Bank APP: Payment request
        activate Wallet or Bank APP
        Wallet or Bank APP-->>Vamospago Checkout: Return payment result
        deactivate Wallet or Bank APP
    Vamospago Checkout->>Vamospago Checkout: Redirect to payment result page
    Vamospago Checkout-->>Client (Merchant Client): User clicks return to merchant direct URL
    deactivate Vamospago Checkout
deactivate Client (Merchant Client)

Wallet or Bank APP-->>Vamospago Server: Callback order result
    activate Vamospago Server
Vamospago Server -)Merchant Server: Notify webhook order result
activate Merchant Server
    Merchant Server-->>Vamospago Server: Response received successfully
    deactivate Vamospago Server
deactivate Merchant Server


Merchant Server -)Vamospago Server: Call order inquiry API to check order result
activate Merchant Server
    activate Vamospago Server
    Vamospago Server-->>Merchant Server: Response received successfully
    deactivate Vamospago Server
deactivate Merchant Server


```

# TRANSIYA H2H Native Mode

```mermaid
sequenceDiagram

actor Client (Merchant Client)
participant Merchant Server
participant Vamospago Checkout
participant Vamospago Server
actor Client (Wallet or Bank APP)
participant Wallet or Bank

autonumber
activate Client (Merchant Client)
Client (Merchant Client)->>Client (Merchant Client): Select payment method and fill payment info (phone number)
Client (Merchant Client)->>Merchant Server: Submit payment method form info


activate Merchant Server
Merchant Server->>Vamospago Server: Call order API to create order
deactivate Merchant Server

    activate Vamospago Server
    Vamospago Server-->>Client (Merchant Client): Return order result and payment instruction URL
    deactivate Vamospago Server
    Vamospago Server--)Client (Wallet or Bank APP): Send payment notification message
    
Client (Merchant Client)->>Vamospago Checkout: Open payment instruction URL
    activate Vamospago Checkout
    Vamospago Checkout -->> Client (Merchant Client): Understand payment method
    deactivate Vamospago Checkout
deactivate Client (Merchant Client)

        Client (Wallet or Bank APP)-->>Client (Wallet or Bank APP): Open wallet or bank APP for payment
        activate Client (Wallet or Bank APP)
        Client (Wallet or Bank APP)->>Wallet or Bank: Open wallet or bank APP for payment
        deactivate Client (Wallet or Bank APP)
activate Wallet or Bank
Wallet or Bank-->>Vamospago Server: Open wallet or bank APP for payment
deactivate Wallet or Bank

activate Merchant Server
Vamospago Server -)Merchant Server: Notify webhook order result
    activate Vamospago Server
    Merchant Server-->>Vamospago Server: Response received successfully
    deactivate Vamospago Server


Merchant Server -)Vamospago Server: Call order inquiry API to check order result
activate Merchant Server
    activate Vamospago Server
    Vamospago Server-->>Merchant Server: Response received successfully
    deactivate Vamospago Server
deactivate Merchant Server

```


# Native + Checkout Mode (Brazil)
```mermaid
sequenceDiagram

actor Client (Merchant Client)
participant Merchant Checkout
participant Vamospago Checkout
participant Merchant Server
participant Vamospago Server
participant Wallet or Bank APP

autonumber

Client (Merchant Client)->>Merchant Server: Select payment method and place order
activate Client (Merchant Client)
activate Merchant Server
Merchant Server->>Vamospago Server: Call order API to create order

deactivate Merchant Server
    activate Vamospago Server
    Vamospago Server-->>Merchant Server: Return order result, checkout URL and QR code info
    deactivate Vamospago Server
    activate Merchant Server
alt Merchant's own checkout H2H
Merchant Server-->>Client (Merchant Client): Return merchant checkout
    
Client (Merchant Client)->>Merchant Checkout: Open merchant checkout
activate Merchant Checkout
Merchant Checkout-->>Client (Merchant Client): Copy QR code
deactivate Merchant Checkout

else Merchant doesn't have checkout HPP
Merchant Server-->>Client (Merchant Client): Return Vamospago checkout
deactivate Merchant Server
Client (Merchant Client)->>Vamospago Checkout: Open Vamospago checkout
activate Vamospago Checkout
Vamospago Checkout-->>Client (Merchant Client): Copy QR code
deactivate Vamospago Checkout

end

    Client (Merchant Client)->>Wallet or Bank APP: User opens payment wallet or bank APP
    activate Wallet or Bank APP
    Wallet or Bank APP->>Wallet or Bank APP: Scan QR code for payment
    Wallet or Bank APP-->>Client (Merchant Client): Return payment result
    deactivate Wallet or Bank APP
deactivate Client (Merchant Client)
        Wallet or Bank APP-->>Vamospago Server: Notify payment result        
        activate Vamospago Server
        

Vamospago Server -)Merchant Server: Notify webhook order result
        deactivate Vamospago Server
activate Merchant Server
    activate Vamospago Server
    Merchant Server-->>Vamospago Server: Response received successfully
    deactivate Vamospago Server
deactivate Merchant Server


Merchant Server -)Vamospago Server: Call order inquiry API to check order result
activate Merchant Server
    activate Vamospago Server
    Vamospago Server-->>Merchant Server: Response received successfully
    deactivate Vamospago Server
deactivate Merchant Server


```


