Skip to content
Snippets Groups Projects
AuthorizeIPN.php 2.78 KiB
<?php
/**
 * AuthorizeIPN controller class.
 *
 * Replacement for CiviCRM's 'extern/authorizeIPN.php'.
 *
 * @see https://docs.civicrm.org/sysadmin/en/latest/setup/payment-processors/authorize-net/#shell-script-testing-method
 *
 * @since 0.1
 */

namespace CiviCRM_WP_REST\Controller;

class AuthorizeIPN extends Base {

	/**
	 * The base route.
	 *
	 * @since 0.1
	 * @var string
	 */
	protected $rest_base = 'authorizeIPN';

	/**
	 * Registers routes.
	 *
	 * @since 0.1
	 */
	public function register_routes() {

		register_rest_route( $this->get_namespace(), $this->get_rest_base(), [
			[
				'methods' => \WP_REST_Server::ALLMETHODS,
				'callback' => [ $this, 'get_item' ]
			]
		] );

	}

	/**
	 * Get items.
	 *
	 * @since 0.1
	 * @param WP_REST_Request $request
	 */
	public function get_item( $request ) {

		/**
		 * Filter request params.
		 *
		 * @since 0.1
		 * @param array $params
		 * @param WP_REST_Request $request
		 */
		$params = apply_filters( 'civi_wp_rest/controller/authorizeIPN/params', $request->get_params(), $request );

		$authorize_IPN = new \CRM_Core_Payment_AuthorizeNetIPN( $params );

		// log notification
		\Civi::log()->alert( 'payment_notification processor_name=AuthNet', $params );

		/**
		 * Filter AuthorizeIPN object.
		 *
		 * @param CRM_Core_Payment_AuthorizeNetIPN $authorize_IPN
		 * @param array $params
		 * @param WP_REST_Request $request
		 */
		$authorize_IPN = apply_filters( 'civi_wp_rest/controller/authorizeIPN/instance', $authorize_IPN, $params, $request );