PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WEBDEV 2024 → 3D secure stripe nouvelle API
3D secure stripe nouvelle API
Iniciado por Dominique, 04,jul. 2019 08:36 - 36 respuestas
Publicado el 04,julio 2019 - 08:36
Bonjour, le 14 septembre de cette année la réglementation concernant les payements en ligne se renforce et rend obligatoire la la double authentification.
Jusqu'à aujourd'hui, pour les règlements en ligne, je passe par STRIPE via l'exemple de la LST 110, suite à ce changement de réglementation, STRIPE a mis en place une nouvelle API.
J'ai un peu de mal avec cette nouvelle API, si quelqu'un a mis en place la nouvelle solution, je voudrais savoir si le "session ID" remplace le "TOKEN ID" et si la transaction se résume à une seule "RestRequete" coté serveur.

NB: j'utilise le checkout coté serveur.

Merci pour votre aide.
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 31,julio 2019 - 13:51
Bonjour, je suis dans le même cas , des nouvelles de l'adaptation de l'API de la LST 110 ?
Publicado el 05,agosto 2019 - 14:34
Bonjour Frederic,
J'ai pu modifier mon code pour être conforme avec les nouvelles dispositions de mi septembre,
En fait j'ai finalement tout modifié et mis en place d'autres fonctions proposées par Stripe.
Bon dev .
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 05,agosto 2019 - 15:19
Bonjour Dominique, cela t’ennuierait-il de partager tes codes sources ?
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 15,agosto 2019 - 10:17
Bonjour Dominique, je galère pas mal, acceptez-vous de partager vos sources ? by2k64@gmail.com

Merci

Dominique a écrit :
Bonjour Frederic,
J'ai pu modifier mon code pour être conforme avec les nouvelles dispositions de mi septembre,
En fait j'ai finalement tout modifié et mis en place d'autres fonctions proposées par Stripe.
Bon dev .
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 19,agosto 2019 - 11:47
Bonjour, est-ce quelqu'un d'autre à réussi à mettre à jour l'exemple LST 110 de STRIPE avec le nouvel API 3D SECURE.

Visiblement, "Dominique" ne souhaite pas partager ses sources ...

Je m'oriente en attendant sur une possible intégration en mode Checkout mais cette solution ne m'intéresse pas des masses.

