29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / eZ Publish / Dossiers techniques / eZ Publish : Selling Pay-Per-Download Products - Vendre des produits à télécharger (dématérialisés) / Extension: Assigning permissions upon purchase part 1 -- Extension: assignation des droits à l'achat (partie 1)





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

eZ Publish : Selling Pay-Per-Download Products - Vendre des produits à télécharger (dématérialisés)

Table des matières

  1. Selling Pay-Per-Download Products - Vendre des produits à télécharger (dématérialisés)
  2. The buyer experience -- L'expérience client
  3. Setting up the product and permission structure -- Mise en oeuvre du produit et des permissions
  4. Payment process -- Processus de paiement
  5. Extension: Assigning permissions upon purchase part 1 -- Extension: assignation des droits à l'achat (partie 1)
  6. Pay-per-download extension part 2 -- Extension Pay-per-download (partie 2)
  7. Confirmation e-mails and pages -- Mails et pages de confirmation
  8. Extra considerations -- Considérations complémentaires
  9. Paypal Sandbox : comptes de test et devises
  10. Modification pour eZ Publish 4.3+

Extension: Assigning permissions upon purchase part 1 -- Extension: assignation des droits à l'achat (partie 1)

Date de publication: le vendredi 28 janvier 2011 à 00h52
Dernière modification: par Pascal BOYER le mardi 29 mars 2011 à 16h16

31-08-2009 12:00

Versions: 4.x

With the permissions structure in place, we need to create the workflow event that will assign buyers the correct role with the correct limitation when they have checked out. We need to create a workflow extension that will be triggered after the buyer has paid.
Avec les droits existants nous devons créer l'événement de workflow qui assignera aux acheteurs le rôle adéquat et la limitation idoine après avoir passé commande. Nous devons donc créer une extension workflow qui sera déclenchée après que l'acheteur a payé.

The framework for a workflow extension is quite straightforward, including the following extension file and folder structure (beneath eZ Publish's "extension" folder):
Le framework pour la mise en œuvre d'une telle extension est très simple et inclut la structure de fichiers et de répertoires suivante (placée sous le répertoire extension/):

payperdownload
-- eventtypes
---- event
------ payperdownload
-------- payperdownloadtype.php
-- settings
---- workflow.ini.append.php
---- payperdownload.ini

workflow.ini

In workflow.ini.append.php within your extension, you need to refer to the extension directory itself as containing (a) workflow event(s), and specify the name of the event, prefixed by "event_":
Vous devez, dans le fichier workflow.ini.append.php de votre extension, faire référence au répertoire de l'extension comme contenant (un) événement(s) de workflow et spécifier le nom de cet événement en le préfixant par event_:

<?php /* #?ini charset="utf-8"?
 
[EventSettings]
ExtensionDirectories[]=payperdownload
AvailableEventTypes[]=event_payperdownload
 
*/ ?>
 

payperdownloadtype.php

payperdownloadtype.php will contain all of the code you want to execute when the workflow is triggered. For now, we will just set up the framework for the class using some boilerplate code:
Le fichier payperdownloadtype.php contient tout le code que vous souhaitez exécuter lorsque le workflow est déclenché. Nous définirons, pour l'instant, uniquement le framework pour la classe utilisant du code réutilisable (???)

<?php
 
class PayPerDownloadType extends eZWorkflowEventType
{
    const WORKFLOW_TYPE_STRING = "payperdownload";
 
    public function __construct()
    {
        parent::__construct( self::WORKFLOW_TYPE_STRING, ezi18n( 'kernel/workflow/event', 'Pay Per Download' ) );
        $this->setTriggerTypes( array( 'shop' => array( 'checkout' => array( 'before' ) ) ) );
    }
 
    public function execute( $process, $event )
    {
        // Important code will go here
 
        return eZWorkflowType::STATUS_ACCEPTED;
    }
}
 
eZWorkflowEventType::registerEventType( PayPerDownloadType::WORKFLOW_TYPE_STRING, 'PayPerDownloadType' );
?>
 

The "PayPerDownloadType" function defines the workflow event and specifies the trigger(s) for which it is meant. The "execute" function will contain all of our important code to assign the role based on the product(s) purchased. We will write this code shortly. The last line in the file registers our event with eZ Publish.
La fonction PayPerDownloadType définit l'événement de workflow et spécifie le(s) déclencheur(s) auquel il est destiné. La fonction execute contiendra l'ensemble du code, que nous écrirons bientôt, qui assignera le rôle basé sur l'achat du/des produit(s). La dernière ligne du fichier enregistre/déclare notre événement dans eZ Publish.

For now our code does nothing, of course, but we should first make sure that our framework works before we proceed.
Notre code ne fait, pour l'instant, rien du tout mais nous devons tout d'abord nous assurer que notre framework fonctionne avant d'aller plus loin.

Activate the extension / Activer l'extension

The extension is activated as is the normal process in site.ini.append.php, and we will do this in that file in settings/override:
L'extension est activée par le biais du fichier settings/override/site.ini.append.php:

[ExtensionSettings]
ActiveExtensions[]
# ... other extensions are also activated in this list
ActiveExtensions[]=payperdownload
 

You should also clear the cache and regenerate the autoloads file.
Vous devez bien sûr vider les caches puis régénérer le tableau d'autochargement.

Tell eZ Publish when to use the workflow / Indiquer à eZ Publish quand utiliser le workflow

We want our event to directly follow the PayPal payment event, and will actually use the same workflow. Go to "Setup > Workflows" in the Administration Interface click the "Payment gateways" workflow group, then edit the "Payment and Fulfillment" workflow. Add an event of the "Event / Pay per download" type in this workflow.
Nous souhaitons que notre événement suive directement l'événement de paiement chez Paypal et qu'il utilise le même workflow. Pour se faire, placez-vous dans l'onglet Administration puis cliquez sur le lien Workflows du menu gauche. Cliquez sur le groupe Passerelle de paiement puis éditez le workflow Paiement et Telechargement pour y ajouter un événement de type Event / Pay Per download.

As our workflow event doesn't really do anything yet, you shouldn't notice any difference when you use your "Test User" account to purchase a product. However, if you were able to add an event of the "Pay Per Download" type in the Administration Interface, that means that eZ Publish has recognized your workflow extension.
Étant donné que notre événement de workflow ne fait encore rien, vous ne devez noter aucune différence lorsque vous utilisez le compte Utilisateur De test pour acheter un produit. Cependant, s'il vous a été possible d'ajouter un événement de type Pay Per Download à partir de l'interface d'administration alors cela signifie que eZ Publish a bien reconnu votre extension.



Table des matières

  1. Selling Pay-Per-Download Products - Vendre des produits à télécharger (dématérialisés)
  2. The buyer experience -- L'expérience client
  3. Setting up the product and permission structure -- Mise en oeuvre du produit et des permissions
  4. Payment process -- Processus de paiement
  5. Extension: Assigning permissions upon purchase part 1 -- Extension: assignation des droits à l'achat (partie 1)
  6. Pay-per-download extension part 2 -- Extension Pay-per-download (partie 2)
  7. Confirmation e-mails and pages -- Mails et pages de confirmation
  8. Extra considerations -- Considérations complémentaires
  9. Paypal Sandbox : comptes de test et devises
  10. Modification pour eZ Publish 4.3+