News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu

taille d'un champ d'enregistrement dans abonnement payant

Started by DanielSan34, January 14, 2016, 04:31:43 AM

Previous topic - Next topic

maximus23

Bonjour,

Tu as mis la fonction dans load et ssi ? elle est dupliquée... celle du load tu retires car tu utilises celle du ssi.

Tu as bien mis require Profile-Modify dans le fichier SSI après require Security ?

Fais le test indiqué au dessus :)

Pas de support par PM ou Courrier...Veuillez utiliser le forum pour vous avoir une réponse rapide à votre demande d'aide. Merci.
Amitiés et à Bientôt...
No support by PM or Mail...You will get better and faster responses in the support forums. Thank you.
Have a nice day...

maximus23

Bonjour,

Bon là je dois m'absenter un moment le plus important est le test avec une variable comme indiqué le reste ne sera pas compliqué.

:)
Pas de support par PM ou Courrier...Veuillez utiliser le forum pour vous avoir une réponse rapide à votre demande d'aide. Merci.
Amitiés et à Bientôt...
No support by PM or Mail...You will get better and faster responses in the support forums. Thank you.
Have a nice day...

DanielSan34

en effet j'avais 2 fonctions, mais avec des noms différents,
m'enfin l'appel de ssi_loadMyCustomFields() via le fichier Subscriptions-PayPal.php me provoque une page blanche, sans log SMF

j'ai bien
require_once($sourcedir . '/Security.php');
require_once($sourcedir . '/Profile-Modify.php');


ok moi aussi vais prendre l'air, @tout et bonne aprem'

maximus23

Bonjour,

Fais le test de variable :

Tu retires la fonction dans le fichier subscriptions et tu fais un test simple.

Pour faire un test ajoute au début de ton fichier donc après loadLanguage('ManagePaid'); une déclaration de variable par ex : $test_rue ='ma rue'; et tu mets la variable dans un champ de récupération de ton mail pour savoir si la variable passe

Par exemple : 'CUST_RUE'      => $test_rue,

Si cela passe on va faire juste une petite modif.

:)
Pas de support par PM ou Courrier...Veuillez utiliser le forum pour vous avoir une réponse rapide à votre demande d'aide. Merci.
Amitiés et à Bientôt...
No support by PM or Mail...You will get better and faster responses in the support forums. Thank you.
Have a nice day...

DanielSan34

Bonsoir,

dans Subscriptions-PayPal.php,
en utilisant seulement la fonction ssi_loadMyCustomFields(); avec
global $db_connection, $modSettings, $context, $sc, $user_info, $topic, $board, $txt;
j'ai une page blanche et aucune erreur dans le log SMF

si par contre j'utilise la fonction

global $db_prefix, $context, $txt, $user_profile, $smcFunc, $user_info, $settings, $scripturl;
loadMyCustomFields($memID, $area = 'summary'); // fichier /Sources/Load.php

là la page d'abonnement s'affiche bien avec le formulaire en entier

sauf que ça génère 2 erreurs :

  • Undefined variable: memberContext dans Load.php
  • Undefined variable: memID dans Subscriptions-PayPal.php

en ajoutant $memID avant l'appel de la fonction dans Subscriptions-PayPal.php
$memID = $context['user']['id'];
loadMyCustomFields($memID, $area = 'summary'); // fichier /Sources/Load.php


ça génère une seule erreur :

  • Undefined variable: memberContext dans Load.php
si je rajoute $memberContext dans la liste des global de la fonction loadMyCustomFields() de Load.php
je n'ai plus d'erreur dans le log SMF.