Quoi qu'il arrive, moi, j'informerais de mes avancées ici même pour que tout le monde puisse en profiter, il me semble que c'est le but d'un forum d'entre-aide.
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 19,agosto 2019 - 14:40
Premier pas avec l'intégration en mode Checkout.
Je voulais que mon script se lance sur un bouton Serveur et non pas HTML
J'ai créer un champ HTML non-visible que j'ai nommé HTM_CB
Dans le code serveur d'un bouton
VARLOCAL_MAIL est une chaîne = "mailclient@mail.com" // E-mail du client
VARLOCAL_SKU est une chaîne = "sku_123" // SKU du produit crée sur le Dash de Stripe
VARLOCAL_CLE est une chaîne = "pk_test_XXXXXXXXXXXXXXXXX" // Clé test ou production fournit par Stripe
VARLOCAL_HTML est une chaîne=[
<script src="https://js.stripe.com/v3"></script>
<div id="error-message"></div>
<script>
var stripe = Stripe('
]
VARLOCAL_HTML=VARLOCAL_HTML+VARLOCAL_CLE
VARLOCAL_HTML=VARLOCAL_HTML+[
');
stripe.redirectToCheckout({
items: [
{sku: '
]
VARLOCAL_HTML=VARLOCAL_HTML+VARLOCAL_SKU
VARLOCAL_HTML=VARLOCAL_HTML+[
', quantity: 1}],
successUrl: 'https://example.com/success',
cancelUrl: 'https://example.com/cancel',
customerEmail: '
]
VARLOCAL_HTML=VARLOCAL_HTML+VARLOCAL_MAIL
VARLOCAL_HTML=VARLOCAL_HTML+[
',
locale: 'fr'
}).then(function (result) {

});
</script>
]
HTM_CB=VARLOCAL_HTML


Je continue mes investigations ....
Miembro registrado
2 mensajes
Publicado el 23,agosto 2019 - 10:23
Bonjour à tous,
j'ai aussi ce problème d'intégration du 3D secure Stripe dans mon site de vente. Le temps est maintenant compté. Si je n'arrive pas à intégrer cette solution je serai obligé de basculer en Paypal.
Si une âme charitable a des infos à ce sujet, je la remercie grandement.
Si j'y arrive de mon coté, je vous ferai signe...
Miembro registrado
2 mensajes
Publicado el 26,agosto 2019 - 11:19
C'est en très bonne voie. Ce devrait être résolu d'ici quelques jours. Si quelqu'un est toujours intéressé par le sujet , faites moi signe sur ce forum, je publierai mes investigations.
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 26,agosto 2019 - 12:23
Bonjour Yves , merci pour votre proposition de publication de vos recherches.

Je patauge un peu , je souhaiterais pouvoir ouvrir une popup de saisie des infos et non pas une page Checkout.

Pour le moment j'arrive à obtenir le token mais après je bloque appeler le paiement en 3D Secure.
Publicado el 26,agosto 2019 - 21:18
Bonsoir Frédéric,
je viens de réussir à mettre ça en place à l'instant et tout fonctionne bien en condition réelle. (serveur session Checkout)
Je pense qu'il sera possible de modifier le code pour une popup de saisie de données mais sans doute pas pour saisir directement le code de la carte. D'ailleurs, je me demande si cela sera possible dans l'avenir...
Je ferai très bientôt (demain) un petit récapitulatif de mes codes et pages.
Publicado el 27,agosto 2019 - 09:16
Bonjour Frédéric,
je viens de poster mes ressources en lignes...

https://depot.pcsoft.fr/index.awp
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 27,agosto 2019 - 10:31
Bonjour Yves, merci pour ce partage.

J'ai trouvé un bout de code qui permet de lancer une popup avec saisie et la fenêtre 3D Secure.

Pour le moment j'en suis là, je continu également les investigations.
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 27,agosto 2019 - 12:04
Yves , ton code fonctionne parfaitement bien même je suis en mode session mais ce n'est pas très grave.

Une question tout de même, a quel moment de process la page webhoock est appelée ?
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 27,agosto 2019 - 13:59
FREDERIC a écrit :
Yves , ton code fonctionne parfaitement bien même je suis en mode session mais ce n'est pas très grave.

Une question tout de même, a quel moment de process la page webhoock est appelée ?


Ok , j'ai trouvé , il s'agit en fait d'une page statique qui s'exécute sous conditions.
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 27,agosto 2019 - 15:33
Yves a écrit :
Bonjour Frédéric,
je viens de poster mes ressources en lignes...

https://depot.pcsoft.fr/index.awp



Yves j'ai un petit souci, pouvez-vous m'aider ?

J'obtiens systématiquement l'erreur "Bank acknowledgement error" à l'ouverture de la page Success.

Après investigation, dans PAGE_webhoock la base [Transaction_Banque.BanqueAcquiescement] ne s’incrémente pas avec la valeur "checkout.session.completed"

Comme cette valeur est renvoyée par la variable vReponse.type , j'ai remonté jusqu'à la variable vReponse qui transforme le code JSON vers un variant sur la base de la variable sVarReponse qui elle-même interprète le paramètre 1 de l'URL .... (Ouf !)

Quand je tente de lire le paramètre 1 de l'URL, en insérant ce code au début de l'initialisation de PAGE_webhoock : fSauveBuffer(ComplèteRep(fRepWeb)+"Log\StripeLog"+DateDuJour()+".txt",PageParamètre(1))

J'obtiens un ligne vide, et donc du coup la base Transaction_Banque ne s'incrémente pas.

Une idée ?
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 27,agosto 2019 - 17:41
Dans l'interface STRIPE/WEBHOOCK , le type est bien sur [checkout.session.completed] mais la distribution à échoué avec l'erreur 409 (La page n'a pas été affichée en raison d'un conflit.) ...

J'ai l'impression que le code JASON n'est pas récupéré par la page webhoock.
Mensaje modificado, 27,agosto 2019 - 17:43
Publicado el 27,agosto 2019 - 18:20
Bonjour,

Les modification touchent le Module de paiement PAYBOX?

Merci

Christian
Publicado el 28,agosto 2019 - 07:21
Christian a écrit :
Bonjour,

Les modification touchent le Module de paiement PAYBOX?

Merci

Christian


Il s'agit d'une utilisation des API Stripe, sans rapport avec PAYBOX.

Frédéric a écrit :
Dans l'interface STRIPE/WEBHOOCK , le type est bien sur [checkout.session.completed] mais la distribution à échoué avec > l'erreur 409 (La page n'a pas été affichée en raison d'un conflit.) ...

J'ai l'impression que le code JASON n'est pas récupéré par la page webhoock.


Je ne sais que dire. Le dashboard de Stripe permet d'envoyer des requêtes factices en quantité au webhook et de voir le code envoyé et le code reçu.
Pour pouvoir débugger cette page distante, j'ai fais écrire par cette page des fichiers texte (fichiers log) sur mon site marchand indiquant à chaque étape le résultat (puisqu'on a pas accès au info() ni au trace()). J'ai ensuite analysé ces résultats.
C'est comme ça que j'ai remarqué que le JSON envoyé par Stripe contenait "}=" en fin de chaine, ce qui faisait planter le JSONVersVariant.

Info de dernière minute: Je viens de voir que j'ai fais une erreur dans la fin du code du webhook:
Il faut remplacer le "PageEcritEntêteHTTP("Status", "409")" de la dernière boucle par "PageEcritEntêteHTTP("Status", sEnTête)" sinon toute les erreurs seront du type 409. Ensuite, il suffit d'analyser les fichier log générés.
Voilà, j'espère que ces remarques te seront utiles.
Yves
Publicado el 28,agosto 2019 - 09:56
Oups...
En fait il suffit simplement d'effacer le dernier "PageEcritEntêteHTTP("Status", "409")" et non pas le remplacer par "PageEcritEntêteHTTP("Status", sEnTête)", ce dernier étant déjà écrit quelques lignes au dessus.
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 28,agosto 2019 - 11:41
Bonjour Yves et merci pour ton retour, malheureusement malgré la suppression du dernier "PageEcritEntêteHTTP("Status", "409")" j'obtiens toujours une erreur dans l’événement de STRIPE.

Pour pousser un peu plus , j'ai supprimer le code ci-dessous mais en laissant : vReponse=JSONVersVariant(sVarReponse)

QUAND EXCEPTIONEXCEPTION DANS
vReponse=JSONVersVariant(sVarReponse)
FAIRE
SI fFichierExiste(ComplèteRep(fRepWeb)+"Log\StripeLog"+DateDuJour()+".txt") ALORS
sLog=fChargeBuffer(ComplèteRep(fRepWeb)+"Log\StripeLog"+DateDuJour()+".txt")
FIN
PageEcritEntêteHTTP("Status", "409")
sLog = sLog+RC+"technic error JSONVersVariant "+HeureSys()
fSauveBuffer(ComplèteRep(fRepWeb)+"Log\StripeLog"+DateDuJour()+".txt",sVarReponse)
RETOUR
FIN


Et dans le code réponse de STRIPE j'obtiens : Format JSON invalide
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 28,agosto 2019 - 12:01
En fait la variable sVarReponse est vide et donc aucun paramètres JSON n'est récupérés.
Publicado el 28,agosto 2019 - 18:00
Peut être si ce n'est déjà fait, faut il aller sur le site de stripe dans le dashboard. On peut à la volée envoyer de nombreuses requêtes au webhook ainsi que visualiser le contenu de la requête envoyée. Il faut cliquer dans l'environnement de test sur l'URL du end point créé (adresse du webhook), puis sur un des événements dans la liste des tentatives d’événement pour visualiser le contenu des requêtes envoyées.
Par exemple chez moi cela donne:
{
"id": "evt_1FBmUeJP8td3KrBH1d2yBuih",
"object": "event",
"api_version": "2019-08-14",
"created": 1566842440,
"data": {
"object": {
"id": "cs_test_MLPYsiNVu7j09lh5MVVYteep76rTm80LyzmDeelRHOzO8bNmDR7WgqIY",
"object": "checkout.session",
"billing_address_collection": null,
"cancel_url": "https://www.monsite.com/ECOMMERCE_WEB/FR/Echec.awp",
"client_reference_id": "1",
"customer": "cus_FhAqdHzKxrpk6x",
"customer_email": "arnold.duplex@orange.fr",
"display_items": [
{
"amount": 40800,
"currency": "eur",
"custom": {
"description": null,
"images": null,
"name": "Logiciel Lic(s)"
},
"quantity": 1,
"type": "custom"
}
],
"livemode": false,
"locale": null,
"mode": "payment",
"payment_intent": "pi_1FBmRFTE8tW6KrBH9UAKUev7",
"payment_method_types": [
"card"
],
"setup_intent": null,
"submit_type": null,
"subscription": null,
"success_url": "https://www.monsite.com/ECOMMERCE_WEB/FR/Succes.awp…}"
}
},
"livemode": false,
"pending_webhooks": 1,
"request": {
"id": null,
"idempotency_key": null
},
"type": "checkout.session.completed"
}
Et c'est bien ce que je reçois (en sérialisé)
C'est au moins ce que l'on doit recevoir en brut dans la requete. As tu vérifié que l'adresse est bien correcte (que stripe envoie bien à la bonne adresse?).
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 29,agosto 2019 - 09:05
Bonjour Yves et merci pour ton retour, voici ce que j'ai fais sous STRIPE en environnement TEST :

1) Dans le menu Développeurs/Webhooks j'ai ajouter un endpoint
2) J'ai renseigné l'URL de ma page Webhook : https://xxxxxxxxx/FR/WEBHOOCK.awp
3) J'ai assigné l’événement : checkout.session.completed

