File size: 1.84Kb
<?php
namespace AddonFlare\PaidRegistrations\XF\Payment;
use XF\Entity\PaymentProfile;
use XF\Entity\PurchaseRequest;
use XF\Mvc\Controller;
use XF\Purchasable\Purchase;
use XF\Payment\CallbackState;
class PayPal extends XFCP_PayPal
{
protected function getPaymentParams(PurchaseRequest $purchaseRequest, Purchase $purchase)
{
$params = parent::getPaymentParams($purchaseRequest, $purchase);
if (!$purchaseRequest->user_id && \XF::app()->request()->filter('registration', 'bool'))
{
$params['rm'] = 2;
}
return $params;
}
public function validatePurchaser(CallbackState $state)
{
$purchaseRequest = $state->getPurchaseRequest();
$extraData = $purchaseRequest->extra_data;
// only happens when user has paid but hasn't yet registered
if (!$state->legacy && !$purchaseRequest->user_id && !empty($extraData['email']))
{
// don't log guest ipn errors because they're allowed
$state->logType = '';
$state->httpCode = 503;
// email user
if (empty($extraData['emailSent']) && in_array($state->transactionType, ['web_accept', 'subscr_payment', 'subscr_signup']))
{
$params = [
'purchaseRequest' => $purchaseRequest,
];
\XF::app()->mailer()->newMail()
->setTo($extraData['email'])
->setTemplate('af_paidregistrations_receipt', $params)
->send();
// prevent future emails
$extraData['emailSent'] = 1;
$purchaseRequest->fastUpdate('extra_data', $extraData);
}
return false;
}
// this parent method checks for a valid purchaser
return parent::validatePurchaser($state);
}
}