Bug 409269 - Open payment API for the Marketplace Client
Summary: Open payment API for the Marketplace Client
Status: NEW
Alias: None
Product: MPC
Classification: Technology
Component: wizard (show other bugs)
Version: unspecified   Edit
Hardware: All All
: P3 normal with 1 vote (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-05-28 07:34 EDT by Carsten Reckord CLA
Modified: 2020-06-02 04:33 EDT (History)
18 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Carsten Reckord CLA 2013-05-28 07:34:49 EDT
We would like to propose an open, light-weight API to integrate payment services with the Marketplace Client, enabling shop or payment service providers to add purchasing options and users to purchase tools directly from within the MPC.

The idea is to extend the Marketplace Client (MPC) to be able to show a Buy button and basic pricing information. An open payment API would act as a bridge between the Marketplace Client and 3rd-party payment implementations.

We chose a client-side solution instead of proposing to extend the (closed-source) Marketplace server, because the Eclipse Foundation itself does not have the resources for and can’t take the legal and financial risks of operating an international "Eclipse shop" for all Eclipse vendors and users.

The API we propose is kept purposefully leight-weight and simple. An MPC payment service manages a list of payment modules capable of integrating open or proprietary payment solutions provided by plug-ins. Implementation effort for adopters is kept down to one simple interface offering the basic interaction methods with a shopping cart/payment system:

public interface PaymentModule {
	PaymentItem offer(String nodeId, IProgressMonitor monitor);
	IStatus purchase(PaymentItem item, IProgressMonitor monitor, IAdaptable context);
	IStatus remove(PaymentItem item, IProgressMonitor monitor, IAdaptable context);
	IStatus checkout(IProgressMonitor monitor, IAdaptable context);
	IStatus cancel(IProgressMonitor monitor, IAdaptable context);
	PaymentTransaction getSession();
	List<PaymentTransaction> getPurchases();
}

New payment modules can be discovered by the payment service on-demand for catalog entries that no installed module is found for. This could be based on P2 discovery using an URL-based discovery scheme with a list of discovery locations rolled out with the MPC.

At a later time, we also plan to include an open license configuration interface that can be implemented by commercial tools to integrate their license management system with the payment API to support zero-configuration license setup.

For more details about the proposed payment API implementation check out our preliminary codebase at GitHub: https://github.com/YattaSolutions/epp.mpc

I've written more extensively about user and ecosystem benefits and our Marketplace vision here: http://www.yatta.de/news/eclipse-marketplace-payment/

We are planning to make our own payment options available to all Eclipse vendors. We have talked with many different Eclipse Members and with the Foundation itself in order to cover all requirements and will try to meet all your requirements, too.
Comment 1 Achim Loerke CLA 2013-05-29 08:32:37 EDT
+1

I consider this a very helpful addition to the Eclipse eco system. This will allow a lot of companies/people to offer plug-ins with a reasonable cost overhead.
Comment 2 Carsten Reckord CLA 2013-08-21 08:09:52 EDT
To get started with the contribution and start the ddiscussion on the contribution process as discussed with Ian on the phone, I've put up the code on Gerrit here: https://git.eclipse.org/r/#/c/15696/
Comment 3 Ian Skerrett CLA 2013-08-21 12:32:46 EDT
Carsten,

There are a number of things I would like to see happen before we accept the code:
1) We need to have test code available and a test service provider
2) I would prefer to see the service provider discovery controlled by the server as opposed to the current client side discovery, so I think we need to have this discussion on the pros and cons.
3) Can you please document the security model you have implemented to ensure things like man in the middle attacks can't happen.
4) I'd like to see documentation on how to setup a service provider.

I'd also like to get some people reviewing the code.

Thank you very much for pushing this forward. I think it will be a great addition to MPC.
Comment 4 Lars Vogel CLA 2015-04-02 10:40:07 EDT
+1 for a payment service in the Marketplace client.
Comment 5 Torkild Resheim CLA 2015-04-02 12:02:59 EDT
+1 I think it would be great to have something like this in place. And I share Ian's concerns.
Comment 6 maarten meijer CLA 2015-04-02 12:33:40 EDT
+1 for a payment service in the Marketplace client.
Comment 7 Carsten Reckord CLA 2015-04-03 15:13:19 EDT
I've taken the opportunity to update our code on GitHub[1] to the latest
version from our running pilot projects.

I'll update the Gerrit contribution as soon as we have finished moving
to the latest Mars version of MPC. The current version is still based on Luna.

[1] https://github.com/YattaSolutions/epp.mpc
Comment 8 Mirko Seifert CLA 2015-05-06 08:58:48 EDT
+1 Awesome feature!
Comment 9 Mirko Stocker CLA 2015-05-06 12:52:24 EDT
+1 yes, this would be great!
Comment 10 Tobias Nestler CLA 2015-05-11 06:18:04 EDT
+1 for this feature
Comment 11 Florian Heidenreich CLA 2015-05-31 08:32:55 EDT
+1 Great idea! Would love to see something like that.