Et voici ce que j'obtiens en retour si je laisse le code d’initialisation tel-quel :

Réponse :
Erreur du webhook test : 409
Réponse : La page n'a pas été affichée en raison d'un conflit

Maintenant si j'épure le code en ne laissant que l'indispensable :

vReponse est Variant
sVarReponse est une chaîne ANSI = PageParamètre(1)
sVarReponse = Remplace(sVarReponse,"}=","}")
sEnTête est une chaîne
sLog est une chaîne = ""
vReponse=JSONVersVariant(sVarReponse)
PageEcritEntêteHTTP("Status", "200")


Réponse :
Traitement de &#39;Initialisation de PAGE&#95;WEBHOOCK &#40;serveur&#41;&#39; &#40;PAGE&#95;WEBHOOCK&#41;&#44; ligne 6
Fonction &#39;JSONVersVariant&#39;&#44; syntaxe 0
Que s&#39;est&#45;il pass&#233; &#63;
Format JSON invalide
Code erreur &#58; 40129
Niveau &#58; erreur fatale


J'ai vraiment l'impression que le code JSON n'est pas envoyé à la page awp.
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 29,agosto 2019 - 10:02
Est-qu'il ne pourrait pas y avoir une configuration spécifique sur le serveur ?
Mon site tourne sous Windows Server 2012 / IIs
Publicado el 29,agosto 2019 - 13:28
Mon serveur est aussi (je crois) un windows 2012 IIs (kalanda).

