Method on payment provider: approvePayment
Doc link: https://developer.paypal.com/api/nvp-soap/do-express-checkout-payment-nvp/
Params to send in our implementation: (TODO finish mapping where all the values come from)
'USER', (from account params)
'PWD', (from account params)
'VERSION' => 204,
'METHOD' => 'DoExpressCheckoutPayment',
'TOKEN' => $params['payment_token'],
'PAYERID' => $params['processor_contact_id'],
'PAYMENTREQUEST_0_AMT',
'PAYMENTREQUEST_0_CURRENCYCODE',
'PAYMENTREQUEST_0_CUSTOM',
'PAYMENTREQUEST_0_DESC' => $params['description'],
'PAYMENTREQUEST_0_INVNUM',
'PAYMENTREQUEST_0_ITEMAMT', // FIXME: Not clear why this is required.
'PAYMENTREQUEST_0_PAYMENTACTION' => 'Sale',
'PAYMENTREQUEST_0_PAYMENTREASON' => 'None',
Error mapping:
PAYMENTINFO_0_ERRORCODE element of response should have value 0 for success
value 10412 should map to ErrorCode::DUPLICATE_ORDER_ID