Licenses, ventes et codes

CéroceCéroce Membre, Modérateur
J'ai posté ici, à  défaut de trouver une rubrique adéquate.

Je me demande actuellement quelle solution utiliser pour vendre mon logiciel et gérer les licences.

La solution idéale:
- Présente une boutique qui s'intègre parfaitement avec mon site web
- Pratique la transaction dans la langue de l'internaute (il est très important qu'il comprenne bien ce qui se passe à  ce moment-là !)
- Génère un code, et l'envoie par courriel à  l'acheteur
- Offre une API pour que mon appli vérifie le code, et renvoie vers le site web si besoin.
- Tout le reste: gestion des licences gratuites, des remboursements, des codes promo, etc.


Il semble exister un tas de solutions:

Paypal
+ S'affiche dans la langue de l'internaute
- Gère le paiement uniquement.
- Zéro intégration avec mon site web


eSellerate
+ Gère toute la chaà®ne
+ les coûts de transaction sont clairement exposés
- en anglais uniquement (?)

Kagi
+ Gère toute la chaà®ne
+ dispo dans 13 langues
- cher ?

D'autres solutions ?


Quelle est votre expérience ? Si vous vendez un logiciel, quelle solution avez-vous adopté, et pourquoi ?


«1

Réponses

  • 13:14 modifié #2
    Moi j'utilise Paypal.. et l'intégration au site web c'est faux  :o c'est totalement faisable il me semble. mais je le fais pas parce que nombreux utilisateurs sont rassurés d'être redirigés sur une page Paypal plutôt que de payer directement via mon site (meme si un certificat est présent).

    Au niveau des licenses t'as "AquaticPrime" qui offre un framework Cocoa + C + PHP compatible avec les sites comme Paypal, eSellerate ou Kagi pour la génération de la license après achat
  • Eric P.Eric P. Membre
    13:14 modifié #3
    Bonsoir,

    Après avoir pendant longtemps utilisé uniquement Kagi, j'utilise maintenant également Paypal suite à  des demandes d'acheteurs pour avoir le choix.

    Pour les licences, je n'ai rien automatisé.
    J'envoie le code après réception du mail de confirmation de paiement.
    Ca va car je ne vends pas 15000 programmes par mois (loin s'en faut).
    Je suis d'accord avec Eaglelouk sur le côté rassurant de faire le paiement sur une page "officielle" de Kagi ou Paypal.

    Voilà .

    Eric.
  • Paisible.frPaisible.fr Membre
    13:14 modifié #4
    Bonjour,

    Un poil "hors sujet", mais pour mettre en place l'une ou l'autre de ces solutions sur un site web il y "Potion Store". C'est une application Ruby open source pour mettre en place un site d'achat utilisant les solutions Paypal et/ou Google Checkout (dont il n'a pas encore été question)

    URL : http://www.potionfactory.com/potionstore/

    C'est Potion Factory qui en est à  l'origine.
  • CéroceCéroce Membre, Modérateur
    13:14 modifié #5
    dans 1248202125:

    Pour les licences, je n'ai rien automatisé.
    J'envoie le code après réception du mail de confirmation de paiement.
    Ca va car je ne vends pas 15000 programmes par mois (loin s'en faut).


    À vrai dire, c'est une solution qui me gène par plusieurs aspects:
    - ça me donne du travail en plus
    - l'utilisateur doit attendre pour avoir son code
    - quand je suis en vacances ou en week-end, qui s'en occupe ?

    dans 1248202125:

    Je suis d'accord avec Eaglelouk sur le côté rassurant de faire le paiement sur une page "officielle" de Kagi ou Paypal.

    Moi aussi, maintenant !
  • 13:14 modifié #6
    Oui mais non, vaut mieux prendre le truc automatisé de AquaticPrime :p
    Moi je me la coule douce grâce à  ça, et je reçois à  chaque fois une copie de la license que le mec a reçu par mail.
  • CéroceCéroce Membre, Modérateur
    13:14 modifié #7
    J'essaie de mettre en place AquaticPrime avec PayPal, mais j'ai quelques soucis.

    Une fois payé, PayPal affiche une page qui dit que la transaction s'est bien déroulée. Elle comporte un bouton "Retourner à  Céroce.com". Quand on clique sur ce bouton, Safari dit que la page n'est pas sécurisée et demande si on veut vraiment s'y connecter.

    Mon problème, c'est que l'utilisateur doit absolument cliquer sur ce bouton et accepter de se connecter à  cette page non sécurisée (ben oui, mon site n'utilise pas SSL) pour que PayPal exécute le script AquaticPrimePayPal.php. S'il ne le fait pas, il est quand même débité, mais il ne recevra jamais sa licence par e-mail.

    Avez-vous ce problème, et avez-vous réussi à  le régler ?

    Par ailleurs, y a-t-il un moyen de tester la transaction sans utiliser sa carte de crédit comme je le fais actuellement ?
  • 13:14 modifié #8
    dans 1249382629:

    J'essaie de mettre en place AquaticPrime avec PayPal, mais j'ai quelques soucis.

    Une fois payé, PayPal affiche une page qui dit que la transaction s'est bien déroulée. Elle comporte un bouton "Retourner à  Céroce.com". Quand on clique sur ce bouton, Safari dit que la page n'est pas sécurisée et demande si on veut vraiment s'y connecter.

    Mon problème, c'est que l'utilisateur doit absolument cliquer sur ce bouton et accepter de se connecter à  cette page non sécurisée (ben oui, mon site n'utilise pas SSL) pour que PayPal exécute le script AquaticPrimePayPal.php. S'il ne le fait pas, il est quand même débité, mais il ne recevra jamais sa licence par e-mail.

    Avez-vous ce problème, et avez-vous réussi à  le régler ?

    Par ailleurs, y a-t-il un moyen de tester la transaction sans utiliser sa carte de crédit comme je le fais actuellement ?


    J'ai jamais eu ce problème.
    Sinon pour tester, j'ai pas trouvé d'autre moyen.. Mis à  part ouvrir un nouvel onglet à  chaque fois que je clique sur "Retour au site marchant", comme ça je garde la session paypal ouverte pendant 5 à  10 minutes avant qu'elle n'expire et ça me laisse le temps de corriger des bugs si il y a.
  • CéroceCéroce Membre, Modérateur
    août 2009 modifié #9
    Donc, il est obligatoire que l'utilisateur clique sur "Retour au site marchand" ? C'est ça le problème, qui me dit qu'il ne va pas fermer la fenêtre ?

    Lors de la création du bouton, as-tu mis des URL de retour en cas de succès ou d'échec ? J'ai laissé vide, ne remplissant l'URL de retour que dans la partie "Préférences de réception de paiement sur le site" de PayPal, comme indiqué dans la doc d'AquaticPrime.

    (Soit dit en passant, PayPal est fort compliqué, mais je dois dire que je m'y attendais).
  • apocaalypsoapocaalypso Membre
    13:14 modifié #10
    J'aurais une petite question concernant PayPal également, comment avez-vous reçu votre "jeton d'identification" ?
    Moi, lorsque j'active le retour automatique, il me dit simplement "Vos préférences ont bien été sauvegardé" mais je n'ai aucun jeton donné, même en revenant sur la page.
  • 13:14 modifié #11
    dans 1249388305:

    Donc, il est obligatoire que l'utilisateur clique sur "Retour au site marchand" ? C'est ça le problème, qui me dit qu'il ne va pas fermer la fenêtre ?


    ça c'est que pour les comptes non enregistrés. Donc si le mec veut pas créer de compte paypal il devra retourner sur le compte marchand. (donc uniquement dans le cas où il paye direct avec sa carte bancaire). Autrement il est automatiquement redirigé
    Mais comme tu reçois un mail de paypal à  chaque paiement, et que normalement tu gardes toujours un BCC du mail qui contient la licence pour l'utilisateur, tu sais facilement si il l'a reçu ou non. Donc si tu ne reçois pas le doublon du mail que le générateur est censé envoyer, tu fais toi meme la generation de la licence et tu lui envoie par mail.
  • CéroceCéroce Membre, Modérateur
    août 2009 modifié #12
    dans 1249392001:

    J'aurais une petite question concernant PayPal également, comment avez-vous reçu votre "jeton d'identification" ?
    Moi, lorsque j'active le retour automatique, il me dit simplement "Vos préférences ont bien été sauvegardé" mais je n'ai aucun jeton donné, même en revenant sur la page.


    Non, en fait, le jeton s'affiche quand tu actives "Payment Data Transfer", ce qui correspond à  "Transfert de données de paiement" en français. (si tu as loupé le message, le jeton est rappelé en-dessous du bouton radio d'activation). Il faut l'activer en plus du renvoi automatique.
  • CéroceCéroce Membre, Modérateur
    13:14 modifié #13
    dans 1249392155:

    ça c'est que pour les comptes non enregistrés. Donc si le mec veut pas créer de compte paypal il devra retourner sur le compte marchand. (donc uniquement dans le cas où il paye direct avec sa carte bancaire). Autrement il est automatiquement redirigé


    Oké, je comprends mieux. C'est juste que PayPal est de la merde, alors. Je vais ajouter un message pour expliquer, mais c'est une solution vraiment pas idéale.
  • CéroceCéroce Membre, Modérateur
    13:14 modifié #14
    Première vente... et premier problème. L'acheteur est allemand, et son nom contient un à¶. Il n'y a que moi qui ai des problèmes avec les accents ou quoi ? Je trouve que dalle à  ce propos sur le web.
  • 13:14 modifié #15
    Moi j'ai fout un code barbare qui vire les accents :D J'ai pas voulu chercher plus loin
    <br />$name = strtr($name,&#39;à à¡âà£à¤çèéêëà¬à­à®à¯à±à²à³ôàµà¶ùàºûà¼à½à¿Ààà‚àƒà„çàˆà‰àŠà‹àŒààŽàà‘à’à“à”à•à–à™àšà›àœàà˜à¸à¥à…&#39;,<br />&#39;aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUYOoaA&#39;);<br />
    
  • apocaalypsoapocaalypso Membre
    13:14 modifié #16
    J'ai trouvé pourquoi il ne me donnait pas le jeton : mon compte n'était pas Premier ou Business.
  • schlumschlum Membre
    13:14 modifié #17
    dans 1249485401:

    Moi j'ai fout un code barbare qui vire les accents :D J'ai pas voulu chercher plus loin
    <br />$name = strtr($name,&#39;à à¡âà£à¤çèéêëà¬à­à®à¯à±à²à³ôàµà¶ùàºûà¼à½à¿Ààà‚àƒà„çàˆà‰àŠà‹àŒààŽàà‘à’à“à”à•à–à™àšà›àœàà˜à¸à¥à…&#39;,<br />&#39;aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUYOoaA&#39;);<br />
    



    Et avec les asiatiques, tu fais comment ?  ;D
  • août 2009 modifié #18
    dans 1249492248:

    dans 1249485401:

    Moi j'ai fout un code barbare qui vire les accents :D J'ai pas voulu chercher plus loin
    <br />$name = strtr($name,&#39;à à¡âà£à¤çèéêëà¬à­à®à¯à±à²à³ôàµà¶ùàºûà¼à½à¿Ààà‚àƒà„çàˆà‰àŠà‹àŒààŽàà‘à’à“à”à•à–à™àšà›àœàà˜à¸à¥à…&#39;,<br />&#39;aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUYOoaA&#39;);<br />
    



    Et avec les asiatiques, tu fais comment ?  ;D


    Ils recoivent une licence sans nom.. juste l'extension  ;D
    Mais si t'as une technique Schlum, on prend volontiers!
  • schlumschlum Membre
    13:14 modifié #19
    Je sais pas, j'ai pas compris le problème  :P
    c'est un problème avec Paypal ? Ton code a l'air d'être du PHP...
  • CéroceCéroce Membre, Modérateur
    août 2009 modifié #20
    Non, c'est un problème avec le script PHP d'Aquatic Prime.
    L'appli AquaticPrime Developper pour Mac accepte n'importe quelle chaà®ne de caractères (c'est codé en UTF8) et génère des licences valides.
    Par contre, le script PHP ne chiffre pas correctement les licences dés lors qu'il y a un caractère non-ASCII 7, et les licences sont refusées par notre appli.

    C'est pour ça que Louka vire tous les accents. Mais ça ne résout pas les problèmes des alphabets non-latins.
  • CéroceCéroce Membre, Modérateur
    13:14 modifié #21
    Le bac à  sable de PayPal.
    Ne tire pas les cheveux de tes petits camarades.
  • 13:14 modifié #22
    dans 1249636172:

    Le bac à  sable de PayPal.
    Ne tire pas les cheveux de tes petits camarades.

    Ben merde alors  ;D
  • 13:14 modifié #23
    Bon j'ai réglé le soucis.. j'utilise le meme code mais je l'applique uniquement pour le $dict (qui contient la variable $full_name). le $dict en question est utilisé pour générer la license. alors que pendant ce temps la meme variable est utilisée ailleurs pour envoyer le mail et aussi pour mettre un nom au fichier license.
    donc en gros dans la array $dict tu remplace $full_name par $full_name_mod qui sera $full_name mais sans les accents :p
    Vu que ça ça part dans le data de la license, l'utilisateur verra rien et la license marchera.
  • schlumschlum Membre
    13:14 modifié #24
    dans 1249632564:

    Non, c'est un problème avec le script PHP d'Aquatic Prime.
    L'appli AquaticPrime Developper pour Mac accepte n'importe quelle chaà®ne de caractères (c'est codé en UTF8) et génère des licences valides.
    Par contre, le script PHP ne chiffre pas correctement les licences dés lors qu'il y a un caractère non-ASCII 7, et les licences sont refusées par notre appli.

    C'est pour ça que Louka vire tous les accents. Mais ça ne résout pas les problèmes des alphabets non-latins.


    Si le problème est de générer une chaà®ne à  partir d'un nom, il suffit de prendre les codes UTF-8 des caractères non gérés non ? (une version améliorée de "htmlentities" par exemple...)
  • schlumschlum Membre
    13:14 modifié #25
    function utf2html($text)<br />{<br />&nbsp; &nbsp; &nbsp; &nbsp; $str = htmlentities(get_magic_quotes_gpc()?stripslashes($text):$text,ENT_QUOTES,&#39;UTF-8&#39;);<br />&nbsp; &nbsp; &nbsp; &nbsp; $ret = &#39;&#39;;<br />&nbsp; &nbsp; &nbsp; &nbsp; $max = strlen($str);<br />&nbsp; &nbsp; &nbsp; &nbsp; // keeps the index of the last regular character<br />&nbsp; &nbsp; &nbsp; &nbsp; $last = 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; for($i=0;$i&lt;$max;$i++) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c = $str{$i};<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c1 = ord($c);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 110x xxxx, 110 prefix for 2 bytes unicode<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($c1&gt;&gt;5==6) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // append all the regular characters we&#39;ve passed<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ret .= substr($str,$last,$i-$last);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // remove the 3 bit two bytes prefix<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c1 &amp;= 31;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // the next byte<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c2 = ord($str{++$i});<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // remove the 2 bit trailing byte prefix<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c2 &amp;= 63;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // last 2 bits of c1 become first 2 of c2<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c2 |= (($c1&amp;3)&lt;&lt;6);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // c1 shifts 2 to the right<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c1 &gt;&gt;= 2;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // this is the fastest string concatenation<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ret .= &#39;&#38;#&#39;.($c1*0x100+$c2).&#39;;&#39;;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $last = $i+1;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 1110 xxxx, 110 prefix for 3 bytes unicode<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else if($c1&gt;&gt;4==14) {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // append all the regular characters we&#39;ve passed<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ret .= substr($str,$last,$i-$last);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // the next byte<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c2 = ord($str{++$i});<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // the third byte<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c3 = ord($str{++$i});<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // remove the 4 bit three bytes prefix<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c1 &amp;= 15;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // remove the 2 bit trailing byte prefix<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c2 &amp;= 63;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // remove the 2 bit trailing byte prefix<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c3 &amp;= 63;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // last 2 bits of c2 become first 2 of c3<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c3 |= (($c2&amp;3)&lt;&lt;6);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // c2 shifts 2 to the right<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c2 &gt;&gt;= 2;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // last 4 bits of c1 become first 4 of c2<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c2 |= (($c1&amp;15)&lt;&lt;4);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // c1 shifts 4 to the right<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $c1 &gt;&gt;= 4;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // this is the fastest string concatenation<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ret .= &#39;&#38;#&#39;.(($c1*0x10000)+($c2*0x100)+$c3).&#39;;&#39;;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $last = $i+1;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; // append the last batch of regular characters<br />&nbsp; &nbsp; &nbsp; &nbsp; $ret .= substr($str,$last,$i);<br />&nbsp; &nbsp; &nbsp; &nbsp; return $ret;<br />}
    


    (le code que j'avais fait le jour où j'ai eu besoin d'un truc du genre...)
  • 13:14 modifié #26
    Merci pour le code schlum  je testerai ça dès mon retour sur terre  :P
  • CéroceCéroce Membre, Modérateur
    13:14 modifié #27
    Toujours sur Aquatic Prime, j'ai peut-être résolu le problème.

    La fonction de calcul de la signature est fournie sous deux formes:
    - sous la forme d'une fonction PHP
    - sous la forme d'un programme en C, plus rapide à  l'exécution, mais comme il faut compiler le fichier sur le serveur web, il faut avoir accès au shell de ce serveur, ce qui n'est pas mon cas, puisque j'utilise un serveur mutualisé.

    Le script PHP essaie d'exécuter le programme C compilé. S'il n'y arrive pas, il utilise la fonction PHP.
    Or, quelqu'un a posté une info importante sur Stack Overflow: le script PHP est bogué, mais ça marche avec le code en C.

    Du coup, j'ai compilé le programme en C sur mon ordi, et comparé le résultat du script PHP. Et dans la fonction getSignature(), en remplaçant:
    $hash = sha1(utf8_encode($total));
    

    par
    $hash = sha1($total);
    

    j'obtiens les mêmes signatures. D'ailleurs, le programme en C ne convertit pas en UTF-8; c'est normalement déjà  de l'UTF-8.


    Je propose que tous les membres qui s'appellent Hervé, Sébastien, René " en fait tous ceux dont le nom ou le prénom comporte des accents " achètent une licence de PortraiMatic pour vérifier que ça marche bien. Les autres aussi peuvent m'aider à  vérifier que les noms sans accents marchent toujours.  ;)
  • 13:14 modifié #28
    Par contre j'ai un blem là  depuis ce soir. Je sais pas si tu as pareil Céroce, mais la récupération des infos de l'utilisateur ne marche plus
    <br />$keyarray&#91;&#39;item_name&#39;];<br />
    

    Ne marche plus, ni les autres infos.. comme si la array était vide.
  • 13:14 modifié #29
    Bha tiens... 5 minutes plus tard le problème est fixé. ça semblait venir de Paypal en fait..
  • CéroceCéroce Membre, Modérateur
    13:14 modifié #30
    Oui, j'ai eu le même problème hier.

    Je t'avoue que j'en ai un peu marre du duo PayPal-Aquatic Prime.
    ça fonctionne quand même très mal. Si c'était à  refaire je prendrais autre chose. Je ne peux même pas partir en vacances l'esprit tranquille, parce que malgré le message écrit en gros, j'ai toujours des clients qui n'ont pas cliqué sur le bouton "Retour à  Céroce.com" à  la fin de la transaction, et je suis obligé de générer les licences à  la mano; ça me prend trop de temps, les clients m'appellent au téléphone, etc.

    Enfin, le système de débridage par un fichier est merdique dans son concept. Par exemple, pour débrider le logiciel pour tous les utilisateurs de l'ordinateur, il faut que le fichier soit accessible à  tous. Ce serait beaucoup plus simple pour eux de recopier un code sur un bout de papier. Et c'est sans compter les utilisateurs qui veulent absolument ouvrir le fichier pour y lire le code (c'est rare, mais ça arrive).
  • yoannyoann Membre
    13:14 modifié #31
    dans 1255699315:

    pour débrider le logiciel pour tous les utilisateurs de l'ordinateur, il faut que le fichier soit accessible à  tous.


    Faut voir comment est fait le framework mais pour ce genre de cas il suffit de placer le fichier licence dans /Library au lieux de ~/Library, c'est fait pour ça. Une application (ou un framework dans ce cas) codé correctement est censé regarder en premier dans ~/Library puis s'il ne trouve rien il va dans /Library (et il peyt même y avoir un /Network/Library dans certain cas)
Connectez-vous ou Inscrivez-vous pour répondre.