79 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * Manual Gateway
 | 
						|
 *
 | 
						|
 * @package     EDD
 | 
						|
 * @subpackage  Gateways
 | 
						|
 * @copyright   Copyright (c) 2018, Easy Digital Downloads, LLC
 | 
						|
 * @license     http://opensource.org/licenses/gpl-2.0.php GNU Public License
 | 
						|
 * @since       1.0
 | 
						|
 */
 | 
						|
 | 
						|
// Exit if accessed directly
 | 
						|
defined( 'ABSPATH' ) || exit;
 | 
						|
 | 
						|
/**
 | 
						|
 * Manual Gateway does not need a CC form, so remove it.
 | 
						|
 *
 | 
						|
 * @since 1.0
 | 
						|
 * @return void
 | 
						|
 */
 | 
						|
add_action( 'edd_manual_cc_form', '__return_false' );
 | 
						|
 | 
						|
/**
 | 
						|
 * Processes the purchase data and uses the Manual Payment gateway to record
 | 
						|
 * the transaction in the Purchase History
 | 
						|
 *
 | 
						|
 * @since 1.0
 | 
						|
 * @param array $purchase_data Purchase Data
 | 
						|
 * @return void
 | 
						|
*/
 | 
						|
function edd_manual_payment( $purchase_data ) {
 | 
						|
	if( ! wp_verify_nonce( $purchase_data['gateway_nonce'], 'edd-gateway' ) ) {
 | 
						|
		wp_die( __( 'Nonce verification has failed', 'easy-digital-downloads' ), __( 'Error', 'easy-digital-downloads' ), array( 'response' => 403 ) );
 | 
						|
	}
 | 
						|
 | 
						|
	/*
 | 
						|
	* Purchase data comes in like this
 | 
						|
	*
 | 
						|
	$purchase_data = array(
 | 
						|
		'downloads' => array of download IDs,
 | 
						|
		'price' => total price of cart contents,
 | 
						|
		'purchase_key' =>  // Random key
 | 
						|
		'user_email' => $user_email,
 | 
						|
		'date' => date('Y-m-d H:i:s'),
 | 
						|
		'user_id' => $user_id,
 | 
						|
		'post_data' => $_POST,
 | 
						|
		'user_info' => array of user's information and used discount code
 | 
						|
		'cart_details' => array of cart details,
 | 
						|
	);
 | 
						|
	*/
 | 
						|
 | 
						|
	$payment_data = array(
 | 
						|
		'price'        => $purchase_data['price'],
 | 
						|
		'date'         => $purchase_data['date'],
 | 
						|
		'user_email'   => $purchase_data['user_email'],
 | 
						|
		'purchase_key' => $purchase_data['purchase_key'],
 | 
						|
		'currency'     => edd_get_currency(),
 | 
						|
		'downloads'    => $purchase_data['downloads'],
 | 
						|
		'user_info'    => $purchase_data['user_info'],
 | 
						|
		'cart_details' => $purchase_data['cart_details'],
 | 
						|
		'status'       => 'pending',
 | 
						|
	);
 | 
						|
 | 
						|
	// Record the pending payment
 | 
						|
	$payment = edd_insert_payment( $payment_data );
 | 
						|
 | 
						|
	if ( $payment ) {
 | 
						|
		edd_update_payment_status( $payment, 'complete' );
 | 
						|
		// Empty the shopping cart
 | 
						|
		edd_empty_cart();
 | 
						|
		edd_send_to_success_page();
 | 
						|
	} else {
 | 
						|
		edd_record_gateway_error( __( 'Payment Error', 'easy-digital-downloads' ), sprintf( __( 'Payment creation failed while processing a manual (free or test) purchase. Payment data: %s', 'easy-digital-downloads' ), json_encode( $payment_data ) ), $payment );
 | 
						|
		// 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_manual', 'edd_manual_payment' );
 |