Newer
Older
<?php
/**
* PxIPN controller class.
*
* PxPay IPN endpoint, replacement for CiviCRM's 'extern/pxIPN.php'.
*
*/
namespace CiviCRM_WP_REST\Controller;
class PxIPN extends Base {
*/
protected $rest_base = 'pxIPN';
/**
* Registers routes.
*
*/
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.
*
* @param WP_REST_Request $request
*/
public function get_item($request) {
/**
* Filter payment processor params.
*
* @param array $params
* @param WP_REST_Request $request
*/
$params = apply_filters(
'civi_wp_rest/controller/pxIPN/params',
$this->get_payment_processor_args($request),
$request
);
\Civi::log()->alert('payment_notification processor_name=Payment_Express', $params);
try {
$result = \CRM_Core_Payment_PaymentExpressIPN::main(...$params);
}
catch (\CRM_Core_Exception $e) {
\Civi::log()->error($e->getMessage());
\Civi::log()->error('error data ', ['data' => $e->getErrorData()]);
\Civi::log()->error('REQUEST ', ['params' => $params]);
return $this->civi_rest_error($e->getMessage());
}
return rest_ensure_response($result);
}
/**
* Get payment processor necessary params.
*
* @param WP_REST_Resquest $request
* @return array $args
*/
public function get_payment_processor_args($request) {
$payment_processor_types = civicrm_api3('PaymentProcessor', 'getoptions', [
'field' => 'payment_processor_type_id',
]);
$params = apply_filters('civi_wp_rest/controller/pxIPN/payment_processor_params', [
'user_name' => $request->get_param('userid'),
'payment_processor_type_id' => array_search(
'DPS Payment Express',
$payment_processor_types['values']
),
'is_active' => 1,
'is_test' => 0,
]);
$payment_processor = civicrm_api3('PaymentProcessor', 'get', $params);
$args = $payment_processor['values'][$payment_processor['id']];
$method = empty($args['signature']) ? 'pxpay' : 'pxaccess';
return [
$method,
$request->get_param('result'),
$args['url_site'],
$args['user_name'],
$args['password'],
$args['signature'],
];
}
/**
* Item schema.
*
* @return array $schema
*/
public function get_item_schema() {}
/**
* Item arguments.
*
* @return array $arguments
*/
public function get_item_args() {}