|
Intégration Stripe, webdev en PHP |
Iniciado por Nicolas, dez., 13 2019 1:26 PM - 1 resposta |
| |
| | | |
|
| |
Membro registado 144 mensagems |
|
Publicado em dezembro, 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 |
| |
| |
| | | |
|
| | |
| |
Membro registado 144 mensagems |
|
Publicado em dezembro, 16 2019 - 8:44 AM |
Bonjour, Personne n'a d'idées du problème... ?
a+
-- Nicolas |
| |
| |
| | | |
|
| | | | |
| | |
|