je fais donc un essai d'abonnement ... ET TU SAIS QUOI ?
Ma carte bancaire est bloquée !
J'peux plus faire d'essai ! ;D >:( :( ;D ;D ;D

raz le bol de cette histoire lol

maximus23

Bonsoir,

Quelle idée tu as peut-être une limite de transaction par jour quelque soit le montant.

Moi le test que j'aurais voulu que tu fasses est celui de la variable comme indiqué dans les postes précédent le reste ce n'est pas grave juste un détail à ajuster. Le plus important est de savoir si la variable passe comme demandé.

:)
Pas de support par PM ou Courrier...Veuillez utiliser le forum pour vous avoir une réponse rapide à votre demande d'aide. Merci.
Amitiés et à Bientôt...
No support by PM or Mail...You will get better and faster responses in the support forums. Thank you.
Have a nice day...

DanielSan34

vivi, la variable été bien placée, c'est juste que j'avais une page blanche avec les fonctions.
demain je fais un test et j'irai auquel cas à la banque ...

maximus23

Bonsoir,

Ok mais juste un test avec la variable au début du fichier subscriptions et rien d'autre pour savoir si tu la récupères bien dans le mail.

Après on verra la suite.

En attendant repose toi ce sera une bonne chose moi j'ai pas le choix lol :)

Pas de support par PM ou Courrier...Veuillez utiliser le forum pour vous avoir une réponse rapide à votre demande d'aide. Merci.
Amitiés et à Bientôt...
No support by PM or Mail...You will get better and faster responses in the support forums. Thank you.
Have a nice day...

DanielSan34

le mail n'est envoyé que lorsque le paiement est validé ;)
repos forcé ;)

DanielSan34

Bonjour,

ça y est, pb de cb résolu ;D
j'ai pu faire un test, qui fonctionne, notification envoyée à l'admin et la variable indiquée est bien insérée !

pour rappel, en début de fichier subscriptions.php
loadLanguage('ManagePaid');
$test_rue ='ma rue';


et dans la portion de code liée à l'envoi de l'email (après // Send a receipt? ),
sans la fonction ssi_loadMyCustomFields() ni loadMyCustomFields
Quote$replacements = array(
[...]
'CUST_RUE'      => $test_rue,);

:D

maximus23

#70
Bonjour,

Alors ok c'est simple tu inserts la fonction ou tu as mis la variable.

loadLanguage('ManagePaid');

global $db_prefix, $context, $txt, $user_profile, $smcFunc, $user_info, $settings, $scripturl, $memberContext ;
ssi_loadMyCustomFields($memID, $area = 'summary');

Tu déclares des variables pour le $context donc on aura


$rue = $context['mycustom_fields'][1]['value'];
$rue = trim($rue);


donc reste plus qu'a mettre :

'cust_rue' => $rue,

Voilà tu testes le minimum pour voir si c'est bon et si c'est ok tu fais le même pour le reste.

Dis moi ce qu'il en est :)

Vérifie que le fichier test fonctionne correctement.

Pas de support par PM ou Courrier...Veuillez utiliser le forum pour vous avoir une réponse rapide à votre demande d'aide. Merci.
Amitiés et à Bientôt...
No support by PM or Mail...You will get better and faster responses in the support forums. Thank you.
Have a nice day...

DanielSan34

Bonjour,

en faisant ce que tu m'as dit, le statut du paiement est "en attente", donc pas d'email envoyé.
(j'ai refait le test précédent pour être sûr)

$memID est-il déclaré en amont ?

voici ce que j'ai en début de fichier subscriptions.php
// Start things rolling by getting SMF alive...
$ssi_guest_access = true;
if (!file_exists(dirname(__FILE__) . '/SSI.php'))
die('Cannot find SSI.php');

require_once(dirname(__FILE__) . '/SSI.php');
require_once($sourcedir . '/ManagePaid.php');

// For any admin emailing.
require_once($sourcedir . '/Subs-Admin.php');

loadLanguage('ManagePaid');

DanielSan34

avec

# récupérationd des champs perso pour insértion dans notification admin
global $db_prefix, $context, $txt, $user_profile, $smcFunc, $user_info, $settings, $scripturl, $memberContext ;
$memID = $context['user']['id'];
ssi_loadMyCustomFields($memID, $area = 'summary'); // fichier /SSI.php

c'est pareil

maximus23

Bonsoir,

Quand tu exécutes le fichier subscritions directement tu dois avoir le même que ton fichier test avec un arrêt sur données d'entrée.

Donc à tester avec un echo sur une variable.

:)
Pas de support par PM ou Courrier...Veuillez utiliser le forum pour vous avoir une réponse rapide à votre demande d'aide. Merci.
Amitiés et à Bientôt...
No support by PM or Mail...You will get better and faster responses in the support forums. Thank you.
Have a nice day...

DanielSan34

Quote from: maximus23 on February 01, 2016, 11:10:32 AM
loadLanguage('ManagePaid');
global $db_prefix, $context, $txt, $user_profile, $smcFunc, $user_info, $settings, $scripturl, $memberContext ;
ssi_loadMyCustomFields($memID, $area = 'summary');


en fait c'est ssi_loadMyCustomFields(); plutôt ;D
et oui si je fais
for($i=0;$i<sizeof($context['mycustom_fields']);$i++){
echo $context['mycustom_fields'][$i]['name']." : ".$context['mycustom_fields'][$i]['value']."<br/>\n";
}

ça affiche bien les variables.

Je pense qu'il doit se passer quelque chose car chaque fois le statut du paiement se met en attente au lieu de confirmé.

maximus23

Bonsoir,

Encore un truc de dingue lol :)

