autoship_add_general_payment_method (function)
(src/payments.php) can be used to add any payment method to QPilot. It takes the (WooCommerce) $token object and $return (Valid QPilot Payment Method or null).
Code:
/**
* 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 );
}