Construct
1. Add $priority = 10 and $accepted_args = 2 to the following add_action calls from __construct():
add_action( 'prefive_taketo_' . $this->unique_slug . '_gateway', array( $this, 'taketogateway_function' ), 10, 2 ); add_action( 'prefive_processafter_' . $this->unique_slug . '_gateway', array( $this, 'processgateway_function' ), 10, 2 );
2.Add the following filter to the __construct() function:
add_filter( 'prefive_take_allowed_currency_' . $this->unique_slug, array( $this,'get_gateway_currency' ) );
3. Add the following function in your class, after __construct():
function get_gateway_currency( $currency ) { // if the gateway requires a specific currency you can declare it there // currency conversions are done automatically $currency = 'USD'; // delete this line if the gateway works with any currency return $currency; }
Checkout
Starting with v2 we are passing the $common_details as a parameter to the checkout function and we also use a $payment_type parameter, which makes your gateway work with all the Prefive functionality without extra coding.
4. Add the $payment_type and $common_details parameters to taketogateway_function():
public function taketogateway_function( $payment_type, $common_details ) {
5. Remove the $common_details declaration from the taketogateway_function() since it is now passed as a parameter:
// delete the following line! $common_details = get_common_details( $this->unique_slug, 0, $currency );
6. Add the $payment_type parameter to your return URLs as follows:
$all_data['success_url'] = get_bloginfo( 'url' ) . '/?payment_response=sample&payment_type=' . $payment_type; $all_data['fail_url'] = get_bloginfo( 'url' ) . '/?payment_response=sample&action=fail&payment_type=' . $payment_type;
Processing
Starting with v2, based on the response that you get, you have 2 actions that you need to run and the rest of the work is done on our side.
7. Add the $payment_type and $details parameters to processgateway_function():
function processgateway_function( $payment_type, $details ) {
8. Remove the old code for success and failed transactions from processgateway_function():
// delete the following lines! if ( $status == 'success' ) { $payment_status = 'completed'; $payment_response = maybe_serialize( $_POST ); prefive_mark_job_prchase_completed( $order_id, $payment_status, $payment_response, $payment_details ); if ( get_option( 'prefive_sample_success_page' ) != '' ) { wp_redirect( get_permalink( get_option( 'prefive_sample_success_page' ) ) ); } else { wp_redirect( get_bloginfo( 'siteurl' ) . '/?jb_action=chat_box&oid=' . $order_id ); } } else { $payment_status = 'failed'; $payment_response = maybe_serialize( $_POST ); prefive_mark_job_prchase_completed( $order_id, $payment_status, $payment_response, $payment_details ); if ( get_option( 'prefive_sample_failure_page' ) != '' ) { wp_redirect( get_permalink( get_option( 'prefive_sample_failure_page' ) ) ); } else { wp_redirect( get_bloginfo( 'siteurl' ) . '/?jb_action=chat_box&oid=' . $order_id ); } }
9. Add the new code for success and failed transactions in processgateway_function():
$payment_response = $serialise = maybe_serialize( $_REQUEST ); if ( $status == 'success' ) { $payment_details = "success action returned"; // any info you may find useful for debug do_action( "prefive_" . $payment_type . "_payment_success", $order_id, $this->unique_slug, $payment_details, $payment_response ); die(); } else { $payment_details = "Failed action returned"; // any info you may find useful for debug do_action( "prefive_" . $payment_type . "_payment_failed", $order_id, $this->unique_slug, $payment_details, $payment_response ); die(); }