J'ai essayé d'intégrer une passerelle de paiement dans mon site à Django. J'ai du mal à obtenir les données de réponse de la passerelle de paiement.
La passerelle de paiement a des exemples de documents pour php qui ressemblent à ceci:
$ErrorTx = isset($_POST['Error']) ? $_POST['Error'] : ''; //Error Number
$ErrorResult = isset($_POST['ErrorText']) ? $_POST['ErrorText'] : ''; //Error message
$payID = isset($_POST['paymentid']) ? $_POST['paymentid'] : ''; //Payment Id
Dans la vue de l'URL vers laquelle la passerelle de paiement est redirigée après avoir entré les détails de la carte, etc., je vérifie s'il s'agit d'un GET if request.method == "GET"
puis en passant la requête à une fonction. Lorsque je débogue la demande, je peux voir un dict de requête vide. et si j'essaye quelque chose comme res = request.GET ['paymentid'] j'obtiens une erreur qui dit qu'il n'y a pas de clé appelée paymentid.
Suis-je en train de manquer quelque chose d'évident? Je suis encore assez nouveau à Django, donc je suis sûr que je fais quelque chose de mal.
res = request.GET['paymentid']
Lèvera un KeyError
si paymentid
n'est pas dans les données GET.
Votre exemple de code php vérifie si paymentid
se trouve dans les données POST, et définit $payID
Sur '' sinon:
$payID = isset($_POST['paymentid']) ? $_POST['paymentid'] : ''
L'équivalent dans python est d'utiliser la méthode get()
avec un argument par défaut:
payment_id = request.POST.get('payment_id', '')
lors du débogage, voici ce que je vois dans le
response.GET: <QueryDict: {}>
,request.POST: <QueryDict: {}>
Il semble que le problème n'accède pas aux données POST, mais que il n'y ait pas de données POST . Comment procédez-vous au débogage? Utilisez-vous votre navigateur ou est-ce la passerelle de paiement accédant à votre page? Il serait utile que vous partagiez votre point de vue.
Une fois que vous parvenez à soumettre des données de publication sur votre page, il ne devrait pas être trop difficile de convertir l'exemple de php en python.
Vous devez avoir accès au dictionnaire POST sur l'objet de requête.