,

Easy Digital Download : Créer une passerelle personnalisée de paiement

Easy Digital Download : Créer une passerelle personnalisée de paiement

J’utilise pour un projet le plugin pour WordPress Easy Digital Download. C’est une solution complète d’e-commerce pour la vente de produits numériques (voir le site ici et la démo ici).

La passerelle de paiement PayPal est incluse par défaut et d’autres sont disponibles dans les extensions sur le site d’Easy Digital Download.

Pour ma part il me fallait une passerelle pour les Cartes Bancaires françaises, le virement bancaire avec les infos du compte, un paiement par chèque avec l’adresse postale où l’envoyer.

J’ai trouvé sur un site en anglais (voir ici) ce qu’il me faut, mais bien entendu, il faut adapter un peu pour faire ce que l’on veut.

Je vous donne le code en entier pour réaliser cela, le code est détaillé sur le site :

<?php
/*
Plugin Name: Easy Digital Downloads - Sample Gateway
Plugin URL: http://easydigitaldownloads.com/extension/sample-gateway
Description: A sample gateway for Easy Digital Downloads
Version: 1.0
Author: Pippin Williamson
Author URI: https://pippinsplugins.com
Contributors: mordauk
*/
 
 
// registers the gateway
function pw_edd_register_gateway($gateways) {
	$gateways['sample_gateway'] = array('admin_label' => 'Sample Gateway', 'checkout_label' => __('Sample Gateway', 'pw_edd'));
	return $gateways;
}
add_filter('edd_payment_gateways', 'pw_edd_register_gateway');
 
function pw_edd_sample_gateway_cc_form() {
	// register the action to remove default CC form
	return;
}
add_action('edd_sample_gateway_cc_form', 'pw_edd_sample_gateway_cc_form');
 
// processes the payment
function pw_edd_process_payment($purchase_data) {
 
	global $edd_options;
 
	/**********************************
	* set transaction mode
	**********************************/
 
	if(edd_is_test_mode()) {
		// set test credentials here
	} else {
		// set live credentials here
	}
 
	/**********************************
	* check for errors here
	**********************************/
 
	/*
	// errors can be set like this
	if(!isset($_POST['card_number'])) {
		// error code followed by error message
		edd_set_error('empty_card', __('You must enter a card number', 'edd'));
	}
	*/
 
	// check for any stored errors
	$errors = edd_get_errors();
	if(!$errors) {
 
		$purchase_summary = edd_get_purchase_summary($purchase_data);
 
		/**********************************
		* setup the payment details
		**********************************/
 
		$payment = array( 
			'price' => $purchase_data['price'], 
			'date' => $purchase_data['date'], 
			'user_email' => $purchase_data['user_email'],
			'purchase_key' => $purchase_data['purchase_key'],
			'currency' => $edd_options['currency'],
			'downloads' => $purchase_data['downloads'],
			'cart_details' => $purchase_data['cart_details'],
			'user_info' => $purchase_data['user_info'],
			'status' => 'pending'
		);
 
		// record the pending payment
		$payment = edd_insert_payment($payment);
 
		$merchant_payment_confirmed = false;
 
		/**********************************
		* Process the credit card here.
		* If not using a credit card
		* then redirect to merchant
		* and verify payment with an IPN
		**********************************/
 
		// if the merchant payment is complete, set a flag
		$merchant_payment_confirmed = true;		
 
		if($merchant_payment_confirmed) { // this is used when processing credit cards on site
 
			// once a transaction is successful, set the purchase to complete
			edd_update_payment_status($payment, 'complete');
 
			// go to the success page			
			edd_send_to_success_page();
 
		} else {
			$fail = true; // payment wasn't recorded
		}
 
	} else {
		$fail = true; // errors were detected
	}
 
	if( $fail !== false ) {
		// if errors are present, send the user back to the purchase page so they can be corrected
		edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
	}
}
add_action('edd_gateway_sample_gateway', 'pw_edd_process_payment');
 
// adds the settings to the Payment Gateways section
function pw_edd_add_settings($settings) {
 
	$sample_gateway_settings = array(
		array(
			'id' => 'sample_gateway_settings',
			'name' => '<strong>' . __('Sample Gateway Settings', 'pw_edd') . '</strong>',
			'desc' => __('Configure the gateway settings', 'pw_edd'),
			'type' => 'header'
		),
		array(
			'id' => 'live_api_key',
			'name' => __('Live API Key', 'pw_edd'),
			'desc' => __('Enter your live API key, found in your gateway Account Settins', 'pw_edd'),
			'type' => 'text',
			'size' => 'regular'
		),
		array(
			'id' => 'test_api_key',
			'name' => __('Test API Key', 'pw_edd'),
			'desc' => __('Enter your test API key, found in your Stripe Account Settins', 'pw_edd'),
			'type' => 'text',
			'size' => 'regular'
		)
	);
 
	return array_merge($settings, $sample_gateway_settings);	
}
add_filter('edd_settings_gateways', 'pw_edd_add_settings');

Pour ma part, j’ai aussi rajouté ses lignes pour l’internationalisation et ajouté le dossier /languages/ :
add_action( 'init', 'pw_edd_make_multilang' );
function pwc_edd_make_multilang() {
    load_plugin_textdomain('pw-edd', false, dirname( plugin_basename( __FILE__ ) ).'/languages');
}

Vous trouverez le plugin en téléchargement ici !

Avez-vous trouvé cela utile ?

 

 

1 réponse

Trackbacks (rétroliens) & Pingbacks

  1. […] Source: Easy Digital Download : Créer une passerelle personnalisée de paiement […]

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *