Using PayPal Express Checkout
PayPal Express Checkout has a different flow than PayPal Standard in that instead of completing the transaction at the PayPal web site, the customer only selects their payment method and shipping address while on the PayPal website, and then they are redirected back to your own site where they must click a button to complete the transaction.
When a visitor clicks the button to check out with PayPal it posts back to your own site and mojoPortal server side code makes a secure server side post to the PayPal Express Checkout API passing in the details about the order and information about the url where we want the user redirected back to our site. The PayPal server responds with a token and we then redirect the user to the PayPal Express Checkout website passing the provided token in the query string. The customer then selects their payment method and shipping address and clicks a continue button at which point PayPal redirects the user back to your website url along with the token. mojoPortal server side code receives the token and makes another secure server to server post to the PayPal Express API passing the token and PayPal responds with the payment method and the shipping info. Then the ecommerce feature that initiated the transaction presents the user with the final order review page and a button to complete the transaction. When the user clicks the button it posts back to your own mojoPortal web site and again a final secure server to server post is made to the PayPal Express Checkout API to complete the transaction, and PayPal responds with the results of the transaction.
Configuring PayPal Express In mojoPortal
The following settings are needed to use PayPal Express in ecommerce features that plug into mojoPortal:
<add key="Site1-PayPalUsePayPalStandard" value="false" />
<add key="Site1-PaymentGatewayUseTestMode" value="false" />
<add key="Site1-PayPalProductionAPIUsername" value="" />
<add key="Site1-PayPalProductionAPIPassword" value="" />
<add key="Site1-PayPalProductionAPISignature" value="" />
<add key="Site1-PayPalSandboxAPIUsername" value="" />
<add key="Site1-PayPalSandboxAPIPassword" value="" />
<add key="Site1-PayPalSandboxAPISignature" value="" />
The first setting above is what enables PayPal Express Checkout as opposed to PayPal Standard. The second setting controls whether we post to the real production PayPal or to their sandbox testing envrionment, if true then the sandbox settings will be used and if false then the production settings will be used.
Note that all the settings have a Site[SiteID]- prefix, so in a multi site installation you would set these per site id.
One advantage of PayPal Express vs PayPal Standard is that you don't have to configure the IPN (Instant Payment Notification) or PDT (Payment Data Transfer) url in your PayPal account settings since IPN and PDT are not used with Express Checkout. Those settings were problematic for example if you have mutliple sites with different urls using the same PayPal account since you could only specify one IPN url. With PayPal Express each feature posts its own return url as a parameter to the API.
You just need to get an API Username, Password, and Signature from your PayPal account and configure the settings above.
PayPal Express has been implemented in the mojoPortal WebStore feature for a long time but unfortunately we forgot to document it way back when it was first implemented. Support for PayPal Express was added to Event Calendar Pro as of version 3.4.1.6, Site Membership Pro as of version 1.0.1.1, Web Invoice Pro as of version 1.7.1.1, and Fund Raiser Pro as of version 1.0.2.2