Maison  >  Article  >  développement back-end  >  Comment utiliser l'API Phonepe en Python et intégrer la passerelle Phonepe

Comment utiliser l'API Phonepe en Python et intégrer la passerelle Phonepe

WBOY
WBOYoriginal
2024-07-23 11:42:51644parcourir

How to use Phonepe api in Python and Integrate phonepe gateway

Introduction

PhonePe est une plateforme de paiement numérique populaire en Inde, offrant une gamme de solutions de paiement pour les particuliers et les entreprises. Si vous souhaitez intégrer les paiements PhonePe dans votre application ou votre site Web, ce guide vous guidera tout au long du processus d'utilisation de l'API PhonePe et d'intégration de la passerelle PhonePe.
Vous pouvez consulter le code complet ici.

Vous pouvez consulter la documentation de l'API Phonepe ici.

Étape 1 : Inscrivez-vous à un compte marchand PhonePe

Pour commencer à utiliser l'API PhonePe, vous devrez créer un compte marchand sur le site Web PhonePe. Cela vous fournira les informations d'identification nécessaires et l'accès à la documentation de l'API.
Inscription des entreprises - https://www.phonepe.com/business-solutions/payment-gateway/

Étape 2 : Configurez votre environnement de développement

Avant de pouvoir commencer à intégrer l'API PhonePe, vous devrez configurer votre environnement de développement. Cela implique généralement l'installation de toutes les dépendances requises et la mise en place d'une structure de projet.
Ici, nous allons regarder l'exemple python. Mais vous pouvez utiliser n'importe quel autre langage car nous n'utilisons pas de SDK ici.

Étape 3 : Obtenir les informations d'identification de l'API

Une fois votre compte marchand configuré, vous devrez obtenir les informations d'identification de l'API. Ces informations d'identification seront utilisées pour authentifier vos demandes auprès de l'API PhonePe.

Pour les tests, vous pouvez suivre les exemples -https://developer.phonepe.com/v1/docs/uat-testing/

Les exemples donnés ici concernent Merchant_id et salt_key pourraient maintenant fonctionner.

Alors, essayez ces informations d'identification pour les tests -
Merchant_id - PGTESTPAYUAT86
salt_index - 1
salt_key - 96434309-7796-489d-8924-ab56988a6076

Étape 4 : Comprendre les points de terminaison de l'API PhonePe

L'API PhonePe fournit plusieurs points de terminaison que vous pouvez utiliser pour initier des paiements, vérifier l'état des paiements et gérer d'autres aspects de votre intégration. Il est important de comprendre les différents points de terminaison et leurs paramètres respectifs pour garantir un processus d'intégration fluide.

Étape 5 : Mettre en œuvre le flux de paiement

Pour lancer un paiement à l'aide de l'API PhonePe, vous devrez effectuer une requête POST au point de terminaison /pg/v1/pay. Ce point de terminaison nécessite divers paramètres tels que le montant du paiement, l'ID du commerçant, l'ID de transaction du commerçant et l'URL de rappel.

Voici un exemple d'extrait de code en Python qui montre comment lancer un paiement à l'aide de l'API PhonePe :

import hashlib
import requests
import base64
import uuid
import json
import constants

def create_sha256_string(input_string):
    sha256_hash = hashlib.sha256(input_string.encode())
    encoded_string = sha256_hash.hexdigest()
    return encoded_string

def string_to_base64(input_string):
    encoded_string = base64.b64encode(input_string.encode())
    return encoded_string.decode()

def phonepePaymentURL(amount: int):

    orderID = "pp-"+str(uuid.uuid4())
    userID = "user-"+str(uuid.uuid4())
    merchantTransactionID = "MT"+str(uuid.uuid4())
    mobileNumber = "9999999998" # test mobile number
    email = "test@gmai.com"

    payload = {
        "amount": amount*100,
        "merchantId": constants.merchant_id,
        "merchantTransactionId": merchantTransactionID,
        "merchantUserId": userID,
        "redirectUrl": constants.webhook_url,
        "redirectMode": "POST",
        "callbackUrl": constants.webhook_url,
        "merchantOrderId": orderID,
        "mobileNumber": mobileNumber,
        "email": email,
        "message": "Payment for " + orderID,
        "paymentInstrument": {
            "type": "PAY_PAGE"
        }
    }
    json_data = json.dumps(payload)
    base64_request = string_to_base64(json_data)

    # X-VERIFY header -- SHA256(Base64 encoded payload + “/pg/v1/pay” + salt key) + ### + salt index
    finalXHeader = create_sha256_string(base64_request + "/pg/v1/pay" + constants.salt_key)+"###"+constants.salt_index

    req = {
        "request": base64_request
    }

    finalHeader = {
        "Content-Type": "application/json",
        "X-VERIFY": finalXHeader
        }

    response = requests.post(constants.payment_url, headers=finalHeader, json=req)
    if response.status_code == 200:
        return response.json()
    else:
        return "Something went wrong - " + response.text


res = phonepePaymentURL(100)
data = res.json()
print(json.dumps(data))
print()

paymentURL = data["data"]["instrumentResponse"]["redirectInfo"]["url"]
transactionID = data["data"]["merchantTransactionId"]
print("transaction_id - ",transactionID)
print("payment_url - ",paymentURL)
print()


Dans cet exemple, nous générons un identifiant de commande unique, un identifiant d'utilisateur et un identifiant de transaction marchand. Nous construisons ensuite une charge utile avec les paramètres nécessaires et la codons en base64.
Nous générons également un en-tête X-VERIFY à l'aide de la charge utile, du point de terminaison et de la clé salt. Enfin, nous envoyons une requête POST au point de terminaison de l'API PhonePe avec les en-têtes et la charge utile appropriés.

Ouvrez payment_url dans le navigateur et utilisez ces détails de carte de test pour les paiements - https://developer.phonepe.com/v1/docs/uat-testing/#Debit-Card

Étape 6 : Gérer les rappels de paiement

Après avoir lancé un paiement, PhonePe enverra un rappel à l'URL de rappel spécifiée. Il est important de gérer correctement ce rappel pour garantir une expérience de paiement fluide. Le rappel contiendra généralement des informations sur l'état du paiement, l'ID de la transaction et d'autres détails pertinents.

Pour tester le webhook, ce site Web peut être utilisé - https://webhook.site/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn