-
Kevin Cristiano authoredKevin Cristiano authored
PayPalIPN.php 3.25 KiB
<?php
/**
* PayPalIPN controller class.
*
* PayPal IPN endpoint, replacement for CiviCRM's 'extern/ipn.php'.
*
* @since 5.25
*/
namespace CiviCRM_WP_REST\Controller;
class PayPalIPN extends Base {
/**
* @var string
* The base route.
* @since 5.25
*/
protected $rest_base = 'ipn';
/**
* Registers routes.
*
* @since 5.25
*/
public function register_routes() {
register_rest_route($this->get_namespace(), $this->get_rest_base(), [
[
'methods' => \WP_REST_Server::ALLMETHODS,
'permission_callback' => '__return_true',
'callback' => [$this, 'get_item'],
],
]);
}
/**
* Get items.
*
* @since 5.25
*
* @param WP_REST_Request $request
*/
public function get_item($request) {
/**
* Filter request params.
*
* @since 5.25
*
* @param array $params
* @param WP_REST_Request $request
*/
$params = apply_filters('civi_wp_rest/controller/ipn/params', $request->get_params(), $request);
if ($request->get_method() == 'GET') {
// PayPal Standard.
$paypal_IPN = new \CRM_Core_Payment_PayPalIPN($params);
// Log notification.
\Civi::log()->alert('payment_notification processor_name=PayPal_Standard', $params);
}
else {
// PayPal Pro.
$paypal_IPN = new \CRM_Core_Payment_PayPalProIPN($params);