Bon ne bloque pas ta carte inutilement un peu de patience je regarde une autre piste en output direct pour voir ce qu'il en est un peu de patience :)
Pas de support par PM ou Courrier...Veuillez utiliser le forum pour vous avoir une réponse rapide à votre demande d'aide. Merci.
Amitiés et à Bientôt...
No support by PM or Mail...You will get better and faster responses in the support forums. Thank you.
Have a nice day...

maximus23

Bonsoir,

Bon tu retires tout ce qui est fonction etc .....On fait tout simple

Voila tu mets cela dans ton fichier test pour voir comment cela fonctionne.

   $request = $smcFunc['db_query']('', 'SELECT col_name, field_name, bbc, enclose FROM {db_prefix}custom_fields', array() );
   $custom_fields = array();
   while ($row = $smcFunc['db_fetch_assoc']($request))
   {
      $custom_fields[] = array(
         'colname' => $row['col_name'],
         'title' => $row['field_name'],
         'bbc' => $row['bbc'],
         'enclose' => $row['enclose'],
      );
   }
   foreach ($custom_fields as $cf)
   {
      $value = $options[$cf['colname']];

      $memberContext[$user_info['id']]['cfs'][] = array(
         'title' => $cf['title'],
         'colname' => $cf['colname'],
         'value' => $value,
      );
   }
   $custom_fields = $memberContext[$user_info['id']]['cfs'];


// variable directe


echo  $memberContext[$user_info['id']]['cfs'][1]['title'];

echo ' : ';

echo  $memberContext[$user_info['id']]['cfs'][1]['value'];



Puis tu intègres cela directement dans ta fonction d'envoi de mail le code complet et bien sur l'adaptation des variables.

Tu testes et tu me dis si cela est bon :)
Pas de support par PM ou Courrier...Veuillez utiliser le forum pour vous avoir une réponse rapide à votre demande d'aide. Merci.
Amitiés et à Bientôt...
No support by PM or Mail...You will get better and faster responses in the support forums. Thank you.
Have a nice day...

maximus23

Bonsoir,

Cela te donne ceci pour ta suscriptions.php