Il faut essayer de tester la page sans le JSONVersVariant en visualisant le contenu de la requête reçue. Il est possible que le JSONVersVariant fasse planter toute la page, c'est pour ça qu'on le met souvent (dans tous les exemples fournis par PCsoft après si EXCEPTION. C'est ce qui m'arrivait avant que je remplace le }= par }.
Miembro registrado
54 mensajes
Popularité : +3 (3 votes)
Publicado el 29,agosto 2019 - 18:29
Si je laisse le code vide , lors du test sous STRIPE j'obtiens rien, juste le code HTML de la page pas de JSON.

Pour test j'ai inséré le code suivant et ma page est bien exécuté puisque le fichier test.txt contient bien "TEST".

Je reste sur l'idée que cela vient peut-être d'un paramétrage de mon serveur WS2012/IIS , que j'administre moi-même.

J'ai lancé une requête auprès de STRIPE, j'attends leur réponse, en attendant, pris par le temps, je vais me passer de page Webhooks et vais jouer sur les cookies dans la page Succes , affaire à suivre ... Quoi qu'il arrive, merci pour tout tes efforts et ton code, ça m'a bien aidé, j’appréhende beaucoup mieux le process et je vais continuer mes investigations.

MonBuffer est un Buffer = "TEST"
fSauveBuffer(ComplèteRep(fRepWeb)+"Log\test.txt",MonBuffer)
Publicado el 29,agosto 2019 - 22:15
Merci Frédéric, heureux d'avoir été utile.
Tiens nous au courant du résultat de tes investigations.
Publicado el 13,septiembre 2019 - 10:18
Un grand merci à toi Yves.
Ton dépot de source m'a fait gagner un temps considérable.
Miembro registrado
191 mensajes
Popularité : +3 (3 votes)
Publicado el 13,septiembre 2019 - 17:11
Grand merci également Yves ... Tout est impeccable :merci:

