class EcController in Ubercart 8.4
Returns responses for PayPal routes.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\uc_paypal\Controller\EcController
Expanded class hierarchy of EcController
File
- payment/
uc_paypal/ src/ Controller/ EcController.php, line 11
Namespace
Drupal\uc_paypal\ControllerView source
class EcController extends ControllerBase {
/**
* Completes the transaction for Express Checkout Mark Flow.
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse
* A redirect to the order complete page (on success) or cart (on failure).
*/
public function ecComplete() {
$session = \Drupal::service('session');
if (!$session
->has('TOKEN') || !($order = Order::load($session
->get('cart_order')))) {
$session
->remove('cart_order');
$session
->remove('TOKEN');
$session
->remove('PAYERID');
$this
->messenger()
->addMessage($this
->t('An error has occurred in your PayPal payment. Please review your cart and try again.'));
return $this
->redirect('uc_cart.cart');
}
// Get the payer ID from PayPal.
$plugin = \Drupal::service('plugin.manager.uc_payment.method')
->createFromOrder($order);
$response = $plugin
->sendNvpRequest([
'METHOD' => 'GetExpressCheckoutDetails',
'TOKEN' => $session
->get('TOKEN'),
]);
$session
->set('PAYERID', $response['PAYERID']);
// Immediately complete the order.
$plugin
->orderSubmit($order);
// Redirect to the order completion page.
$session
->remove('uc_checkout_review_' . $order
->id());
$session
->set('uc_checkout_complete_' . $order
->id(), TRUE);
return $this
->redirect('uc_cart.checkout_complete');
}
/**
* Handles the review page for Express Checkout Shortcut Flow.
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse|array
* A redirect to the cart or a build array.
*/
public function ecReview() {
$session = \Drupal::service('session');
if (!$session
->has('TOKEN') || !($order = Order::load($session
->get('cart_order')))) {
$session
->remove('cart_order');
$session
->remove('TOKEN');
$session
->remove('PAYERID');
$this
->messenger()
->addMessage($this
->t('An error has occurred in your PayPal payment. Please review your cart and try again.'));
return $this
->redirect('uc_cart.cart');
}
// Get the payer ID from PayPal.
$plugin = \Drupal::service('plugin.manager.uc_payment.method')
->createFromOrder($order);
$response = $plugin
->sendNvpRequest([
'METHOD' => 'GetExpressCheckoutDetails',
'TOKEN' => $session
->get('TOKEN'),
]);
$session
->set('PAYERID', $response['PAYERID']);
// Store delivery address.
$address = $order
->getAddress('delivery');
$shipname = $response['SHIPTONAME'];
if (strpos($shipname, ' ') > 0) {
$address
->setFirstName(substr($shipname, 0, strrpos(trim($shipname), ' ')));
$address
->setLastName(substr($shipname, strrpos(trim($shipname), ' ') + 1));
}
else {
$address
->setFirstName($shipname);
$address
->setLastName('');
}
$address
->setStreet1($response['SHIPTOSTREET']);
$address
->setStreet2(isset($response['SHIPTOSTREET2']) ? $response['SHIPTOSTREET2'] : '');
$address
->setCity($response['SHIPTOCITY']);
$address
->setZone($response['SHIPTOSTATE']);
$address
->setPostalCode($response['SHIPTOZIP']);
$address
->setCountry($response['SHIPTOCOUNTRYCODE']);
$order
->setAddress('delivery', $address);
// Store billing details.
$address = $order
->getAddress('billing');
$address
->setFirstName($response['FIRSTNAME']);
$address
->setLastName($response['LASTNAME']);
$address
->setCountry($response['COUNTRYCODE']);
$order
->setAddress('billing', $address);
$order
->setEmail($response['EMAIL']);
$order
->save();
$build['instructions'] = [
'#markup' => $this
->t("Your order is almost complete! Please fill in the following details and click 'Continue checkout' to finalize the purchase."),
];
$build['form'] = $this
->formBuilder()
->getForm('\\Drupal\\uc_paypal\\Form\\EcReviewForm', $order);
return $build;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
40 |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
EcController:: |
public | function | Completes the transaction for Express Checkout Mark Flow. | |
EcController:: |
public | function | Handles the review page for Express Checkout Shortcut Flow. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |