[TUTO] Virtuemart 2.x / GameCP 1.2.8

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [TUTO] Virtuemart 2.x / GameCP 1.2.8

    AVERTISSEMENT : Ce tutoriel est actuellement en cours de rédaction...

    Préambule : N'étant pas développeur PHP et mes connaissances en la matière se limitant au "bricolage" à partir d'exemples de bouts de code, la solution qui suit est le fruit de nombreuses recherches. Par ce tutoriel je souhaite épargner à toute personne qui voudrait mettre en relation leur site sous VM 2.x et la solution propriétaire GameCP 1.2.x (à l'heure où j'écris ces lignes, la version 1.3 n'est encore qu'en bêta et sa date de sortie n'est pas connue).

    Remerciements : Je tiens à remercier pour leur aide précieuse : PATSXM971

    Objectif : Permettre la création automatisée d'un compte utilisateur et/ou d'un serveur de jeu sous GameCP au moment où une commande passée sur Virtuemart passe en statut "Payée".
    Lorsque survient cet évènement, il faudra que soient effectuées automatiquement les opérations suivantes :
    • vérifier si l'utilisateur virtuemart existe déjà dans la BD des utilisateurs GameCP et le créer si besoin,
    • créer le serveur de jeu commandé avec les choix définis par le client (RAM, Nbre de slots, Privé/Public, etc)


    Support documentaire : Afin de mettre en oeuvre cette solution, il y a lieu de se référer aux documentations suivantes :
    • API de GameCP (wiki)
    • API de virtuemart (lien)


    1 - Insertion dans le code de Virtuemart :
    Ce code est à ajouter dans le fichier [racine_de_votre_site]/administrator/components/com_virtuemart/models/orders.php
    après la ligne :
    Code PHP:
    $data->order_status == "X" 
    ATTENTION : Ce bout de code est encore en dévelopement, ne pas l'utiliser en l'état !!!

    Code PHP:
    /* Code pour que VM envoie des infos à l'API de GameCP
    pour la construction du serveur.
    Ce code est à ajouter dans le fichier administrator/components/com_virtuemart/models/orders.php
    après la ligne :
    $data->order_status == "X"
    */


                
    if ($data->order_status == "C") { // Si la commande dans VM passe à "payée"
                
    $url =        "http://votre_url.com"// The URL to your GameCP panel
                
    $passphrase =    "votre_password_api";  // The passphrase defined in Settings > Billing
                
                /* [A CODER] Vérifier si le client VM a déjà un compte sur GameCP (en comparant adresse mail ?) */
                    // Si oui : récupérer son customerid dans variable $customerid
                    // Si non, continuer et créer l'utilisateur avant de créer le serveur

                /* [ILLUSTRATION] Collecte des données nécessaires à la création d'un customer dans GameCP */
                /* Dans virtuemart, on capture les infos de cette manière :
                $userinfo = ps_user::getUserInfo($current_user->id);
                $firstname=$userinfo->f("first_name");
                */
                
    $postdata = array(
                    
    "passphrase" => $passphrase,
                    
    "action" => "create"// ou 'action' => 'unsuspend', (si il sagit dun renouvellement)
                    
    "idtype" => 'direct'//(si il sagit dun renouvellement)
                    
    "function"   => "createacct",
                    
    "username"   =>  $infoFromYourAPI["User Name"],
                    
    "password"   =>  $infoFromYourAPI["password"],
                    
    "customerid"  => $infoFromYourAPI['userid'],
                    
    "packageid"  => $packageID,
          
                    
    // profile information 
                     
    "emailaddr"  => $order['details']['BT']->email
                    
    "firstname"  => $address->first_name
                    
    "lastname"   => $address->last_name
                    
    "address"    => $address->address_1
                    
    "city"       => $address->city
                    
    "state"      => isset($address->virtuemart_state_id) ? ShopFunctions::getStateByID ($address->virtuemart_state_id) : ''
                    
    "country"    => ShopFunctions::getCountryByID ($address->virtuemart_country_id'country_2_code'), 
                    
    "zipcode"    => $address->zip
                    
    "phonenum"   => $address->phone_1,  

                    
    // Game server information
                    
    "game_id"     => $infoFromYourAPI["game_id"],
                    
    "max_players" => $infoFromYourAPI['Players'],
                    
    "pub_priv"    => $infoFromYourAPI["pubpriv"],
                    
    "login_path"  => $infoFromYourAPI["no"],
                    
    "sv_location" => $infoFromYourAPI["Location"], //"null" pour Automatic
          
                    /* game profile */
                    
    "website"     => $infoFromYourAPI['Website'],
                    
    "hostname"    => $infoFromYourAPI['Host Name'],
                    
    "motd"         => $infoFromYourAPI['MOTD'],
                    
    "rcon_password"    => $infoFromYourAPI['RCON Password'],
                    
    "priv_password"    => $infoFromYourAPI['Server Password'],
                    
    "addons" => serialize($infoFromYourAPI['addons'])
                );
                
    /* [CODE] Envoie des données par Curl */
                
    $ch curl_init(rtrim($url"/")."/billing/mb/index.php"); 
                
    curl_setopt($chCURLOPT_HEADER0);
                
    curl_setopt($chCURLOPT_POST1);
                
    curl_setopt($chCURLOPT_POSTFIELDS$postdata);
                
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
                
    $output curl_exec($ch);       
                
    curl_close($ch); 

                echo 
    $output
    2 - Création de champs personnalisés dans virtuemart :
    (description)

    3 - Créer votre premier produit :
    (description)
    Dernière édition par le_gnou à 14/08/2012, 11h48

Annonce

Réduire
Aucune annonce pour le moment.

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X