Quand te mets tu à Paypal ? :p:p:p
Publicado el 12,noviembre 2019 - 09:52
Bonjour,

pour ma part j'ai résolu le soucis de lecture du JSON ( La page n'a pas été affichée en raison d'un conflit.) en remplaçant
PageParamètre(1)
par
PageParamètre(paramBuffer)

Un grand merci pour cet exemple qui m'a fait gagner un temps précieux.

Bon dev à tous.
Miembro registrado
1.143 mensajes
Popularité : +50 (142 votes)
Publicado el 12,noviembre 2019 - 15:15
Pour aller encore plus loin, comment gérer les abonnements faits avec une carte bancaire qui a expiré ?
(c'est à dire que l'achat de l'abonnement s'est fait correctement puis 4 mois plus tard la carte vient à expiration et les prélèvements sont en échec)
Miembro registrado
144 mensajes
Publicado el 29,noviembre 2019 - 17:36
Bonjour Yves,
J'ai utilisé votre code pour comprendre le sytsème stripe et commancer l'intégration sur l'un de mes site. Tout fonctionne bien, c'est nickel.

Est-ce possible d'ouvrir une popup à la place ou alors d'ouvrir dans un iframe ou alors de paramétrer la page pour y ajouter un logo ou surtout un bouton retour.

Sur la page checkout.stripe.com/pay/ il n'y a pas de bouton retour si le client veut annuler sa transaction...

MErci pour votre aide et bon week-end

--
Nicolas
Publicado el 30,noviembre 2019 - 17:51
bonjour,

en ce qui concerne les abos, STRIPE gere la péremption des CC en envoyant un email au client. Vous devez avoir une page sur votre site pour mettre à jour la CB que vous mettrez à jour dans STRIPE.
Miembro registrado
1.143 mensajes
Popularité : +50 (142 votes)
Publicado el 02,diciembre 2019 - 12:24
@Christian

Oui c'est ça. Stripe m'a envoyé le code et la procédure pour créer cette page mais je ne me suis pas encore penché sur l'adaptation.
Sur le Dashboard de Stripe on peut aussi envoyer la facture impayé ce qui semble également faire la mise à jour de la carte bancaire (en attendant...)
Publicado el 12,mayo 2022 - 12:12
Avez vous un code ou exemple webdev pour créer un abonnement avec stripe ? (voir un paiement fractionné en 4 fois par exemple ?
Publicado el 09,agosto 2022 - 11:13
Merci pour ce précieux gain de temps dans la recherche d'intégration avec stripe.
juste une remarque: je perds les centimes dans le traitement. Pour le fixer, remplacer

nMontantEntier = xMontantMonétaire
nMontantEntier100 = 100*nMontantEntier

par

nMontantEntier100 = 100*Val(xMontantMonétaire)


Un conseil: postman propose la collection complete des objets de l'API stripe. Il est donc (assez) simple de tester tous les paramêtres et de les traduire en wlanguage après...