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' );
 |