autoship_add_general_payment_method

(src > payments.php) can be used to add any payment method to QPilot. It takes a 1. WC token object and 2. QPilot Payment Method type. In addition it has two filters, 'autoship_add_general_payment_method' which can be used to filter the payment method data being sent to QPilot and autoship_add{$type}payment_method filter where type is the QPilot payment method type and this also can be used to filter the payment method data sent to QPilot. Both filters take the array of current payment method data, the WC Token Object, and the QPilot Method Type.

Example

 
/**
 * Adds a payment method from QPilot for a customer
 *
 * @param WC_Payment_Token_CC $token
 * @param string $type The Type for the Payment Method from QPilot.
 * @param bool $return Should the payment method data be returned or added.
 *                     True to return, false to add to QPilot
 * @return mixed The Payment Method object or error on failure if $return is set to false.
 *               Array of payment data if set to true.
 */
function autoship_add_general_payment_method( $token , $return = false ){

  // Get the User associated with the token.
	$wc_customer_id       = $token->get_user_id();

  // Get the Autoship customer.
	$autoship_customer_id = autoship_get_autoship_customer_id( $wc_customer_id , 'autoship_add_general_payment' );

  // Don't process if not a Autoship
	if ( empty( $autoship_customer_id ) )
	return;

 	// Create the payment method and gather the info.
	$payment_method_id        = $token->get_token();
	$description              = apply_filters(
  'autoship_add_general_payment_method_description',
  $token->get_display_name());
  $type                     = autoship_get_valid_payment_method_type( $token->get_gateway_id() );
  $wc_customer              = new WC_Customer( $wc_customer_id );
  $payment_method_data      = array(
		'CustomerId'        => $autoship_customer_id,
		'Type'              => $type,
		'GatewayCustomerId' => $wc_customer_id,
  	'GatewayPaymentId'  => $payment_method_id,
		'Description'       => $description,
		'BillingFirstName'  => substr( $wc_customer->get_billing_first_name(), 0, 20 ),
		'BillingLastName'   => substr( $wc_customer->get_billing_last_name(), 0, 20 ),
		'BillingStreet1'    => $wc_customer->get_billing_address_1(),
		'BillingStreet2'    => $wc_customer->get_billing_address_2(),
		'BillingCity'       => substr( $wc_customer->get_billing_city(), 0, 30 ),
		'BillingState'      => substr( $wc_customer->get_billing_state(), 0, 20 ),
		'BillingPostcode'   => substr( $wc_customer->get_billing_postcode(), 0, 20 ),
		'BillingCountry'    => substr( $wc_customer->get_billing_country(), 0, 2 )
	);

  // Apply the Payment method filter for customers to override.
  $payment_method_data = apply_filters( 'autoship_add_general_payment_method', $payment_method_data, $type, $token );
  $payment_method_data = apply_filters( "autoship_add_{$type}_payment_method", $payment_method_data, $type, $token );
  $payment_method_data = apply_filters( 'autoship_api_create_payment_method_data',$payment_method_data );

  // Add the Method
 	return $return ? $payment_method_data : autoship_add_payment_method( $payment_method_data );

}

Still need help? Contact Us Contact Us