PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WEBDEV 25 → Intégration Stripe, webdev en PHP
Intégration Stripe, webdev en PHP
Started by Nicolas, Dec., 13 2019 1:26 PM - 1 reply
Registered member
90 messages
Posted on December, 13 2019 - 1:26 PM
Bonjour,
J'utilise le code suivant, qui était disponible en téléchargement sur le site de dépot de PC Soft.

VarSTContenuSession est STContenuSession
nMontantEntier, nMontantEntier100 sont des entiers
xMontantMonétaire est un numérique = LIBF_PRIX_TOTAL
nMontantEntier = xMontantMonétaire
nMontantEntier100 = nMontantEntier*100

sai_DEVISE est une chaîne = "CHF"
SI COMBO_Monnaie=1 ALORS sai_DEVISE = "EUR"
// exemple// version simplifiée, certaines données pouvant être des tableaux
VarSTContenuSession.sSuccess_url ="https://www.monsite.com/FR/ShopOnLineMerci.php… adresse réelle, ?session_id={CHECKOUT_SESSION_ID} permet à stripe de rediriger vers cette page avec la référence de la transaction
VarSTContenuSession.sCancel_url ="https://www.monsite.com/FR/ShopOnLineMerci.php"// adresse réelle
VarSTContenuSession.sPayment_method_types ="card"
VarSTContenuSession.sLine_items_name = ChaîneVersUTF8(gsLibAffArticle)
VarSTContenuSession.nLine_items_amount = nMontantEntier100 //Attention donnée en centimes
VarSTContenuSession.sLine_items_currency = sai_DEVISE
VarSTContenuSession.nLine_items_quantity = 1
VarSTContenuSession.sCustomer_email = ChaîneVersUTF8(sW_EMAIL_CLIENT)
VarSTContenuSession.sClient_reference_id = 0 //W_ID_CLIENT

// Mise en forme de la requête ============================================================
sContenuSession est une chaîne
sContenuSession += ["&"] + ChaîneConstruit([
success_url=%1
],VarSTContenuSession.sSuccess_url)

sContenuSession += ["&"] + ChaîneConstruit([
cancel_url=%1
],VarSTContenuSession.sCancel_url)

sContenuSession += ["&"] + ChaîneConstruit([
payment_method_types[]=%1
],VarSTContenuSession.sPayment_method_types)

sContenuSession += ["&"] + ChaîneConstruit([
line_items[][name]=%1
],VarSTContenuSession.sLine_items_name)

sContenuSession += ["&"] + ChaîneConstruit([
line_items[][amount]=%1
],VarSTContenuSession.nLine_items_amount)

sContenuSession += ["&"] + ChaîneConstruit([
line_items[][currency]=%1
],VarSTContenuSession.sLine_items_currency)

sContenuSession += ["&"] + ChaîneConstruit([
line_items[][quantity]=%1
],VarSTContenuSession.nLine_items_quantity)

sContenuSession += ["&"] + ChaîneConstruit([
customer_email=%1
],VarSTContenuSession.sCustomer_email)

sContenuSession += ["&"] + ChaîneConstruit([
client_reference_id=%1
],VarSTContenuSession.sClient_reference_id)

bufSBufferEntete est un Buffer
bufSBufferRequete est un Buffer
bufClefReponse est un Buffer

SI HTTPRequête("https://api.stripe.com/v1/checkout/sessions","","",sContenuSession,"",gsSecretKey,"")

bufSBufferEntete=HTTPDonneRésultat(httpEntête)
bufSBufferRequete=HTTPDonneRésultat(httpRésultat)

SI Milieu(ExtraitChaîne(bufSBufferEntete,1,RC),10,3)<>200 ALORS

ZR_REQ_LISTE_ARTICLES_BOUTIQUE_CATEG..Visible=Faux

Info("Une erreur s'est produite...",ErreurInfo(),bufSBufferEntete,sContenuSession,"",bufSBufferRequete)
// RETOUR

FIN

LIB_AffErreur = bufSBufferEntete+RC+RC+sContenuSession+RC+bufSBufferRequete

bufClefReponse= Remplace(ExtraitChaîne(Milieu(ExtraitChaîne(bufSBufferRequete,2,"id"),4,80),1,","),"""","")
// info(bufClefReponse,rc,rc,bufSBufferRequete)
FIN

//////// Préparation du code pour l'ouverture de la popup
sCodeHtml est une chaîne=[
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://js.stripe.com/v3/"></script>
</head>
<body>
<script type="text/javascript">
<!--
var stripe = Stripe('%1');

stripe.redirectToCheckout({
// Make the id field from the Checkout Session creation API response
// available to this file, so you can provide it as parameter here
// instead of the {{CHECKOUT_SESSION_ID}} placeholder.
sessionId: '%2'
}).then(function (result) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer
// using `result.error.message`.
});
//-->
</script>
</body>
</html>
]

sCodeHtml = ChaîneConstruit(sCodeHtml,gsDataKey,bufClefReponse) //gsDataKey : clef publique

//info(sCodeHtml)

// HTM_SansNom1 est un champ HTML caché
HTM_SansNom1 = sCodeHtml



Quand je teste mon projet en mode local, j'ai la réponse 200 de Stripe qui est récupérée par le code
HTTPRequête("https://api.stripe.com/v1/checkout/sessions","","",sContenuSession,"",gsSecretKey,"")
bufSBufferEntete=HTTPDonneRésultat(httpEntête)

Quand publie mon projet sur mon serveur en PHP, j'ai l'erreur suivante qui est affichée par mon HTTPRequête.


Server: nginx

Date: Fri, 13 Dec 2019 12:21:00 GMT

Content-Type: application/json

Content-Length: 898

Connection: close

access-control-allow-credentials: true

access-control-allow-methods: GET, POST, HEAD, OPTIONS, DELETE

access-control-allow-origin: *

access-control-expose-headers: Request-Id, Stripe-Manage-Version, X-Stripe-External-Auth-Required, X-Stripe-Privileged-Session-Required

access-control-max-age: 300

cache-control: no-cache, no-store

request-id: req_DTdsvgb4tOCAiS

stripe-version: 2019-11-05

Strict-Transport-Security: max-age=31556926; includeSubDomains; preload

Qui a une idée ou chercher le problème ?

--
Nicolas
Registered member
90 messages
Posted on December, 16 2019 - 8:44 AM
Bonjour,
Personne n'a d'idées du problème... ?

a+

--
Nicolas