It often required to customize authorize token ulr parameters. For example you may want a mobile version of paypal pages. In this case you would like to change cmd from _express-checkout to _express-checkout-mobile. Or to change "Continue" button to "Pay" on the last paypal's page. To do so you have to send an extra query parameter useraction=commit. So here we would describe ways you can use this.
Static usage.
You can pass these query parameters as api options:
<?php
use Payum\Paypal\ExpressCheckout\Nvp\Api;
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\StreamInterface;
use Psr\Http\Message\StreamInterfacel
/** @var ClientInterface $client */
/** @var RequestInterface $requestInterface */
/** @var StreamInterface $streamInterface */
$api = new Api([
// ...
'useraction' => Api::USERACTION_COMMIT,
'cmd' => Api::CMD_EXPRESS_CHECKOUT_MOBILE,
], $client, $requestInterface, $streamInterface);
echo $api->getAuthorizeTokenUrl('aToken');
// https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout-mobile&useraction=commit&token=aToken
Runtime usage.
You could also pass these parameters as a second argument of getAuthorizeTokenUrl method. These parameters will overwrite values passed as options. You could also use second variant to pass any other parameters.
<?php
use Payum\Paypal\ExpressCheckout\Nvp\Api;
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\StreamInterface;
use Psr\Http\Message\StreamInterfacel
/** @var ClientInterface $client */
/** @var RequestInterface $requestInterface */
/** @var StreamInterface $streamInterface */
$api = new Api($options = [], $client, $requestInterface, $streamInterface);
echo $api->getAuthorizeTokenUrl('aToken', array(
'useraction' => Api::USERACTION_COMMIT,
'cmd' => Api::CMD_EXPRESS_CHECKOUT_MOBILE,
));
// https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout-mobile&token=aToken
To pass these values using your PaymentDetails models set next fields:
<?php
use Payum\Core\Model\ArrayObject;
use Payum\Paypal\ExpressCheckout\Nvp\Api;
use Payum\Core\Request\Capture;
$model = new ArrayObject;
$model['AUTHORIZE_TOKEN_CMD'] = Api::CMD_EXPRESS_CHECKOUT_MOBILE;
$model['AUTHORIZE_TOKEN_USERACTION'] = Api::USERACTION_COMMIT;
/** @var \Payum\Core\GatewayInterface $gateway */
$gateway->execute(new Capture($model));
Supporting Payum
Payum is an MIT-licensed open source project with its ongoing development made possible entirely by the support of community and our customers. If you'd like to join them, please consider: