init_gateway(); add_action('woocommerce_payment_token_deleted', array($this, 'woocommerce_payment_token_deleted'), 10, 2); add_action('woocommerce_api_as_assembly_api', array($this, 'assembly_callbacks'), 10, 2); } public function woocommerce_payment_token_deleted($token_id, $token) { if ('assembly' === $token->get_gateway_id()) { $assembly_api_obj = new AS_Assembly_API(); $assembly_api_obj->deleteCardAccount($token->get_token()); } } public function init_gateway() { if (!class_exists('WC_Payment_Gateway')) { return; } include_once(dirname(__FILE__) . '/includes/class-as-assembly-gateway.php'); include_once(dirname(__FILE__) . '/includes/class-as-assembly-gateway-bank.php'); add_filter('woocommerce_payment_gateways', array($this, 'add_gateways')); } public function add_gateways($methods) { $methods[] = 'AS_Gateway_Assembly'; $methods[] = 'AS_Gateway_Assembly_Bank'; return $methods; } //call back public function assembly_callbacks() { $assemblyapiobj = new AS_Assembly_API(); $string = file_get_contents("php://input"); $data = json_decode($string, true); if (isset($data['transactions'])) { if ($data['transactions']['type'] === 'payment' && $data['transactions']['state'] === 'successful') { $itemId = $data['transactions']['account_id']; $item = PromisePay::Item()->get($itemId); $orderId = $item['custom_descriptor']; $order = wc_get_order($orderId); $order->payment_complete($data['transactions']['id']); $order->update_status('processing', __( 'Payment held', 'assembly-payment-gateways' )); update_post_meta($orderId, 'Assembly Charge ID', $data['transactions']['id']); } } } public static function log($message) { if (empty(self::$log)) { self::$log = new WC_Logger(); } self::$log->add('assembly-payment-gateways', $message); } } $GLOBALS['as_assembly'] = AS_Assembly::get_instance(); }