metr-merchant-payments

Par bankrbot · skills

Réclamez et retirez des paiements depuis le compte marchand Metr (metrpay.com).

npx skills add https://github.com/bankrbot/skills --skill metr-merchant-payments

Metr Merchant Payments

Gérez votre compte marchand Metr — lancez des sessions de paiement, terminez-les (réglez-les), et retirez les fonds vers votre portefeuille.

Qu'est-ce que Metr ?

Metr est un protocole de paiement multi-chaîne qui permet aux commerçants d'accepter des cryptomonnaies (USDC, SOL, POL, ETH et des tokens SPL/ERC-20 personnalisés) via une caisse basée sur les sessions. Les fonds sont maintenus en séquestre pendant une session et libérés à la fin de celle-ci.

Prérequis

  1. Un compte marchand Metr (inscrivez-vous sur https://metrpay.com)
  2. Votre Clé API Marchand — disponible dans votre tableau de bord Metr sous Paramètres → Clés API
  3. (Optionnel) Une Clé Agent si vous souhaitez exécuter des sessions de caisse agentic

Authentification

Tous les appels API nécessitent les en-têtes :

En-tête Valeur Quand
x-api-key Votre clé API marchand Tous les endpoints marchands
x-agent-key Votre clé agent Endpoints de session agent

Stockez votre clé de manière sécurisée dans Bankr :

  • Ouvrez la barre latérale du terminal Bankr → cliquez sur Advanced → cliquez sur Env Vars
  • Ajoutez METR_MERCHANT_API_KEY = votre clé marchand
  • Ajoutez METR_AGENT_KEY = votre clé agent (si vous utilisez des sessions agent)

Opérations Principales

1. Lancer une Session de Paiement

Lancez une session de caisse pour un client.

Endpoint : POST /v1/integrate/sessions/start

En-têtes :

  • Content-Type: application/json
  • x-api-key: <your-merchant-key>

Corps :

{
  "amount": "10.00",
  "currency": "USDC",
  "chain": "base",
  "metadata": {
    "orderId": "order_12345",
    "customerEmail": "customer@example.com"
  }
}

Réponse :

{
  "sessionId": "sess_abc123",
  "paymentUrl": "https://pay.metr.app/sess_abc123",
  "status": "pending",
  "expiresAt": "2026-07-01T12:00:00Z"
}

Équivalent CLI Bankr :

curl -X POST https://api.metr.app/v1/integrate/sessions/start \
  -H "Content-Type: application/json" \
  -H "x-api-key: $METR_MERCHANT_API_KEY" \
  -d '{
    "amount": "10.00",
    "currency": "USDC",
    "chain": "base",
    "metadata": {"orderId": "order_12345"}
  }'

2. Terminer (Régler) une Session

Libérez les fonds en séquestre vers le portefeuille marchand une fois la commande exécutée.

Endpoint : POST /v1/integrate/sessions/{sessionId}/end

En-têtes :

  • Content-Type: application/json
  • x-api-key: <your-merchant-key>

Corps :

{
  "reason": "fulfillment_complete",
  "metadata": {
    "deliveredAt": "2026-07-01T10:30:00Z"
  }
}

Réponse :

{
  "sessionId": "sess_abc123",
  "status": "settled",
  "settledAt": "2026-07-01T10:30:05Z",
  "txHash": "0x..."
}

Équivalent CLI Bankr :

curl -X POST "https://api.metr.app/v1/integrate/sessions/$SESSION_ID/end" \
  -H "Content-Type: application/json" \
  -H "x-api-key: $METR_MERCHANT_API_KEY" \
  -d '{"reason": "fulfillment_complete"}'

3. Lancer une Session Agent

Pour les paiements initiés par agent IA (par ex., un agent achetant un service au nom d'un utilisateur).

Endpoint : POST /v1/agents/sessions/start

En-têtes :

  • Content-Type: application/json
  • x-api-key: <your-merchant-key>
  • x-agent-key: <your-agent-key>

Corps :

{
  "amount": "5.00",
  "currency": "USDC",
  "chain": "solana",
  "agentId": "agent_001",
  "metadata": {
    "service": "api_call",
    "tier": "premium"
  }
}

4. Terminer une Session Agent

Endpoint : POST /v1/agents/sessions/{sessionId}/end

En-têtes :

  • Content-Type: application/json
  • x-api-key: <your-merchant-key>
  • x-agent-key: <your-agent-key>

Corps :

{
  "reason": "service_delivered",
  "metadata": {}
}

Réclamer et Retirer des Fonds

Metr n'expose pas directement un endpoint API « claim ». À la place :

  1. Règlement = Réclamation : Terminer une session libère automatiquement les fonds en séquestre vers votre portefeuille marchand configuré. Le txHash dans la réponse end-session est votre preuve on-chain.

  2. Retrait depuis le Tableau de Bord : Pour les retraits en masse ou le déplacement de fonds vers un portefeuille différent :

    • Connectez-vous à https://metrpay.com/dashboard
    • Allez à Balances
    • Sélectionnez la chaîne/le token que vous souhaitez retirer
    • Entrez votre adresse de portefeuille de destination
    • Confirmez le retrait (une tx on-chain sera envoyée)
  3. Notifications Webhook : Configurez un webhook dans votre tableau de bord Metr pour recevoir des événements en temps réel :

    • session.settled — fonds libérés vers le portefeuille marchand
    • withdrawal.completed — retrait manuel terminé

Chaînes et Tokens Supportés

Chaîne Token Natif Stablecoins Tokens Personnalisés
Solana SOL USDC Tokens SPL
Polygon POL USDC Tokens ERC-20
Base ETH USDC Tokens ERC-20

Gestion des Erreurs

Codes de statut HTTP courants de l'API Metr :

Code Signification Action
400 Bad Request Vérifiez le schéma du corps de la requête
401 Unauthorized Vérifiez que x-api-key est correct
403 Forbidden La clé n'a pas les permissions pour cette action
404 Session Not Found Double-vérifiez le sessionId
409 Session Already Ended Idempotence — la session est déjà réglée
422 Validation Error Montant trop faible, chaîne non supportée, etc.
500 Internal Error Réessayez ou contactez le support Metr

Exemple de Flux Complet

1. Un client passe une commande sur votre site
2. Vous appelez POST /v1/integrate/sessions/start
3. Vous redirigez le client vers paymentUrl
4. Le client paie via la caisse Metr
5. Vous exécutez la commande (livrez le produit, lancez le service, etc.)
6. Vous appelez POST /v1/integrate/sessions/{id}/end
7. Les fonds sont libérés vers votre portefeuille marchand
8. (Optionnel) Vous retirez depuis le tableau de bord vers le stockage froid

Références

Skills similaires