// Send a receipt?
if (!empty($modSettings['paid_email']) && $modSettings['paid_email'] == 2 && $notify)
{


$request = $smcFunc['db_query']('', 'SELECT col_name, field_name, bbc, enclose FROM {db_prefix}custom_fields', array() );
$custom_fields = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
{
$custom_fields[] = array(
'colname' => $row['col_name'],
'title' => $row['field_name'],
'bbc' => $row['bbc'],
'enclose' => $row['enclose'],
);
}
foreach ($custom_fields as $cf)
{
$value = $options[$cf['colname']];

$memberContext[$user_info['id']]['cfs'][] = array(
'title' => $cf['title'],
'colname' => $cf['colname'],
'value' => $value,
);
}
   $custom_fields = $memberContext[$user_info['id']]['cfs'];

$replacements = array(
'NAME' => $subscription_info['name'],
'SUBNAME' => $member_info['member_name'],
'SUBUSER' => $member_info['real_name'],
'SUBEMAIL' => $member_info['email_address'],
'PRICE' => sprintf($modSettings['paid_currency_symbol'], $total_cost),
'PROFILELINK' => $scripturl . '?action=profile;u=' . $member_id,
'DATE' => timeformat(time(), false),
'CUST_PRENOM' => $memberContext[$user_info['id']]['cfs'][1]['value'],
'CUST_NOM' => $memberContext[$user_info['id']]['cfs'][1]['value'],
'CUST_ETB' => $memberContext[$user_info['id']]['cfs'][1]['value'],
'CUST_RUE' => $memberContext[$user_info['id']]['cfs'][1]['value'],
'CUST_CP' => $memberContext[$user_info['id']]['cfs'][1]['value'],
'CUST_VILLE' => $memberContext[$user_info['id']]['cfs'][1]['value'],
'CUST_TEL' => $memberContext[$user_info['id']]['cfs'][1]['value'],
);

emailAdmins('paid_subscription_new', $replacements, $notify_users);
}


Cela et rien d'autre.

Avec le fichier test tu fais un print_r pour avoir les bonnes valeurs de retour de ton tableau.

:)
Pas de support par PM ou Courrier...Veuillez utiliser le forum pour vous avoir une réponse rapide à votre demande d'aide. Merci.
Amitiés et à Bientôt...
No support by PM or Mail...You will get better and faster responses in the support forums. Thank you.
Have a nice day...

DanielSan34

Bonsoir,

alors le paiement est bien confirmé, l'email bien envoyé mais pourtant les champs sont vides :(

Pourtant en insérant ce code en haut du fichier subscriptions.php,
en affichant direct les variables, ça marche.




Lorsqu'en haut je les associe
$prenom = $memberContext[$user_info['id']]['cfs'][1]['value'];

puis en bas
'CUST_PRENOM' => $memberContext[$user_info['id']]['cfs'][1]['value'],
c'est vide >:D
c'est à n'y rien comprendre ! Et à perdre le peu de cheveux qu'il nous reste O0




Du coup j'ai fait un autre test, dans la fonction d'envoi d'email :
$replacements = array(
'NAME' => $subscription_info['name'],
'SUBNAME' => $member_info['member_name'],
'SUBUSER' => $member_info['real_name'],
'SUBEMAIL' => $member_info['email_address'],
'PRICE' => sprintf($modSettings['paid_currency_symbol'], $total_cost),
'PROFILELINK' => $scripturl . '?action=profile;u=' . $member_id,
'DATE' => timeformat(time(), false),
'CUST_PRENOM' => $memberContext[$user_info['id']]['cfs'][1]['value'],
'CUST_NOM' => $memberContext[$user_info['id']]['cfs'][0]['value'],
'CUST_ETB' => trim($memberContext[$user_info['id']]['cfs'][7]['value']),
'CUST_RUE' => $memberContext[$user_info['id']]['cfs'][2]['value'],
// 'CUST_CP' => $memberContext[$user_info['id']]['cfs'][4]['value'],
'CUST_CP' => "test de code postal",
'CUST_VILLE' => $memberContext[$user_info['id']]['cfs'][5]['value'],
'CUST_TEL' => $memberContext[$user_info['id']]['cfs'][6]['value'],
);



et l'email reçu :
QuoteCoordonnées
Prénom :
Nom :
Établissement :
Rue :
Code postal : test de code postal
Ville :
Téléphone

honnêtement je suis perdu, y'a un loup quelque part ...

maximus23

Bonsoir,

En haut ?

Tu as bien mis le code comme indiqué dans // Send a receipt? ?

:)
Pas de support par PM ou Courrier...Veuillez utiliser le forum pour vous avoir une réponse rapide à votre demande d'aide. Merci.
Amitiés et à Bientôt...
No support by PM or Mail...You will get better and faster responses in the support forums. Thank you.
Have a nice day...

Advertisement: