tag:blogger.com,1999:blog-7542603400571375122024-03-12T18:44:58.359-04:00Identity, Payments and Related TechnologiesThoughts on Identity, Payments, Authentication, SSO and related Web Technologies....Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.comBlogger57125tag:blogger.com,1999:blog-754260340057137512.post-16596846283057761322013-06-03T02:12:00.001-04:002013-06-03T02:12:33.201-04:00Auth/Capture and more w/ PayPal Restful APIs<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="p1">
<br /></div>
<div class="p2">
Well summer is almost here and we can't wait to get more RESTful APIs out. Continuing expansion of our<a href="http://whyidentity.blogspot.com/2013/03/under-hood-restful-payments-api.html"><span class="s1"> new Restful Payment APIs</span></a>, last week we've released a <a href="https://developer.paypal.com/webapps/developer/docs/api/"><span class="s1">few more APIs</span></a> to provide additional payment settlement functionality for developers. With the addition of these APIs, developers can settle payments immediately or delay for up to 29 days (but funds being guaranteed for 3 days only) based on their use case requirements. </div>
<div class="p1">
<br /></div>
<div class="p2">
In the payments world, there are usually 2 kinds of settlements (money movement) that are most commonly used. First is an immediate settlement activity called "Sale" transaction, which is used when processing orders that can be fulfilled (delivery) immediately. For example, when you purchase a milk can at your local grocery store, the transaction you are making is a "Sale" transaction since the can of milk is handed over to you immediately (next time when you make a purchase at your local grocery store, notice what your payment receipt says the transaction as). </div>
<div class="p1">
<br /></div>
<div class="p2">
The second a delayed settlement activity called "Authorization" transaction, which is used when the order cannot be fulfilled immediately. For example, when you make an order online at your favorite store, the order cannot be fulfilled immediately and handed over to you. In such cases, the online store authorizes your payment card or PayPal Account to make sure you have enough funds to guarantee the payment, and then kicks off it's own fulfillment process. When it receives confirmation that your order has been fulfilled and ready to be shipped, they settle the payment by capturing the funds held by the authorization. This settlement active is most commonly referred to as "Auth/Capture" transactions. These kind of payments are mostly commonly used in e-commerce but are also used for use cases where one need to make sure that the consumer has enough funds to pay in the future. Eg. Car rental.</div>
<div class="p1">
<br /></div>
<div class="p2">
In the PayPal REST APIs, all these payment activities are modeled in a consistent way for both credit card and PayPal Wallet payments. As mentioned in the <a href="http://whyidentity.blogspot.com/2013/03/under-hood-restful-payments-api.html"><span class="s1">previous blog post</span></a>, all these Payment activities/transactions are initiated through a Payment API by providing an intent of either Sale or Authorize. Each of them would result in the corresponding resources (Sale and Authorize), which further provides APIs to capture delayed payments and refund the payment if necessary. All these payment transactions are linked with each other through the HATEOAS links for the developers to easily navigate from one state to another. Below is a pictorial representation of Payment and it's related resources, and the APIs that create and link them with each other.</div>
<div class="p1">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-ptMAiRIMBLI/UawyRWS18oI/AAAAAAAAPcU/CknvUiS9EOg/s1600/payment-model.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="396" src="http://3.bp.blogspot.com/-ptMAiRIMBLI/UawyRWS18oI/AAAAAAAAPcU/CknvUiS9EOg/s640/payment-model.png" width="640" /></a></div>
<div class="p1">
<br /></div>
<div class="p3">
<br /></div>
<div class="p4">
<br /></div>
<div class="p2">
You can find the <a href="https://developer.paypal.com/webapps/developer/docs/api/"><span class="s1">API reference</span></a> for these new transactions on our <a href="https://developer.paypal.com/"><span class="s1">developer portal</span></a>. You will also find out detailed how-to guides providing step by step guides on how to <a href="https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/"><span class="s1">make your first api cal</span></a>l to <a href="https://developer.paypal.com/webapps/developer/docs/integration/direct/capture-payment/"><span class="s1">authorizing and capturing payments</span></a>. Btw you can even try out these new APIs using the curl commands in our <a href="https://github.com/paypal/rest-api-curlsamples"><span class="s1">rest-api-curlsamples</span></a> repo on github.</div>
<div class="p1">
<br /></div>
<div class="p2">
Depending on the type of products that you sell (online or offline), you have to select the payment transaction type that suites your need. Using the correct payment type would help you process your orders and payments efficiently and accurately. Here is a simple flow chart to help you guide through the implementation process: </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-mE3B_6zqtqs/UawyZCTMxRI/AAAAAAAAPcc/72PxSEIsgPk/s1600/payment-process-flow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://1.bp.blogspot.com/-mE3B_6zqtqs/UawyZCTMxRI/AAAAAAAAPcc/72PxSEIsgPk/s640/payment-process-flow.png" width="329" /></a></div>
<div class="p1">
<br /></div>
<div class="p1">
<br /></div>
<div class="p2">
<br /></div>
<div class="p2">
We have also added support for attaching a user id to the <a href="https://developer.paypal.com/webapps/developer/docs/integration/direct/store-a-credit-card/"><span class="s1">saved cards</span></a> in Vault. Adding a user id ("payer_id") to a saved card would help in making sure that the saved card can only be used with the same user id when collecting a Payment. This will ensure that the saved cards are not misused and provides you an easy and efficient way to protect your consumer's payment cards in vault.</div>
<div class="p1">
<br /></div>
<div class="p2">
As usual all our SDKs are updated on <a href="http://paypal.github.io/"><span class="s1">http://paypal.github.io/</span></a> for you to clone/download and integrate. Please let us know your feedback that would help us improve our APIs, docs, tools and SDKs.</div>
<div class="p1">
<br /></div>
<br />
<div class="p2">
Happy Coding!</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com2tag:blogger.com,1999:blog-754260340057137512.post-54047231393507936902013-04-25T02:22:00.004-04:002013-06-03T02:05:26.709-04:00Hypermedia links in the PayPal Restful APIs<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="p1">
One of the things that we've enabled in our new Restful APIs are <a href="http://en.wikipedia.org/wiki/HATEOAS"><span class="s1">HATEOAS</span></a> (<span class="s2"><b>Hypermedia as the Engine of Application State) </b></span>links. As the wikipedia page says, they enable the clients to have no prior knowledge of various states and some times various steps involved (like in a workflow) of a resource that they are interacting with using the common HTTP verbs. You can find more about HATEOAS here on the popular blog post by <a href="http://www.steveklabnik.com/"><span class="s1">Steve Klabnik</span></a>: "<a href="http://timelessrepo.com/haters-gonna-hateoas"><span class="s1">haters gonna HATEOAS</span></a>" and as Steve points out in his blog, Hyper media links are also used in the <a href="http://martinfowler.com/articles/richardsonMaturityModel.html"><span class="s1">Richardson Maturity Model</span></a> as the last level of a Restful API maturity. </div>
<div class="p2">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://martinfowler.com/articles/images/richardsonMaturityModel/overview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="236" src="http://martinfowler.com/articles/images/richardsonMaturityModel/overview.png" width="400" /></a></div>
<div class="p3">
<br /></div>
<div class="p2">
<br /></div>
<div class="p1">
Anyways – coming back to what it means to you, the developers, is that – you no longer need to keep track of end points/urls, possible states or next steps when interacting with the Payment resource using the new PayPal Restful API. All our API responses include the hyper media links that provide pointers to the next possible state or step. For example, when a Payment is processed, the next possible state/step is to either get the details of the Payment (to keep track of the Payment status – since a Payment can reverse due to several reasons) or to refund the Payment upon a customer's request. Using the hyper media links returned in the Payment resource, you no longer need to hardcode the refund API endpoint or the details (self) API endpoint. </div>
<div class="p2">
<br /></div>
<div class="p1">
<span class="s1"><a href="https://twitter.com/gblock">Glenn Block</a></span> from Microsoft did an amazing job on explaining the role of hyper media and it's importance in Restful APIs. You can watch his presentation below. You will see him walking through the new PayPal Restful APIs and how they provide the links to help guide the clients to achieve what they are required to do. </div>
<div class="p2">
<br /></div>
<div class="p1">
<iframe allowfullscreen="" frameborder="0" height="360" src="https://www.youtube.com/embed/vp-Na5wKlig?rel=0" width="640"></iframe>
</div>
<div class="p2">
<br /></div>
<div class="p1">
<br />
Hope you like the video – we really hope the hyper media links are useful for you when interacting with our new Restful APIs. All new Restful APIs we release going forward will have the hyper media links. Do let us know how you find them useful and if we are missing anything that would be useful to be included in the hyper media links. </div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-39987177173818758522013-03-11T17:21:00.001-04:002013-03-11T20:02:48.415-04:00Under the Hood: The Restful Payments API <div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="p1">
<br /></div>
<div class="p2">
Alright time to talk about the new Restful APIs. When we started the design of the new APIs – oops I should say design of the <b>resources</b> :-) - we focused on three things primarily : <u>simplicity</u>, <u>extensibility</u> and <u>open standards</u> as much as possible. In addition to that, we took an "integration-first" approach where everything was designed with an external developer/merchant "functional" point of view to make things as easy and intuitive as possible for them to integrate with.</div>
<div class="p1">
<br /></div>
<div class="p2">
Obviously on the standards side it comes down to the most common patterns – REST, JSON data format, and OAuth 2.0. We did spend a lot of time on the OAuth2.0 to figure out how it would fit in our use cases and which token grants we would need to support. To begin with, we have implemented the client_credentials token grant since most of our developer and merchants make API calls from their server side (aka confidential clients in OAuth2.0 world) to process payments. The only use case where we would need to spend a little bit more is on how we can extend the payer (consumer) authorization in the future to support different use cases like Billing Agreements (which are persistent for a long time periods and managing those using OAuth tokens (refresh/access tokens) would be little tricky). Btw if you are trying to use our APIs from the client side (Mobile Application), please use our Mobile Payment library. Please do not bundle your OAuth "secret" credentials in your mobile application.</div>
<div class="p1">
<br /></div>
<div class="p2">
Before I describe how the Payments APIs work – let's look at what is a Payment ? As <a href="http://en.wikipedia.org/wiki/Payment"><span class="s1">wikipedia</span></a> defines it – "A payments is the transfer of money from one party to another. A payment is usually made in exchange for the provision of goods, services or both or to fulfill a legal obligation". So in other words, it's really a "contract" between a Payer and a Payee – where the Payer is committing to fulfill the money for the items/service being provided by the Payee, and the Payee is committing to fulfill the items/services for what he is being paid for. Given that there are several use cases where there will be more than one Payee, and usually the Payer (consumer) treats them as the "transactions" with each one of those Payees - here is how our Payment resource looks like at a high level.</div>
<div class="p1">
<br /></div>
<blockquote class="tr_bq">
{<br />
"payee": { },<br />
"transactions": [{<br />
"payee": { }<br />
"amount": {}<br />
}]<br />
}</blockquote>
<div class="p1">
<br /></div>
<div class="p2">
This general model enables us to easily add support for variety of payment models in the future (Parallel, Chained, etc). The Payee could be a funding instrument (like a Credit/Debit Card,) or a PayPal account (wallet) itself. The Payee could be set explicitly if the Payee is not the same as the Payment Facilitator ( in this current release we only support the case where the Payee is same as the Facilitator) so this is not currently required. Speaking of the Facilitator – here are the 3 basic actors in any Payment: </div>
<ul class="ul1">
<li class="li2"><b>Payee</b> – who receives the payment (A PayPal Business Account)</li>
<li class="li2"><b>Payer</b> – who makes the payment ( A PayPal Account or a direct credit/debit card in case of a non-PayPal Account holder)</li>
<li class="li2"><b>Facilitator</b> – who facilitates the payment between the Payee, Payer and PayPal through the usage of APIs.</li>
</ul>
<div class="p2">
In the current as mentioned above, since we only support the case where the Payee is same as the Facilitator, the OAuth access token provided in the request always represents the Facilitator and is used to verify whether the PayPal business account associated with it has been approved for the payment processing. </div>
<div class="p1">
<br /></div>
<div class="p2">
The relationship among them can be represented as:</div>
<div class="p1">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-8GNYU1qhF_c/UT424-WNWsI/AAAAAAAAPWI/jmL22wjvB_c/s1600/actors-payments.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="261" src="http://4.bp.blogspot.com/-8GNYU1qhF_c/UT424-WNWsI/AAAAAAAAPWI/jmL22wjvB_c/s320/actors-payments.png" width="320" /></a></div>
<div class="p1">
<br /></div>
<div class="p1">
<br /></div>
<div class="p2">
Now going back to the payments, there are a 6 very common procedures (aka transaction types) that everyone knows about when processing payments using credit cards. These are:</div>
<ul class="ul1">
<li class="li3"><span class="s2"><b>Sale</b> – is used </span>when an order can fulfilled at the same time the payment is settled.</li>
<li class="li2"><b>Authorization</b> – is used when an order cannot be fulfilled at the same instant. An authorization is used to verify the payment card information and to make sure there are enough funds to fulfill the payment in the future (typically in the next 3 days) .</li>
<li class="li2"><b>Capture</b> - is used to settle the payments that have been previously authorized.</li>
<li class="li2"><b>Void</b> – is used to cancel an authorization that has been previously obtained. This will clear any funds that have been held in the customer's account.</li>
<li class="li2"><b>Order</b> – is used when an order cannot be fulfilled for a long time (longer than what the typical authorizations are valid for). Once an Order transaction is made, it can be used to create "authorizations" as required for the items in the order that can be shipped as and when they are ready.</li>
<li class="li2"><b>Refund</b> – is used to reverse the payment when an item is returned or couldn't be fulfilled.</li>
</ul>
<div class="p2">
<br /></div>
<div class="p2">
These are what we call as the "actions" on the Payment resource. When you create a Payment, you can indicate the "intent" of the payment as either Sale or Auth or Order (NOTE: Only Sale is supported in the current release). That will help in combining the calls to create a Payment and then apply an action on the Payment resource. We've modeled these actions as a commonly used RESTful API pattern called "Controller Resource". The Controller Resources act on an existing resource and could affect it's state or create related-resources as necessary. Eg. <span class="s1"><a href="https://api.paypal.com/v1/payments/authorization/%7Bid%7D/capture">https://api.paypal.com/v1/payments/authorization/{id}/capture</a></span><br />
<br />
Given the number of states various payment transactions go through, we have enabled some <a href="http://en.wikipedia.org/wiki/HATEOAS">HATEOAS</a> links in the resources to help you navigate through the possible state changes. I would encourage <a href="https://developer.paypal.com/webapps/developer/docs/api/#hateoas-links">using them</a> as much as possible instead of hard coding the urls in your application code. Here is an example of the links you will see in a successful Sale Transaction - obviously this is a simple transaction, but to give you an idea, the next possible action on a Sale Transaction is <i><b>refund</b></i>. So this is what it looks like:
</div>
<br />
<div class="gistLoad" data-id="5137656" id="gist-5137656">
Loading ....</div>
<br />
<br />
<div class="p2">
In the first release of the APIs, we have implemented the support for Sale and Refund types. You can find out more about them in our <a href="https://developer.paypal.com/webapps/developer/docs/api/#api-endpoints"><span class="s1">API Reference</span></a> on the developer portal. </div>
<div class="p1">
<br /></div>
<div class="p2">
Hope this is useful for everyone to understand our new APIs. I would recommend looking at our "<a href="https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/"><span class="s1">make your first call</span></a>" doc to quickly get started with our APIs. You can find all our <a href="http://paypal.github.com/"><span class="s1">SDKs and Samples on our github account</span></a>. If you want to just run some curl samples, you can find them all in our <a href="https://github.com/paypal/rest-api-curlsamples"><span class="s1">Rest API Curl Samples repo</span></a> on github. Btw all our samples and SDKs come with preconfigured default OAuth API credentials (client_id and secret) that you can use to start with but don't forget to replace them with your own so you can go through the complete dashboard and PayPal account experience in the sandbox environment.</div>
<div class="p1">
<br /></div>
<div class="p2">
Happy Coding!</div>
<div class="p1">
<br /></div>
<div class="p2">
<br /></div>
</div>
<script src="https://raw.github.com/moski/gist-Blogger/master/public/gistLoader.js" type="text/javascript"></script>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com4tag:blogger.com,1999:blog-754260340057137512.post-71899294909757292352013-03-09T22:29:00.000-05:002013-03-09T23:10:37.830-05:00Beginning of a new era for PayPal APIs<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
</div>
<div class="p1" style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Hope everyone had a chance to checkout our new <a href="https://developer.paypal.com/"><span class="s1">Restful APIs and developer Portal</span></a> we launched on Friday. I wanted to post some details on the new APIs earlier but have been busy fighting with some issues (more on this later) on the developer portal and sandbox. It has been fun watching the tweets, blogs and comments about our new portal and APIs. I must say it was an amazing feeling to see how the PayPal developers supported us - we're very grateful for that. I've worked with hundreds of developers in the last 3 years of my career at PayPal and I know what kind of mess we have to go through to even figure out "which" API to use. I know it took us a while to address these issues, but at least I think we are going in the right direction now to make things simple, easy to find and use, and provide a rock solid payment service. </span></div>
<div class="p2" style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="p1" style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Before I give some details on the new APIs, I want to point out couple of things: </span></div>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><br />
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></span></div>
<span style="font-family: Arial, Helvetica, sans-serif;">
First one is - our efforts to design a Restful Payments API are not new. Back in 2010, myself and Ray Tanaka (also from PayPal) gave a talk at OSCON in Portland titled "</span><a href="http://www.slideshare.net/ppalavilli/open-web-payments" style="font-family: Arial, Helvetica, sans-serif;"><span class="s1">Open Stack for Open Web Payments</span></a><span style="font-family: Arial, Helvetica, sans-serif;">". </span><br />
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" mozallowfullscreen="" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/4808674?rel=0" style="border: 1px solid rgb(204, 204, 204); margin-bottom: 5px;" webkitallowfullscreen="" width="427"></iframe></div>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><br />
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></span></div>
<span style="font-family: Arial, Helvetica, sans-serif;">
At that time as you can see in the proposal, we were quite influenced by Atom/PoCo/OAuth/XML and other open standards but at least it was out first attempt trying to see how we can even define Payment APIs in an open standard way. There were some</span><a href="http://stakeventures.com/articles/2010/07/22/open-web-payments-paypals-answer-to-opentransact" style="font-family: Arial, Helvetica, sans-serif;"><span class="s1"> interesting discussions </span></a><span style="font-family: Arial, Helvetica, sans-serif;">on it for a while but eventually they died – probably because of lack of motivation for us due to no support from inside. Anyways – as you might notice from this proposal, Payment APIs cannot be way to different from each other. You are constrained by the terminology, and functionality involved in the Payments space. </span><br />
<ol class="ol1" style="text-align: left;"><ul>
</ul>
</ol>
<span style="font-family: Arial, Helvetica, sans-serif;">The second one is - we all complain about the current PayPal APIs – the lack of consistency, overloaded APIs, too many APIs w/ duplicate and often times inconsistent behavior. But the fact is – that did not happen over night. PayPal has always been an API provider - we had APIs for merchants to use, when the term "API" wasn't even commonly known beyond code libraries. We had simple copy/paste HTML buttons when people didn't even know Web has versions. ;–) </span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Over the years as the business grew, more and more functionality got added to support a variety of complex use cases, functionality and integrations related to the payments space. Recently at the API Strategy and Practice conference, this is what I've discussed in the Payment APIs panel to share some lessons learned with the other API enthusiasts. You can see a couple of slides that I've presented there as "</span><a href="http://www.slideshare.net/ppalavilli/api-strategyconfpraveenv1" style="font-family: Arial, Helvetica, sans-serif;"><span class="s1">Providing Full Featured Payments (API) at Scale!</span></a><span style="font-family: Arial, Helvetica, sans-serif;">". </span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">I think there is a very important aspect that everyone needs to think about - "When is the right time to re-do your APIs?" - obviously we have waited too long and really hope we don't do that mistake again.</span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" mozallowfullscreen="" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/17067686?rel=0" style="border: 1px solid rgb(204, 204, 204); margin-bottom: 5px;" webkitallowfullscreen="" width="427"></iframe></div>
<ol class="ol1" style="text-align: left;"><ul>
</ul>
</ol>
<div class="p1" style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">As James Barrese, CTO of PayPal said in his <a href="https://www.thepaypalblog.com/2013/03/sxsw-2013-paypal-developer-tools/"><span class="s1">blog post,</span></a> we lost focus on the external developer some where in between. But finally with support from great leaders like James, David Marcus, and Hill Ferguson, we are getting back into the track, and what you see now on developer.paypal.com is just the beginning. </span></div>
<div class="p2" style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="p1" style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Since we are going to migrate all our developer resources from X.com to developer.paypal.com, I will start blogging back here. I've tried to migrate a few of my old blog posts from X.com to here that I know many refer to. You can always provide your feedback/suggestions/comments/discuss here and I would be more than happy to follow up on everything.</span></div>
<div class="p2" style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="p1" style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Cheers,</span></div>
<div class="p1" style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Praveen </span></div>
</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-34592480801130290782012-09-16T15:54:00.000-04:002013-02-12T16:14:58.342-05:00PayPal APIs - a galaxy not so far away!<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="blog-body">
<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
Developers and merchants ask me all the time - "Which PayPal API or product I should use?" – yeah I know nothing surprising right :-). Given the multiple APIs and the overlapping functionality, this is certainly the most commonly faced problem by all most all developers looking at PayPal APIs for the first time. It takes a while before anyone can feel comfortable with all the offerings and know which one to use for the use cases that they come across. In this post let me try to explain the platforms and APIs we have got and see if I can help you pick the right API that solves your use cases. If you've talked with me or attended any of my sessions at any conferences before – you might have seen/heard this already but as things constantly change at PayPal – I hope you will find something new here. <br />
<br />
<div class="p2">
</div>
<div class="p2">
<u>First of all -if you are in a hurry and don't have enough time to read through what I wrote to explain the platforms, just scroll all the way down to see the table listing various payment use cases and the how-to guides linked for each. That's the best way to get started from if you are in a rush.</u>
</div>
<div class="p2">
</div>
<div class="p1">
<br />
At the core of PayPal offerings there are really 2 flavors of platforms that you would notice. One is the traditional payments gateway called the "<strong>Payflow</strong>" and the other the "<strong>PayPal</strong>" platform. You might ask why there are two and why is the first one not called PayPal – well theoretically they both are PayPal platforms - it just happened that the Payflow gateway was an acquisition several years ago and has been maintained as a separate platform since then. </div>
<div class="p2">
</div>
<div class="p1">
<br />
I personally think the easiest way to understand the differences is: Payflow was built for processing credit/debit cards and later enhanced to support PayPal Accounts, where as PayPal platform was built for processing PayPal Accounts and later enhanced to support credit/debit cards. So as you use the APIs on these platforms, you will notice the concepts, functionality, and even terminology show affinity to what those platforms were originally built for. Here is a quick look at different Products/APIs offered by the two platforms – don't worry yet about what each one of those are – I will cover them below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-us4_rPDUlMg/URqu0sWM3zI/AAAAAAAAPQw/kRq1sc_5xTw/s1600/pp-platforms.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="329" src="http://2.bp.blogspot.com/-us4_rPDUlMg/URqu0sWM3zI/AAAAAAAAPQw/kRq1sc_5xTw/s640/pp-platforms.png" width="640" /></a></div>
<br />
<br /></div>
<div class="p2">
</div>
<div class="p2">
</div>
<div class="p1">
</div>
<div class="p1">
<strong>When to use the Payflow Gateway?</strong>
</div>
<div class="p2">
</div>
<div class="p1">
If you are looking for adding payments on a traditional ecommerce site, then Payflow is the best option. There are <a href="https://www.paypal.com/webapps/mpp/merchant">3 products offered</a> for merchants on the Payflow platform – PayPal Payments Standard, PayPal Payments Advanced and PayPal Payments Pro. All 3 of them offer almost the <a href="https://www.paypal.com/webapps/mpp/compare-business-products">same functionality</a> with varying levels of customizations (which is what you pay the monthly fee for). Btw it's important to note that most of the shopping carts, and open source e-commerce software (like Magento) already have support for Payflow built in – so refer to your cart providers or software configs to see how to enable it.<br />
<br /></div>
<div class="p2">
</div>
<div class="p1">
For the merchants and developers that want to build customized experiences on their ecommerce sites, the PayPal Payments Advanced and Pro would serve their needs in a very efficient manner. They offer features like transparent redirects that allow you to embed payment experience in your own pages and be able to handle error, failure and consumer drop out conditions much more efficiently. When using the pro, you would also have access to the Payflow APIs to process payment transactions over API calls from your server so you can design and control your customer's payment experience right on your site. Please be aware that when using APIs from your server side, you must take care of PCI compliance needs. </div>
<div class="p2">
</div>
<div class="p1">
<br />
There were several hooks added to the Payflow gateway to make it inter-operate with rest of the PayPal services including support for PayPal Business Accounts. So if a merchant (or developer), want to use the traditional Payment gateway system but do not want to get into the hassles of getting an Internet Merchant Account (IMA) – they can simply use a PayPal Business Account. The end result is that the Payflow gateway can be more than a traditional gateway in terms of adding support for payments using PayPal Personal/Premier Accounts, and easier PCI compliance through hosted and transparent redirects. </div>
<div class="p2">
</div>
<div class="p1">
<br />
This gives the flexibility for merchants to start using the Payflow gateway with a PayPal business account and as their business grows, they can simply replace the PayPal business account with an IMA account from a bank. I'm pretty sure most of you do not want to get into this – getting and dealing with banks for the IMA is just too painful for me. :-)</div>
<div class="p2">
</div>
<div class="p1">
<br />
Anyways - if you are going to use the Payflow platform, I would highly recommend started from <a href="https://www.x.com/developers/community/blogs/pp_integrations_preston/testing-paypal-payflow-gateway">this blog post</a> written by one of our integration engrs to capture what a developer need to do to get started with the Payflow platform products. If you are going to use the Payflow Pro APIs, then you can use this <a href="https://www.x.com/developers/paypal/documentation-tools/quick-start-guides">getting started guide</a> that will get you started in a few mins.</div>
<div class="p2">
</div>
<div class="p1">
<strong><br /></strong>
<strong>When to use the PayPal platform ?</strong>
</div>
<div class="p2">
</div>
<div class="p2">
If you are a developer like me, then I'm pretty sure what you look for is how to enable payments for the use cases that you are trying to solve and in most cases you are dealing with different platforms, technology and code to implement your apps rather than relying on some shopping cart or online store. Fortunately the PayPal Platform APIs are just to help developers like us so we can implement different payment models in our apps.<br />
<br /></div>
<div class="p2">
</div>
<div class="p1">
For most of the merchants and developers looking to add payments on simple web sites, the PayPal Payments Standard is probably the most simple way to accept payments online and there is no need to look any further into any APIs. The PayPal Payments Standard is one of the most commonly used product by most of the developers and merchants for it's simplicity and compatibility with any technology that supports HTML. It provides very simple and easier way to generate PayPal buttons for different use cases like shopping carts, buy now, donations, gift certificates, subscriptions, automated billing and installment plans. You fill in a few form fields (eg. your site info, product info, price, tax, shipping, etc.) in the online button generator and get a few lines of html code that you can copy/paste on your web sites. The PayPal experience that your consumers would see when they click on these buttons is completely mobile optimized too.</div>
<div class="p2">
</div>
<div class="p2">
<br />
For the others that need a more tightly integrated solutions on different platform, the PayPal APIs provide all the necessary nuts and bolts. But before I jump into explaining which API to use for what, here is an important aspect that you should keep in mind when dealing with payments:</div>
<div class="p1">
<strong><br /></strong>
<strong>Processing payment for yourself</strong> (vs) <strong>Processing payment for others</strong>: This is a common pattern that we come across when we are talking with developers. If you are a developer that is offering the service, product or the app itself, then you are processing the payment for yourself – which mean you are the Merchant Of Record (MOR). Where as if you are a developer building a platform or a framework or a marketplace through which other providers/merchants offer their products/services – then you are processing the payment for others – which means you are not the MOR, but the merchant/provider is. You might ask why can't I be the one that's collecting the payment (MOR) and later disburse the money to the merchants/providers ? Sure you can in some cases (like a marketplace and using PayPal to disburse the money), but in most cases this opens up a lot of concerns around chargebacks, money aggregation and AML. So I would recommend to not take on the responsibility of being the MOR but letting the actual recipient of the money to be the one.<br />
<br /></div>
<div class="p2">
</div>
<div class="p1">
Another aspect to keep in mind is the concept of <strong>API Caller</strong>. Some of the PayPal APIs provide a way for you to be just the API Caller and be able to provision payments between any 2 or more parties. So for the APIs that support the <strong>API Caller</strong> concept (eg. Adaptive APIs), you don't need to obtain permission from the merchant (payee) to be able to process payments on behalf of him. For others that do not provide the support the API Caller concept - you would need to obtain the permission from the merchant. It is usually done in 2 ways – the merchant logging into his business account and giving permission to your account (based on your API Username), or you use the Permissions API to obtain the permission from the merchant by redirecting him to PayPal (like OAuth dance) and obtain an access token. In cases when you are both the API Caller and the Merchant (payee) – the concept of API Caller doesn't really make much of a difference – so just pick the API that best suits your needs.<br />
<br /></div>
<div class="p2">
</div>
<div class="p1">
Now getting into the APIs, there are 2 kinds of APIs that you'll find in our API suite:</div>
<ol class="ol1">
<li class="li1">
Transactional APIs – that allow you to process and manager payments in different models. Simple payments, chained payments, parallel payments, subscriptions, automated billing, and many more.<br />
<br />
<ul class="ol1">
<li class="li1">
<strong>Express Checkout</strong>
– the most commonly used and popular PayPal API that provides the simple possible APIs to enable payments in a variety of ways. It was primarily designed to support (as it's name suggests) online checkout experience but can also be used for other use cases too. It has support for subscriptions (various freemium models) with fixed and variable pricing and even allows users to pay with their credit/debit cards (called guest payments).<br />
</li>
<li class="li1">
<strong>Direct Payment</strong>
– is the only API on PayPal platform that allows you to process credit/debit cards directly through an API. It has full support for auth/order/capture/sale functionality, reference transactions, and automated billing to support subscriptions based use cases. It provides ways to enforce additional security through CVV2, address check, etc. <br />
</li>
<li class="li1">
<strong>Adaptive Payments</strong>
– is relatively new set of APIs (launched in 2009) that provide support for newer payment models like Chained, Parallel and Preapproved Payments. These Apis were designed to be more in align with modern use cases around social, mobile and location.<br />
</li>
<li class="li1">
<strong>MassPay</strong>
– is probably the only API in the industry that allows you to send payouts to up to 250 recipients in one single API call (or up to 3000 via csv file upload). As you can imagine this is best suited for enterprise payments like accounts payable, payouts in affiliate programs, etc.<br />
</li>
<li class="li1">
<strong>Transaction Search and Details</strong>
– these apis provide you ways to obtain information about the payments that you've provisioned or received. In the world of payments, due to the involvement of various financial institutions in a given payment (Issuing bank, card network, acquiring bank, etc.) - the status of the payment might change based on several factors. So it's always recommended to use these APIs from your back office systems/services to handle the changes as it's appropriate.<br />
</li>
<li class="li1">
<strong>Instant Payment Notifications</strong>
(IPN) – these are not really an API. The IPN is a predecessor to the current standard WebHooks (in fact IPNs were the motivation for the design of WebHooks). The IPNs include notifications of various events that happen behind the scenes on the PayPal side. The IPNs provide you with a push mechanism to be aware of the changes happening in the background rather than using the Transaction Search and Details APIs, which require you to poll constantly to stay on top of what ever is happening with your transactions. </li>
</ul>
</li>
<li class="li1">
Account APIs – that allow you to manage accounts, and permissions.<br />
<br />
<ul class="ol1">
<li class="li1">
<strong>Adaptive Accounts</strong>
– is part of the new set of APIs launched back on 2009 to provide ways to create PayPal accounts (personal and business), attach payment instruments (bank/cards) and even check the verification status of a given PayPal Account. Using these APIs, developers can enhance their user experience by simplifying the user registration with PayPal, or for financial institutes like banks, credit unions and card issuers to seamlessly create PayPal accounts for their account/card holders and user PayPal as their money transfer platform to enhance their customer experience. <br />
</li>
<li class="li1">
<strong>Permission Service</strong>
– provides a way to obtain permissions from the merchants (business accounts) to do make several API calls on behalf of them. This API was designed based on the OAuth 1.0 protocol and helps in building a better on-boarding experience for merchants on your site/portal/application/platform/etc. Prior to this API, the only way merchants can give permission to another developer was through My Account page on paypal.com where they need to copy paste the developers API Username and go through a painfully long list of operations that they want to give permissions for.<br />
</li>
<li class="li1">
<strong>Invoice Service</strong>
– provides simple APIs to create and manage Invoices that are stored in PayPal. The APIs are generic enough to be used for any kind of service or products that you want to invoice your customers for. The notification mechanism is through PayPal email servers and provides different ways to customize the look and feel of the emails sent. More over, the emails also include a simple PayPal button for your consumer to pay with a card or PayPal account directly from the email. <br />
</li>
<li class="li1">
<strong>PayPal Access</strong>
– is the Identity exchange service built on top of industry standards like OpenIDConnect and OAuth2.0. The APIs allow you to access to the user's profile attributes including verified email and shipping address based on the user's permission. For eCommerce sites/apps that are using PayPal as the payment method, PayPal Access helps in enhancing the user experience by using the identity info provided to customize the experience and provide better product recommendations. <br />
</li>
</ul>
</li>
</ol>
<div class="p2">
</div>
<div class="p1">
<br />
Below you will find a list of use cases that I always hear developers asking about how to use PayPal and which PayPal API should they use. Hopefully this will be useful to you. If you have a specific use-case that's not covered here, please let me know (just leave it as a comment) and I will add it to the list below. <br />
<br /></div>
<div class="p2">
</div>
<table border="1" cellpadding="0" cellspacing="0" style="width: 743px;">
<thead>
<tr>
<th scope="col"><strong>Payment use-case</strong>
</th>
<th scope="col"><strong>Implementer role</strong>
</th>
<th scope="col"><strong>API Product</strong>
</th>
<th scope="col"><strong>Mobile Optimized?</strong>
</th>
<th scope="col"><strong>Guest Payment</strong>
</th>
<th scope="col"><strong>How-To Guide</strong>
</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="2"><strong>One-Time immediate Payment (Sale) between a sender and receiver</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/products/adaptive-payments">Adaptive Payments Pay API</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>Express Checkout</td>
<td>Y</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/documentation-tools/how-to-guides/how-use-express-checkout-one-time-payments">One-Time payments with EC</a>
</td>
</tr>
<tr>
<td rowspan="2"><strong>One-Time immediate parallel Payment (Sale) between a sender and multiple receivers</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>Y</td>
<td><a href="https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_APGettingStarted">Pay with receiver list</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>Express Checkout</td>
<td>Y</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/documentation-tools/how-to-guides/how-make-parallel-payments-using-express-checkout">Parallel Payments with EC</a>
</td>
</tr>
<tr>
<td rowspan="2"><strong>One-Time immediate Chained payment (Sale) between a sender, a primary receiver and multiple secondary receivers</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>Y<sup>+</sup>
</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-make-basic-chained-payment-using-adaptive-payments">Chained Payment with Adaptive Payments</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td rowspan="2"><strong>Delayed payments</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>Y<sup>+</sup>
</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-make-delayed-chained-payment-using-adaptive-payments">Delayed Chain Payment with Adaptive Payments</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td rowspan="2"><strong>Order/Auth/Capture</strong>
</td>
<td>API Caller</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Merchant</td>
<td>Express Checkout</td>
<td>Y</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/documentation-tools/express-checkout/how-to/ht_ec-singleAuthPayment-curl-etc">Auth/Capture with Express Checkout</a>
<br />
<a href="https://www.x.com/developers/paypal/documentation-tools/how-to-guides/how-create-and-process-order-using-express-checkout">Order/Auth/Capture with Express Checkout</a>
<br />
<a href="https://www.x.com/developers/paypal/how-to-guides/how-authorize-and-process-credit-card-payment-using-direct-payment">Auth/Capture using Direct Payment</a>
</td>
</tr>
<tr>
<td rowspan="2"><strong>Subscriptions w/ fixed amount and free trials</strong>
</td>
<td>API Caller</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Merchant</td>
<td>Express Checkout</td>
<td>Y</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-create-recurring-payments-profile-express-checkout">Recurring Payments with Express Checkout</a>
<br />
<a href="https://www.x.com/developers/paypal/how-to-guides/how-set-recurring-payments-profile-using-direct-payment">Recurring Payments with Direct Payment</a>
</td>
</tr>
<tr>
<td rowspan="2"><strong>Subscriptions w/ variable amount (pay as you use)</strong>
</td>
<td>API Caller</td>
<td>n/a</td>
<td></td>
<td></td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-set-payment-preapproval-using-adaptive-payments">Preapprovals with Adaptive Payments</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>Express Checkout</td>
<td>Y</td>
<td>N</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-set-reference-transaction-using-express-checkout">Reference Transactions with Express Checkout</a>
<br />
<a href="https://www.x.com/developers/paypal/how-to-guides/how-run-reference-transaction-using-direct-payment">Reference Transactions with Direct Payment</a>
</td>
</tr>
<tr>
<td rowspan="2"><strong>Crowd funding</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>N</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-set-payment-preapproval-using-adaptive-payments">Preapprovals with Adaptive Payments</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td rowspan="2"><strong>Group payments</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>N</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-set-payment-preapproval-using-adaptive-payments">Preapprovals with Adaptive Payments</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td rowspan="2"><strong>Payouts, Affiliate fees, payroll</strong>
</td>
<td>API Caller</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Merchant</td>
<td>Mass Pay</td>
<td>n/a</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/documentation-tools/how-to-guides/how-customize-payouts-using-mass-pay">Mass Payments Overview</a>
</td>
</tr>
<tr>
<td rowspan="2"><strong>Platform for services</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-make-basic-chained-payment-using-adaptive-payments">Chained Payment with Adaptive Payments</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td rowspan="2"><strong>Platform for crowd sourced content</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-make-basic-chained-payment-using-adaptive-payments">Chained Payment with Adaptive Payments</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td rowspan="2"><strong>Send Payments to up to 250 recipients in a single API call</strong>
</td>
<td>API Caller</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Merchant</td>
<td>Mass Pay</td>
<td>n/a</td>
<td>N</td>
<td><a href="https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_MassPayOverview">Mass Payments Overview</a>
</td>
</tr>
<tr>
<td rowspan="2"><strong>Direct Credit Card payment on your site (non-PCI compliant)</strong>
</td>
<td>API Caller</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Merchant</td>
<td>Direct Payment</td>
<td>Y*</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-authorize-and-process-credit-card-payment-using-direct-payment">Auth/Capture using Direct Payment</a>
</td>
</tr>
<tr>
<td rowspan="2"><strong>Embedded Payment Experience for digital goods</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/documentation-tools/how-to-guides/how-create-embedded-payment-flow-using-adaptive-payments">Embedded Payment flow with Adaptive Payments</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>Express Checkout</td>
<td>Y</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/documentation-tools/how-to-guides/how-accept-basic-digital-goods-payment-using-express-checkout">Basic Digital Goods Payments with EC</a>
</td>
</tr>
<tr>
<td rowspan="2"><strong>Embedded Payment Experience for physical goods and services</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/documentation-tools/how-to-guides/how-create-embedded-payment-flow-using-adaptive-payments">Embedded Payment flow with Adaptive Payments</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td rowspan="2"><strong>Donations</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>Y</td>
<td></td>
</tr>
<tr>
<td>Merchant</td>
<td>PayPal Payments Standard</td>
<td>Y</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-add-donate-button-page-using-paypal-payments-standard">Donate button using PayPal Payments Standard</a>
</td>
</tr>
<tr>
<td rowspan="2"><strong>Gifts</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>N</td>
<td><a href="https://www.x.com/developers/paypal/products/adaptive-payments">Adaptive Payments Pay API</a>
<br />
<a href="https://www.x.com/developers/paypal/how-to-guides/how-set-payment-preapproval-using-adaptive-payments">Preapprovals with Adaptive Payments</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td rowspan="2"><strong>Creating PayPal Accounts</strong>
</td>
<td>API Caller</td>
<td>Adaptive Accounts</td>
<td>Y</td>
<td>n/a</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-create-paypal-account-using-adaptive-accounts">Creating PayPal Accounts with Adaptive Accounts</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td rowspan="2"><strong>Personal Payments (P2P, Expense Sharing, etc.)</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/products/adaptive-payments">Adaptive Payments Pay API</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td rowspan="2"><strong>Marketplace</strong>
</td>
<td>API Caller</td>
<td>Adaptive Payments</td>
<td>N</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-make-basic-chained-payment-using-adaptive-payments">Chained Payment with Adaptive Payments</a>
<br />
<a href="https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_APIntro">Parallel Payments with Adaptive Payments</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>Express Checkout</td>
<td>Y</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/documentation-tools/how-to-guides/how-make-parallel-payments-using-express-checkout">Parallel Payments with EC</a>
</td>
</tr>
<tr>
<td rowspan="2"><strong>Invoicing</strong>
</td>
<td>API Caller</td>
<td>Invoicing Service</td>
<td>Y*</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-send-invoice-using-invoicing-service">Send Invoice using Invoicing Service</a>
</td>
</tr>
<tr>
<td>Merchant</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><strong>Payment Card Tokenization</strong>
</td>
<td>API Caller</td>
<td>n/a</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>Merchant</td>
<td>Direct Payment</td>
<td>Y*</td>
<td>Y</td>
<td><a href="https://www.x.com/developers/paypal/how-to-guides/how-run-reference-transaction-using-direct-payment">Reference Transactions with Direct Payment</a>
</td>
</tr>
</tbody>
</table>
* depends on your own implementation + depends on your account settings<br />
<br />
Well I hope this is useful - you can use our simple and easy to use SDKs on our <a href="https://www.x.com/developers/paypal/documentation-tools/paypal-sdk-index">SDK index page</a>. Please post your questions on the forums or reach out to me if you need help in identifying how to use PayPal APIs to solve your use cases.<br />
<br />
Happy Coding!</div>
</div>
</div>
</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-31675225760671256662012-07-31T16:16:00.000-04:002013-02-12T16:18:19.628-05:00Protecting consumer's payment information<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="blog-body">
<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
Troy Hunt a software architect and Microsoft MVP recently wrote a blog post on "<a href="http://www.troyhunt.com/2012/05/everything-you-ever-wanted-to-know.html">Everything you ever wanted to know about building a secure password reset feature</a>", which I believe every developer working on Payments must read. With a lot of developers building great apps/services to simplify the payment experience for end consumers, it's very essential to make sure you authenticate the users and store their information (no matter whether it's their payment card information or preapproval tokens, reference transactions obtained through PayPal or any other Payment provider out there) in the most secure way to protect the consumers from fraud and identity theft. <br />
<br />
Troy covered great information about:<br />
<ul>
<li>
Storing passwords securely<br />
</li>
<li>
Providing a secure password reset mechanism<br />
</li>
<li>
Role of Captcha & Account Security Questions<br />
</li>
<li>
Preventing Username enumeration<br />
</li>
<li>
Second factor authentication through SMS or email<br />
</li>
<li>
User Identification vs verification<br />
</li>
</ul>
and provides great examples of sites that do it well and worse too. He nicely summarized the process in a flow chat for all the developers (which I've included below for those of you that are looking for quick access to the information).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-EJLZdsll8Qo/URqxizJs_0I/AAAAAAAAPQ8/MeXGn4tz5p8/s1600/Password-Reset5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://1.bp.blogspot.com/-EJLZdsll8Qo/URqxizJs_0I/AAAAAAAAPQ8/MeXGn4tz5p8/s640/Password-Reset5.png" width="564" /></a></div>
<br />
</div>
</div>
</div>
</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-59841869573707555182012-07-31T16:12:00.000-04:002013-02-24T12:55:23.762-05:00Dynamic API Reference generators (aka API Explorers)<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="blog-body">
<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
Following up on recent <a href="https://www.braintreepayments.com/blog/api-where-to-begin">conversations</a> on developer documentation, thought I will post some of the info that we have gathered in the last couple of months around building dynamic API references (usually called API Explorers) that serve as both the API References and also an online API testing/playing interactive tool that helps developers touch and feel the APIs than just reading through pages of static docs. <br />
<br />
Here are the 5 tools and specifications that we came across that provide a way to build the interactive API Explorers:<br />
<ul class="ul1" style="text-align: left;">
<li class="li1">
<span class="s1">
<a href="http://corner.squareup.com/2012/06/fdoc.html">Square's fdoc</a> : Built by folks at Square to keep their client and server engrs in sync and collaborate on API documentation that always makes sure it's in sync with the code base reducing the typical pain of APIs and Clients getting out of sync due to never ending changes in the code base in a large organization.</span>
<br />
<ul class="ul2">
<li class="li2">
Format: Proprietary format based on json schema using YAML to write the raw files and Markdown to generate the doc<br />
</li>
<li class="li2">
Sample file: Refer to <a href="https://github.com/square/fdoc">fdoc github repo</a>
<br />
</li>
<li class="li2">
Sample site: Look in their <a href="http://corner.squareup.com/2012/06/fdoc.html">blog post</a> for a sample<br />
</li>
<li class="li2">
Tools: Square contributed their <a href="https://github.com/square/fdoc">code on github</a>, no other tools (in any other languages) available<br />
</li>
</ul>
</li>
<li class="li2">
<a href="https://developers.google.com/discovery/">Google APIs Discovery Service</a>: Built by folks at Google to provide a better & automated way for their developers to understand various Google APIs and try them to understand how they work.
<ul class="ul2">
<li class="li2">
Format: <a href="https://developers.google.com/discovery/">Proprietary format based on json schema</a>
<br />
</li>
<li class="li2">
Sample file: <a href="https://www.googleapis.com/discovery/v1/apis/urlshortener/v1/rest">Spec for Google URL Shortner API</a>
<br />
</li>
<li class="li2">
Sample site: <a href="https://developers.google.com/apis-explorer/#p/">Google APIs Explorer</a>
<br />
</li>
<li class="li2">
Tools: <a href="https://developers.google.com/discovery/libraries">Client libraries for Google APIs</a> and <a href="http://code.google.com/p/google-apis-explorer/">Open Source API Explorer</a> (unfortunately based the threads on it's users group, no one seems to be interested in <a href="https://groups.google.com/forum/embed/?place=forum/google-apis-explorer-users&showsearch=true&showpopout=true&parenturl=https%3A%2F%2Fdevelopers.google.com%2Fexplorer-help%2Fforum#!topic/google-apis-explorer-users/7ox-_RD-JqQ">supporting the project</a> from Google side)<br />
</li>
</ul>
</li>
<li class="li1">
<span class="s1">
<a href="http://www.mashery.com/product/io-docs">Mashery iodocs</a>: Built by folks at Mashery as part of their product offerings and also open sourced on github. Interface looks a lot similar to Swagger (see below).</span>
<br />
<ul class="ul2">
<li class="li2">
Format: <a href="https://github.com/mashery/iodocs/blob/master/README.md">Proprietary format based on json schema</a>
<br />
</li>
<li class="li2">
Sample file: <a href="https://github.com/mashery/iodocs/blob/master/public/data/klout.json">Klout API spec</a>
<br />
</li>
<li class="li2">
Sample site: <a href="http://developer.klout.com/iodocs">Klout API</a>
<br />
</li>
<li class="li2">
Tools: <a href="https://github.com/mashery/iodocs">Source code for iodocs generator</a> (but lot of open <a href="https://github.com/mashery/iodocs/issues">issues</a> and <a href="https://github.com/mashery/iodocs/pulls">pull requests</a> that are still open)<br />
</li>
</ul>
</li>
<li class="li2">
<a href="http://apigee.com/node/187">Apigee (Console) To-Go</a>: Built by folks at Apigee as a free offering for developers and service providers to build and host their API explorers. Given that they use a std format (WADL), it does make it quite easy to create a console for any API that can be documented in a WADL (Web APIs/RESTful APIs). Also <a href="http://zacstewart.com/2012/04/14/http-options-method.html">several frameworks</a> like <a href="http://jersey.java.net/">Jersey</a> do provide auto generation of WADL based on the annotations added to your source code.
<ul class="ul2">
<li class="li2">
Format: <a href="http://wadl.java.net/">WADL</a> w/ optional custom xml elements to enhance the basic description of APIs <br />
</li>
<li class="li2">
Sample file: <a href="https://github.com/apigee/wadl-library">several on their github repository</a> (including PayPal and Milo that we wrote)<br />
</li>
<li class="li2">
Sample site: <a href="https://apigee.com/providers">Several on the Apigee Console page</a>
<br />
</li>
<li class="li2">
Tools: In addition to Apigee, there are several other tools that support <a href="http://wintermuteblog.blogspot.com/2010/01/wadl-toolbox.html">WADLs</a> (including a simple XSLT style sheet to render the API info in a browser friendly way)<br />
</li>
</ul>
</li>
<li class="li1">
<span class="s1">
<a href="http://swagger.wordnik.com/">swagger</a>: Built by folks at Wordnik both as a specification and a framework for describing, producing, consuming and visualizing APIs. It feels like what fdoc has done but geared towards external consumption than internal collaboration. </span>
<br />
</li>
<ul class="ul2">
<li class="li2">
Format: <a href="http://swagger.wordnik.com/spec">Specification</a>
<br />
</li>
<li class="li2">
Sample file: <a href="https://gist.github.com/1135690#file_sample_resource_and_operation_listings.json">Sample Resource and Operation listing</a>
<br />
</li>
<li class="li2">
Sample site: <a href="http://petstore.swagger.wordnik.com/">demo site</a>
<br />
</li>
<li class="li2">
Tools: <a href="http://swagger.wordnik.com/downloads">Downloads on Swagget site</a>
<br />
</li>
</ul>
<li>[Update 2/24] <a href="http://apiary.io/">apiary.io</a>: This is a cool new tool that came out recently. The interesting aspects of this are the developer friendly and easy to write REST API blueprint, mock server implementation, interactive API reference and more.</li>
<ul>
<li>Format: <a href="http://apiary.io/blueprint">API blueprint</a> </li>
<li>Sample file: <a href="https://github.com/timdorr/model-s-api">Tesla Model S Rest API</a></li>
<li>Sample site: <a href="http://docs.timdorr.apiary.io/">Tesla Model S Rest API doc</a></li>
<li>Tools: Hosted service (it's currently free in beta)</li>
</ul>
</ul>
<div class="li2">
</div>
<div class="li2">
<br /></div>
<div class="li2">
We spent some significant time on trying to use swagger internally for some experimentation API, but we some how felt like it was making our code a lot more complex than what we would get out of it. Where as with Jersey (of course we were building our experimentation api in java), the experience was a lot more simple with a lot of flexibility in the way we want to do out things and get a WADL file produced directly out of it. With a few more additions to the WADL, we were able to feed it into the Apigee API Console with almost no effort. We have also experimented (well still to some extent) with iodocs and added some more custom functionality to build an API explorer for our legacy PayPal SOAP APIs. Hopefully we will put it out soon as we iron out all issues - it wasn't really that difficult thought (btw <a href="http://iodocs.docusign.com/">DocuSign have also released their new API Explorer based on iodocs</a>, which btw I really hope they will contribute their changes back to iodocs so we can all collaborate in making the open source tools better).</div>
<div class="li2">
<br /></div>
<div class="li2">
I would really love to hear about any other tools/specifications out there that we should look into. I would also love to hear your feedback too on these tools if you've used them before.</div>
</div>
</div>
</div>
</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-39809062154703016102012-07-30T16:19:00.000-04:002013-02-12T16:20:25.609-05:00Phases of a Commerce Transaction<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="blog-body">
<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
We are trying to explore how we can present the idea behind the various phases of Commerce transaction that we have been talking about. Saranyan, our X.commerce evangelist has built this <a href="http://saranyan.com/commerce_wheel/">Commerce Wheel</a> to illustrate various Commerce use cases that apply to most of the Merchants & Consumers that developers are looking to build solutions for. I've been working with our user experience guys to convert <a href="http://www.slideshare.net/Xcommerce/getting-yourfeetwetwithmobilecommercev2">my crude commerce phases diagram</a> into something that's more refined and easy to understand. Let me know what you think about it.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/--S23XOqaKQ8/URqyEGboC3I/AAAAAAAAPRI/2pDUVIsTsYQ/s1600/ecom_phases_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="308" src="http://2.bp.blogspot.com/--S23XOqaKQ8/URqyEGboC3I/AAAAAAAAPRI/2pDUVIsTsYQ/s400/ecom_phases_1.png" width="400" /></a></div>
<br />
</div>
</div>
</div>
</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-18166123094090798832012-07-20T16:22:00.000-04:002013-02-12T16:23:46.504-05:00Hacking Mobile Commerce<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="blog-body">
<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<div class="p1">
I'm more excited than ever for the <a href="http://www.iosdevcamp.org/">iOSDevCamp</a> this weekend that we are hosting at PayPal campus. This is the 4th time in a row that we are hosting the iOSDevCamp, which happens to be one of the best mobile hackathon/devcamps that are organized in the world. </div>
<div class="p1">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-PcY5_LkFBgM/URqy2GygZNI/AAAAAAAAPRQ/oLrtZjNWQfY/s1600/iosdevcamp2011.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="425" src="http://2.bp.blogspot.com/-PcY5_LkFBgM/URqy2GygZNI/AAAAAAAAPRQ/oLrtZjNWQfY/s640/iosdevcamp2011.jpeg" width="640" /></a></div>
<br /></div>
<div class="p1">
</div>
<div class="p1">
<br /></div>
<div class="p1">
</div>
<div class="p1">
</div>
<div class="p1">
We have seen several great hacks/apps from the iOSDevCamp and even better several of them became successful apps used by consumers every day. I still remember the "<a href="http://www.businessweek.com/magazine/content/10_48/b4205053125308.htm">iConcessionStand</a>" hack (now called "<a href="http://yorder.it/">yorder.it</a>" from the first iOSDevCamp back in 2010 at PayPal, that created an amazing experience for people attending baseball/soccer/basketball games to order and pay (of course with PayPal :-)) for food through their iPad sitting right in their seat without missing even a single minute of the game. Since then they had an amazing growth to support games at various ball parks (Seattle Mariners) and soccer stadiums (San Jose Earthquakes), and even extended their service to food carts.</div>
<div class="p1">
Now you might ask - why am I more excited than ever - well there is a reason. All the recent researches and actual results from various companies are showing that the mobile commerce growth is more than any one has expected. Just to give you an example, here are <a href="http://ebayinkblog.com/2012/07/18/highlights-from-ebay-inc-s-sterling-q2-results/">some #s from eBay</a> from the recent Q2 results: </div>
<ul class="ul1">
<li class="li2">
- A women's handbag is purchased every 30 secs on eBay Mobile<br />
</li>
<li class="li2">
- more than 8200 cars and 340,000 car parts are sold each week through eBay Mobile<br />
</li>
<li class="li2">
- 600,000 new customers in Q2 made their first ever purchase with eBay Inc on eBay Mobile<br />
</li>
<li class="li2">
- 1.9 million items are being listed through mobile devices each week on eBay<br />
</li>
<li class="li2">
- PayPal is processing $10 billion on mobile in 2012 - that's 150% more than last year<br />
</li>
<li class="li2">
- 90 million users have downloaded the eBay mobile apps with over $10 billion of volume through mobile apps<br />
</li>
</ul>
<div class="p1">
<br /></div>
<div class="p1">
All these not to show how successful eBay or any other commerce company is doing but to underline the growth of Mobile Commerce and the opportunities that you all have.</div>
<div class="p1">
<br /></div>
<div class="p1">
Typically developers think a commerce transaction is all about payments – but no - it's a lot more than just collecting/enabling payments on a web or mobile app. A commerce transaction (both online and offline) involves everything from the point when the consumers realizes that they need something based on the need or what their friends have, to doing the research, finding the reviews, seeking recommendations, finding the store that offers the best price/warranty/shipping, to making the actual purchase. This cycle goes on and on again as they start sharing their experience on what they have purchased through their social circles, online channels, etc. influencing others.</div>
<div class="p1">
<br /></div>
<div class="p1">
As a developer, there are <a href="https://www.x.com/corporate/blog/praveen-alavilli/opportunities-developers-think-and-win-big">plenty of opportunities for you</a> to help redefine and create amazing consumer experiences in each and every phase involved in a commerce transaction. </div>
<div class="p1">
<br /></div>
<div class="p1">
At eBay Inc our goal is to help you do that – check out our services to see how you can use them:</div>
<ul class="ul1">
<li class="li3">
- eBay for product listings, reviews and search<br />
</li>
<li class="li3">
- PayPal for payments<br />
</li>
<li class="li3">
- Milo for location-based inventory search<br />
</li>
<li class="li3">
- PayPal Access for verified identities<br />
</li>
<li class="li3">
- Hunch for recommendations and predictions<br />
</li>
<li class="li3">
- RedLaser for barcode/qrcode scanning<br />
</li>
<li class="li3">
- Magento for storefront<br />
</li>
<li class="li3">
- Card.io for Credit/Debit Card Scanning<br />
</li>
</ul>
<div class="p1">
<br /></div>
<div class="p1">
Goto X.com and start hacking the commerce! </div>
<div class="p1">
<br /></div>
<div class="p1">
If you are still not sure – here are some ideas from one of my presentations on slideshare to see how you can <a href="http://www.slideshare.net/Xcommerce/getting-yourfeetwetwithmobilecommercev2">get your feet wet with mobile commerce</a> :-).</div>
<div class="p1">
</div>
<div class="p1">
<iframe frameborder="0" height="421" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/11875221" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;" width="512">
</p>
<div style="margin-bottom:5px">
<strong>
<a
href="http://www.slideshare.net/Xcommerce/getting-yourfeetwetwithmobilecommercev2"
target="_blank" title="Getting your feet wet with Mobile Commerce">Getting your feet wet with Mobile Commerce</a>
</strong>
<p>
from <strong>
<a
href="http://www.slideshare.net/Xcommerce" target="_blank">X.commerce</a>
</strong>
</p>
</div>
<p class="p1">
We will be at iOSDevCamp all the weekend – so please feel free to stop by our table or ping us if you need any help with using any of the above mentioned services and tools.</p>
<p class="p1">
Let's have fun hacking some commerce apps this weekend!</p>
</div>
</div>
</div>
</div>
</iframe></div>
</div>
</div>
</div>
</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-72606581310760162562012-05-27T16:32:00.000-04:002013-02-12T16:38:37.996-05:00PayPal In-App Payment Library for Android now ready for Tablets!<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="blog-body">
<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-zp3qCDX9sH4/URq1WCRACTI/AAAAAAAAPSA/OHr9h_weByE/s1600/6227_funny-pictures-come-on-guys-i-dont-care-if-we-are-penquins-the-waters-frickin-cold-cant-we-just-order-in.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="340" src="http://4.bp.blogspot.com/-zp3qCDX9sH4/URq1WCRACTI/AAAAAAAAPSA/OHr9h_weByE/s400/6227_funny-pictures-come-on-guys-i-dont-care-if-we-are-penquins-the-waters-frickin-cold-cant-we-just-order-in.jpg" width="400" /></a></div>
<br />
(Image Credit: icanhascheezburger.com)<br />
<br />
woo hoo - good news - the PayPal In-App Mobile Payment Library for Android is now updated for Tablets too. It no longer crashes for wifi only tablets (or any Android devices as a matter of fact) that do not have the IMEI # available. Download it from <a href="http://www.blogger.com/community/ppx/xspaces/mobile/mep">here</a> (note version 1.5) and start updating your Android apps to get them ready for tablets. The only change you would need to make is to declare the permission for ACCESS_WIFI_STATE in your AndroidManifest.xml and update the PayPal_MPL.jar file in your lib directory:<br />
<br />
<pre class="jive_text_macro jive_macro_code" name="code" xml:space="preserve"><span class="s1">
<</span><span class="s2">
uses-permission</span> <span class="s4">
android:name</span><span class="s3">
=</span>"android.permission.ACCESS_WIFI_STATE"<span class="s1">
/></span>
</pre>
I'm excited and looking forward to seeing some cool apps for my Android tablets from your guys (yeah so I can just order food in <span class="jive_macro jive_emote" name="happy" src="/images/emoticons/happy.gif">). Don't forget submitting your app for the <a href="https://www.x.com/community/ppx/devchallenge/">PayPal Android DevChallenge</a> by June 8th.</span><br />
<span class="jive_macro jive_emote" name="happy" src="/images/emoticons/happy.gif"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-4qSUEWlGroI/URq1miKT_EI/AAAAAAAAPSI/s3hyxmaWcx8/s1600/6224_mpl-on-tablet-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://1.bp.blogspot.com/-4qSUEWlGroI/URq1miKT_EI/AAAAAAAAPSI/s3hyxmaWcx8/s640/6224_mpl-on-tablet-1.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-5S4TQpa14eI/URq1tErjTqI/AAAAAAAAPSU/pTOIMo5Lxn8/s1600/6225_mpl-on-tablet-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://1.bp.blogspot.com/-5S4TQpa14eI/URq1tErjTqI/AAAAAAAAPSU/pTOIMo5Lxn8/s640/6225_mpl-on-tablet-2.png" width="400" /></a><a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-D1Sojqsg69c/URq1s51ULbI/AAAAAAAAPSQ/xznlstyWP5U/s1600/6226_mpl-on-tablet-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://2.bp.blogspot.com/-D1Sojqsg69c/URq1s51ULbI/AAAAAAAAPSQ/xznlstyWP5U/s640/6226_mpl-on-tablet-3.png" width="400" /></a></div>
<a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a>
</div>
</div>
</div>
</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-29872656273637453992012-05-22T16:25:00.000-04:002013-02-12T16:29:18.930-05:00In-app Payments for Android Apps<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="blog-body">
<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://3.bp.blogspot.com/-1DkZkls4KUk/URqzlvRMhpI/AAAAAAAAPRY/DRBDQPY-uok/s1600/6023_il_570xN.168221323.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="425" src="http://3.bp.blogspot.com/-1DkZkls4KUk/URqzlvRMhpI/AAAAAAAAPRY/DRBDQPY-uok/s640/6023_il_570xN.168221323.jpg" width="640" /></a></div>
<br />
<div class="p1">
<span class="s1">(Image Credit: Hazel Nicholes - <a href="http://www.etsy.com/listing/54454529/its-whats-inside-that-counts-handprinted">
<span class="s2">http://www.etsy.com/listing/54454529/its-whats-inside-that-counts-handprinted</span>
</a>)</span>
</div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p3">
As we all know, Mobile applications always have a great challenge of providing the best possible experience to the users, with in the constraints enforced by the device and the mobile platform itself. As a developer one would always want to make the app experience delightful so more users would spend more time using it. Delightful experience requires several things – from a nice, simple and easy-to-use interface to providing an utility that makes the users keep using the app again and again. In the case of mobile applications, one of the primary aspect that influences the delightful experience is the ability to enable the users to interact with various features and functionality all inside the app. One would say – but that’s what an app is for. True, but unfortunately due to the way various features (Eg. User Authentication, Permission granting, etc.) are enabled in the mobile platform, providing a complete "in-app" experience is indeed challenging – unless of course you are building a mobile app for your own company and not providing API services to 3rd party developers.</div>
<div class="p3">
<br /></div>
<div class="p3">
Collecting Payments is one such feature/functionality that has been problematic for developers to enable inside their apps. As we have seen the <a href="http://internet2go.net/news/data-and-forecasts/amazon-ebay-mobile-success-defies-m-commerce-trend">
<span class="s3">success of Amazon and eBay Mobile apps setting up the trend for m-Commerce</span>
</a>, there is a huge opportunity for everyone to tap into the m-Commerce space by enabling various things related to commerce on open mobile platforms like Android. They could range from simple price comparison apps to trading and shopping apps that enable users to buy and sell things through their mobile devices. In addition to the shopping (commerce) use cases, there are several other use cases around payments like utility payments, paying for parking meters, service payments, P2P payments for expense/bill sharing, gifts/group gifts, donations, healthcare, taxi cab payments, and many more.</div>
<div class="p3">
<br /></div>
<div class="p3">
Android Platform has fortunately more than a few in-app payment options available, which each one of them addresses different use cases both in terms consumer billing (credit cards, bank accounts, carrier billing, offers, etc.) and what they can be used for (digital goods, game levels, physical goods, subscriptions, etc.). One can of course use their traditional payment processing gateways to directly collect the credit card information and process the payments in the traditional ways but again for developers with no prior experience dealing with payment gateways and internet merchant accounts, it's a heavy (and painful) process to deal with and more over require you to be PCI/DSS compliant. This is where the in-app payment providers for Android platform make things easy and simple for them to enable payments inside the apps.</div>
<div class="p3">
<br /></div>
<div class="p3">
<span class="s3">
<a href="http://developer.android.com/guide/market/billing/billing_overview.html">Google has it's own in-app payment</a>
</span> solution built into Android platform through the Android Market application. The Android Market app provides a in-app billing service that your application can interact with to collect payments from the end users. The interactions between your app and Android Market service happen through a set of IPC calls and asynchronous broadcast intents. When your app needs to collect payment for a purchase, it sends a billing request to the Android Market app over IPC call (sendBillingRequest()). The Android Market Application at this point returns a checkout Intent, which when started by your application, renders the Android Market Billing View over your application (see screenshot below) and let's the user to go through the payment/checkout process. Once the user successfully finishes the payment, a notification will be sent to your application via a broadcast intent that provides the references to the actual payment transaction, which can be used to retrieve further information about the payment. Unfortunately the Android Market in-app billing (payments) is only restricted to use for selling digital content and cannot be used for physical goods, personal services, or anything that requires a physical delivery.</div>
<div class="p3">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-RtbUx7oXsrY/URqzy06cw4I/AAAAAAAAPRg/m1tB7EU4tec/s1600/6024_billing_checkout_flow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="347" src="http://3.bp.blogspot.com/-RtbUx7oXsrY/URqzy06cw4I/AAAAAAAAPRg/m1tB7EU4tec/s640/6024_billing_checkout_flow.png" width="640" /></a></div>
<div class="p3">
<br /></div>
<div class="p3">
</div>
<div class="p3">
<br /></div>
<div class="p3">
PayPal on the other end, provides an <a href="http://www.blogger.com/mobile">
<span class="s1">in-app payment solution</span>
</a> that can be used for pretty much all use cases including digital content (where ever it's appropriate – alternate app stores and mobile web apps). The PayPal in-app payment solutions consists of 2 offering – with one for native mobile apps through PayPal <a href="http://www.blogger.com/community/ppx/xspaces/mobile/mep">
<span class="s1">Mobile Payment Libraries</span>
</a> and the other <a href="http://www.blogger.com/community/ppx/xspaces/mobile/mecl">
<span class="s1">Mobile Express Checkout</span>
</a> for Mobile Web apps that run inside the browser (or embed a browser inside them). Both solutions are designed to be integrated in less than 10 mins inside your Android apps providing support from simple (one sender to one receiver) payments to split payments (one sender to one or more receiver in a chained or parallel model), and pre-approvals to support use cases like subscriptions and pay-as-you-use use cases.
</div>
<div class="p3">
The Mobile Express Checkout provides UI based on HTML that's optimized for webkit browsers (Safari and Android Browser) and is based on the standard PayPal Express Checkout integration. So for some one who is already using PayPal Express Checkout Service to collect payments, mobile compatible UX is just automatically enabled when the users use your application in a mobile browser.
</div>
<div class="p3">
<br /></div>
<div class="p3">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-5dOttb0GSnM/URqz4k4dYEI/AAAAAAAAPRo/84mD_cLti78/s1600/6025_7AA45C9E-9917-419D-8422-72B63AB318CF.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="323" src="http://2.bp.blogspot.com/-5dOttb0GSnM/URqz4k4dYEI/AAAAAAAAPRo/84mD_cLti78/s400/6025_7AA45C9E-9917-419D-8422-72B63AB318CF.png" width="400" /></a></div>
<div class="p3">
<br /></div>
<div class="p3">
<br /></div>
<div class="p3">
The Mobile Payment Library for Android provides a set of classes, Views and Activities to help you easy integrate the payment process inside your app. The interactions between your app and PayPal happen through the library, which behind the scenes send and receive requests/responses from PayPal servers to provide you a native java interface to interact with. When your application needs to collect payments for a purchase, it initializes the PayPal Mobile Payment Library (optionally generates a PayPal Button using the methods provided), creates the PayPalPayment object with all payment relevant information, calls the checkout() method to obtain the Checkout Intent, which when started by your application, renders the PayPal Checkout Views over your application (see screenshot below) and let's the user to go through the payment/checkout process right inside your app. Once the user successfully finishes the payment, the payment status can be obtained either through the standard onActivityResult() method or by attaching your own call back (called PayPalResultDelegate) to obtain the status of the payment behind the scenes.
</div>
<div class="p3">
<br /></div>
<div class="p3">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://4.bp.blogspot.com/-8iTDHUIPiD0/URqz_RM0ZqI/AAAAAAAAPRw/S9JJea4WG00/s1600/6026_961C6B60-EC27-4AE4-B508-64FDDEAF71A8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="348" src="http://4.bp.blogspot.com/-8iTDHUIPiD0/URqz_RM0ZqI/AAAAAAAAPRw/S9JJea4WG00/s640/6026_961C6B60-EC27-4AE4-B508-64FDDEAF71A8.png" width="640" /></a></div>
<div class="p3">
<br /></div>
<div class="p3">
</div>
<div class="p3">
<br /></div>
<div class="p3">
<br /></div>
<div class="p3">
You can find more information including a step by step developer guide to both Mobile Payment Library and Mobile Express Checkout for Android on PayPal developer portal (<a href="http://www.blogger.com/mobile">
<span class="s1">https://www.x.com/mobile</span>
</a>). Also to encourage developers to innovate Mobile Payments and change the way people do commerce on Android devices (phones, tablets, etc.), we announced a <a href="http://www.blogger.com/devchallenge">
<span class="s1">developer contest</span>
</a> recently. As the Android devices are getting more and more powerful (thanks to the great innovations from companies like Samsung), we have great opportunities to enable and turn those futuristic ideas, that have always been in our minds, into a reality. After all who still wants to make those late night trips to the grocery store or even stand in long lines at the retail stores to pay and check out the products ?
</div>
<div class="p3">
<br /></div>
<div class="p3">
Cheers,</div>
<div class="p3">
Praveen</div>
</div>
</div>
</div>
</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-17176381429487290272012-05-10T16:30:00.000-04:002013-02-12T16:31:38.422-05:00Updates to the PayPalX App Engine Toolkit<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="blog-body">
<div class="field field-name-body field-type-text-with-summary field-label-hidden">
<div class="field-items">
<div class="field-item even">
Hey guys,<br />
<br />
Good news - I've checked in the updates to the Adaptive Payments Java Toolkit for the Google App Engine. The toolkit now has support for all API methods, parameters and functionality that Adaptive Payments has added since Innovate 2010. The toolkit also has couple of sample apps:<br />
<ul>
<li>
a sample PicMart app that uses the toolkit to sell pictures using the new Adaptive Payments Embedded Payment Experience. You can access it here -
<a class="jive-link-external-small" href="http://picmart-app.appspot.com/picmart">http://picmart-app.appspot.com/picmart</a>
(Note that it only works in Chrome)
</li>
<li>
a sample API scratch pad that uses the toolkit to demonstrate various API calls so you can try them around see how it fits your use cases -
<a class="jive-link-external-small" href="https://pp-ap-sample.appspot.com/adaptivesample">https://pp-ap-sample.appspot.com/adaptivesample</a>
</li>
</ul>
<br />
I have started updating the Python toolkit too - it's currently checked in as a python sample but as I finish updating the toolkit I will separate it out as a standalone toolkit.<br />
You can access the code from here:
<a class="jive-link-external-small" href="http://code.google.com/p/paypalx-gae-toolkit/">http://code.google.com/p/paypalx-gae-toolkit/</a>
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-w85sCSGePKg/URq0mlZyuwI/AAAAAAAAPR4/itlTIdUzikw/s1600/5885_photo.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="476" src="http://2.bp.blogspot.com/-w85sCSGePKg/URq0mlZyuwI/AAAAAAAAPR4/itlTIdUzikw/s640/5885_photo.JPG" width="640" /></a><a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=754260340057137512" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<br />
<br />
<br />
I'm really excited to be at GoogleIO (yes this is my first time at GoogleIO) and taking part in the AppEngine Sandbox (
<a class="jive-link-external-small" href="http://www.google.com/events/io/2011/sandbox.html">http://www.google.com/events/io/2011/sandbox.html</a>
). If you are here, please stop by our demo station in the AppEngine Sandbox on 2nd floor. Looking forward to meeting several of you here and talk about exciting technologies and announcements at GoogleIO.
<br />
<br />
cheers,<br />
Praveen</div>
</div>
</div>
</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-23843254468934505852011-10-19T09:36:00.000-04:002013-03-08T09:38:01.719-05:00X.commerce - Where to start ?<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Well I'm pretty sure a lot of you might have heard about the new X.commerce ecosystem that was launched at our <a href="http://www.innovate-conference.com/" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Innovate developer conference</a> last week in San Francisco - if you have not please check out the <a href="https://www.x.com/innovate/2011" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">keynotes and session videos on x.com</a>. The X.commerce ecosystem opens up a lot of opportunities for both developers and merchants to redefine the future of commerce. eBay Inc bootstraps the X.commerce ecosystem with it's own properties like PayPal, eBay.com, RedLaser, Milo, Where, GSI, Magento, etc. that provide a variety of capabilities that the developers can use to create unique capabilities that will help merchants and consumers. </div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
A lot of developers have asked since last week on how they can get started in the X.commerce ecosystem. So I thought I will post some quick pointers and links to a couple of docs on x.com that will help you get started.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
At the core of the X.commerce ecosystem is what we call "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">The Fabric</strong>". The Fabric is an open message broker that provides a standards-based way to integrate and consume capabilities within the X.commerce ecosystem. Now you would ask "What is a capability?" :-) - well it's any piece of functionality that a merchant might leverage to expand their commerce solution and grow their business. The Fabric makes the integration of such capabilities with merchant stores and applications <u style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">very simple</u>. Any one (developers, system integrators, merchants, etc.) in the world should be able to build a capability and/or use a capability built by others.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
To give you an idea - here is how the X.commerce ecosystem looks like with the Fabric at the core.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-7Ut02LDrGlk/UTn3VIVTwuI/AAAAAAAAPT4/kiYnkmTXyzw/s1600/TheFabric-FINAL_0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://2.bp.blogspot.com/-7Ut02LDrGlk/UTn3VIVTwuI/AAAAAAAAPT4/kiYnkmTXyzw/s640/TheFabric-FINAL_0.png" width="640" /></a></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
To get started in the X.commerce ecosystem - our developer documentation team has put together quite a few documents that walk you through various concepts that you would need to understand, and setting up your development environment to start coding. Below are the links to those documents and tools that I highly recommend going through in the order they are listed below:</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">1.</strong> <a href="https://www.x.com/developers/x.commerce/getting-started-x.commerce" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Getting Started with X.commerce</a> - covers various important key concepts including Message Contracts, Topics, and AuthN/AuthZ.</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">2.</strong> <a href="https://www.x.com/developers/x.commerce/documentation-tools/quick-start-guides/x.commerce-developer-package#overlay-context=user" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Getting Started with the X.commerce Developer Package</a> - covers setting up your local development environment, running the Fabric on your local workstation/laptop, etc.</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin-left: 40px; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">*</strong> If you are an Eclipse fan like me - check out the <a href="https://www.x.com/developers/x.commerce/documentation-tools/quick-start-guides/x.commerce-plugin-eclipse" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Getting Started with the X.commerce Plugin for Eclipse</a> - covers how you can use the eclipse plugin to install and run the local development environment and start building capabilities using the project wizards provided.</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">3.</strong> <a href="https://www.x.com/developers/x.commerce/how-build-x.commerce-capability" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">How to build an X.commerce Capability</a> - covers the necessary steps to building your first capability</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">4.</strong> Check out the <a href="https://www.x.com/developers/x.commerce/how-administer-x.commerce-capability" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">How to administer an X.commerce Capability</a> - covers important information on how to configure your Capability, routing information, authentication credentials, etc. </div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">5.</strong> Check out the current message contracts in our <a href="https://github.com/xcommerce/X.commerce-Contracts" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">open github repository</a> to understand what Topics are available and the message formats. To help you understand the message contracts, we have provided message contract references for Marketplace and Catalog contracts here:</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin-left: 40px; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">*</strong> <a href="https://www.x.com/sites/default/files/webform/docs/xcommerce/marketplace/index.html" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Marketplace contract</a></div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin-left: 40px; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">*</strong> <a href="https://www.x.com/sites/default/files/webform/docs/xcommerce/catalog/index.html" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Catalog contract</a></div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin-left: 40px; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
At this point you should have good understanding on various components and key concepts. I recommend checking out Jeromy's session "<a href="http://www.youtube.com/user/xcommercechannel#p/search/0/8fZPtLvApvI" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">From Code to Capability</a>" video. He walks through an end-to-end sample on how the Fabric helps a Magento store to be integrated with a sample Inventory capability. You can explore the <a href="https://github.com/xcommerce/innovate-developer-demo" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">code repository</a> that Jeromy has published on github - he added a very descriptive step by step guide that walks you through the sample he has built in the session at Innovate (video link above).</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
Hope this is useful info for everyone. We will be posting couple of screencasts of Jeromy's <a href="https://github.com/xcommerce/innovate-developer-demo" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">sample capability</a> and a sample<a href="https://github.com/xcommerce/xdevcamp-auctionhouse" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">auction house capability</a> that Saleem has walked through at the XdevCamp. So keep an eye on the <a href="https://www.x.com/developers/community/blogs" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">developer blogs</a> on x.com and of course follow us on twitter <a href="http://twitter.com/#!/X_commerce" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">@X_commerce</a>.</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
cheers,</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
Praveen</div>
<br />
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-67144808859475465732011-05-20T09:40:00.000-04:002013-03-08T09:43:53.566-05:00In-app Payments for Android Apps<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-bWJhF3Yw1zw/UTn42a77S5I/AAAAAAAAPUA/mFdcA3nRlrg/s1600/6023_il_570xN.168221323.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="426" src="http://4.bp.blogspot.com/-bWJhF3Yw1zw/UTn42a77S5I/AAAAAAAAPUA/mFdcA3nRlrg/s640/6023_il_570xN.168221323.jpg" width="640" /></a></div>
<span style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;">(Image Credit: Hazel Nicholes - </span><a href="http://www.etsy.com/listing/54454529/its-whats-inside-that-counts-handprinted" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;"><span class="s2" style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">http://www.etsy.com/listing/54454529/its-whats-inside-that-counts-handprinted</span></a><span style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;">)</span><br />
<div class="p2" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div class="p2" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
As we all know, Mobile applications always have a great challenge of providing the best possible experience to the users, with in the constraints enforced by the device and the mobile platform itself. As a developer one would always want to make the app experience delightful so more users would spend more time using it. Delightful experience requires several things – from a nice, simple and easy-to-use interface to providing an utility that makes the users keep using the app again and again. In the case of mobile applications, one of the primary aspect that influences the delightful experience is the ability to enable the users to interact with various features and functionality all inside the app. One would say – but that’s what an app is for. True, but unfortunately due to the way various features (Eg. User Authentication, Permission granting, etc.) are enabled in the mobile platform, providing a complete "in-app" experience is indeed challenging – unless of course you are building a mobile app for your own company and not providing API services to 3rd party developers.</div>
<div class="p2" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Collecting Payments is one such feature/functionality that has been problematic for developers to enable inside their apps. As we have seen the <a href="http://internet2go.net/news/data-and-forecasts/amazon-ebay-mobile-success-defies-m-commerce-trend" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">success of Amazon and eBay Mobile apps setting up the trend for m-Commerce</a>, there is a huge opportunity for everyone to tap into the m-Commerce space by enabling various things related to commerce on open mobile platforms like Android. They could range from simple price comparison apps to trading and shopping apps that enable users to buy and sell things through their mobile devices. In addition to the shopping (commerce) use cases, there are several other use cases around payments like utility payments, paying for parking meters, service payments, P2P payments for expense/bill sharing, gifts/group gifts, donations, healthcare, taxi cab payments, and many more.</div>
<div class="p2" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Android Platform has fortunately more than a few in-app payment options available, which each one of them addresses different use cases both in terms consumer billing (credit cards, bank accounts, carrier billing, offers, etc.) and what they can be used for (digital goods, game levels, physical goods, subscriptions, etc.). One can of course use their traditional payment processing gateways to directly collect the credit card information and process the payments in the traditional ways but again for developers with no prior experience dealing with payment gateways and internet merchant accounts, it's a heavy (and painful) process to deal with and more over require you to be PCI/DSS compliant. This is where the in-app payment providers for Android platform make things easy and simple for them to enable payments inside the apps.</div>
<div class="p2" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<span class="s3" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><a href="http://developer.android.com/guide/market/billing/billing_overview.html" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Google has it's own in-app payment</a></span> solution built into Android platform through the Android Market application. The Android Market app provides a in-app billing service that your application can interact with to collect payments from the end users. The interactions between your app and Android Market service happen through a set of IPC calls and asynchronous broadcast intents. When your app needs to collect payment for a purchase, it sends a billing request to the Android Market app over IPC call (sendBillingRequest()). The Android Market Application at this point returns a checkout Intent, which when started by your application, renders the Android Market Billing View over your application (see screenshot below) and let's the user to go through the payment/checkout process. Once the user successfully finishes the payment, a notification will be sent to your application via a broadcast intent that provides the references to the actual payment transaction, which can be used to retrieve further information about the payment. Unfortunately the Android Market in-app billing (payments) is only restricted to use for selling digital content and cannot be used for physical goods, personal services, or anything that requires a physical delivery.</div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<a href="http://3.bp.blogspot.com/-ldtJ5BClgco/UTn44ycjrhI/AAAAAAAAPUI/P1GKKGGIwss/s1600/6024_billing_checkout_flow.png" imageanchor="1" style="font-family: Times; font-size: medium; line-height: normal; margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="348" src="http://3.bp.blogspot.com/-ldtJ5BClgco/UTn44ycjrhI/AAAAAAAAPUI/P1GKKGGIwss/s640/6024_billing_checkout_flow.png" width="640" /></a></div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PayPal on the other end, provides an <a href="https://www.x.com/mobile" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;"><span class="s1" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">in-app payment solution</span></a> that can be used for pretty much all use cases including digital content (where ever it's appropriate – alternate app stores and mobile web apps). The PayPal in-app payment solutions consists of 2 offering – with one for native mobile apps through PayPal <a href="https://www.x.com/community/ppx/xspaces/mobile/mep" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;"><span class="s1" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Mobile Payment Libraries</span></a> and the other <a href="https://www.x.com/community/ppx/xspaces/mobile/mecl" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;"><span class="s1" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Mobile Express Checkout</span></a>for Mobile Web apps that run inside the browser (or embed a browser inside them). Both solutions are designed to be integrated in less than 10 mins inside your Android apps providing support from simple (one sender to one receiver) payments to split payments (one sender to one or more receiver in a chained or parallel model), and pre-approvals to support use cases like subscriptions and pay-as-you-use use cases.</span></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div class="p2" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">The Mobile Express Checkout provides UI based on HTML that's optimized for webkit browsers (Safari and Android Browser) and is based on the standard PayPal Express Checkout integration. So for some one who is already using PayPal Express Checkout Service to collect payments, mobile compatible UX is just automatically enabled when the users use your application in a mobile browser.</span></div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px; text-align: center;">
<a href="http://4.bp.blogspot.com/-66ZFgLDPcH0/UTn45AxETMI/AAAAAAAAPUM/_QfkL_dnBrg/s1600/6025_7AA45C9E-9917-419D-8422-72B63AB318CF.png" imageanchor="1" style="font-family: Times; font-size: medium; line-height: normal; margin-left: 1em; margin-right: 1em;"><img border="0" height="323" src="http://4.bp.blogspot.com/-66ZFgLDPcH0/UTn45AxETMI/AAAAAAAAPUM/_QfkL_dnBrg/s400/6025_7AA45C9E-9917-419D-8422-72B63AB318CF.png" width="400" /></a></div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">The Mobile Payment Library for Android provides a set of classes, Views and Activities to help you easy integrate the payment process inside your app. The interactions between your app and PayPal happen through the library, which behind the scenes send and receive requests/responses from PayPal servers to provide you a native java interface to interact with. When your application needs to collect payments for a purchase, it initializes the PayPal Mobile Payment Library (optionally generates a PayPal Button using the methods provided), creates the PayPalPayment object with all payment relevant information, calls the checkout() method to obtain the Checkout Intent, which when started by your application, renders the PayPal Checkout Views over your application (see screenshot below) and let's the user to go through the payment/checkout process right inside your app. Once the user successfully finishes the payment, the payment status can be obtained either through the standard onActivityResult() method or by attaching your own call back (called PayPalResultDelegate) to obtain the status of the payment behind the scenes.</span></div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px; text-align: center;">
<a href="http://4.bp.blogspot.com/-f6z8Uxf_Qgk/UTn45eRimmI/AAAAAAAAPUY/ExNnICvS7o8/s1600/6026_961C6B60-EC27-4AE4-B508-64FDDEAF71A8.png" imageanchor="1" style="font-family: Times; font-size: medium; line-height: normal; margin-left: 1em; margin-right: 1em;"><img border="0" height="218" src="http://4.bp.blogspot.com/-f6z8Uxf_Qgk/UTn45eRimmI/AAAAAAAAPUY/ExNnICvS7o8/s400/6026_961C6B60-EC27-4AE4-B508-64FDDEAF71A8.png" width="400" /></a></div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div class="p3" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">You can find more information including a step by step developer guide to both Mobile Payment Library and Mobile Express Checkout for Android on PayPal developer portal (<a href="https://www.x.com/mobile" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;"><span class="s1" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">https://www.x.com/mobile</span></a>). Also to encourage developers to innovate Mobile Payments and change the way people do commerce on Android devices (phones, tablets, etc.), we announced a <a href="https://www.x.com/devchallenge" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;"><span class="s1" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">developer contest </span></a>recently. As the Android devices are getting more and more powerful (thanks to the great innovations from companies like Samsung), we have great opportunities to enable and turn those futuristic ideas, that have always been in our minds, into a reality. After all who still wants to make those late night trips to the grocery store or even stand in long lines at the retail stores to pay and check out the products ?</span></div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com1tag:blogger.com,1999:blog-754260340057137512.post-90822431847720000302011-03-18T09:47:00.000-04:002013-03-08T09:48:08.128-05:00Delightful Experience ! (a challenge?)<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-3YhUbyfNLgk/UTn5v2wBq8I/AAAAAAAAPUk/EBbzNU-rPA4/s1600/4979_cat-butterfly-effect.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="409" src="http://3.bp.blogspot.com/-3YhUbyfNLgk/UTn5v2wBq8I/AAAAAAAAPUk/EBbzNU-rPA4/s640/4979_cat-butterfly-effect.jpg" width="640" /></a></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Two weeks back while brainstorming on a product one of our UE Designers made a comment that "the UX should be delightful". At first I did not understand - in the last 11 years of my software engineering career building web applications and services, we've always talked about "seamless experience" or "user-friendly experience" but never really called anything as "delightful experience". By the time I had a chance to chat with her about what she meant - we got kicked out of the conference room and I could never find her in the office to chat about it. But it stuck in my head since then. So I started doing some googling on this so called "delightful experience" and how it relates to applications.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
After a few tries I found this great blog post by <a href="http://www.cooper.com/journal/stefan_klocek/" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Stefan Klocek</a> from <a href="http://www.cooper.com/#about:introduction" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Cooper</a> (a design and strategy firm in San Francisco) titled "<a href="http://www.cooper.com/journal/2011/01/passive_magic_design_of_deligh.html" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Passive magic, design of delightful experience</a>". It really made me think how I assume some of the things to just work and feel so natural. Some of those things are just amazing - for example my 3 year old never asked me how to use the iPad out of the box. She needed help to understand how to use several of her toys but some are just natural. As Stefan said:</div>
<pre attr="plain" class="jive_text_macro jive_macro_code" name="code" style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px;"><div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">It is noteworthy when the design of an experience is so </span></div>
<div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">compelling </span><span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">that you feel wonder </span>and delight. When designed </div>
<div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
right it feels totally natural, some might even say it is </div>
<div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
truly "intuitive." No training is needed, no set-up, no </div>
<div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
break in flow, the tool fits seamlessly, improving without </div>
<div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
disrupting your experience; it's like a little bit of magic.</div>
</pre>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
And then when I started reading about the examples he gave, I started to think about several things from online identity to mobile apps. Why can't the online logins be as simple as carrying an smart key in your pocket and clicking the login button ? Why do we need to trype in email addresses/loginIds and passwords ? Yeah - Facebook Connect is great but why not go beyond that experience ? Last week while I was preparing for my lightening talk on "<a href="https://github.com/paypalx/tech-talks/blob/master/AndroidDevCamp-March2011/android_devcon_lightening_talk.pptx" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">in-app payments for the kitchen sink</a>" at the Android Developer Conference, I about what an amazing opportunity the new mobile platforms (iOS and Android) provide to create those magical and delightful experiences for a variety of use cases. For example think about how you would feel when you can walk into a grocery store, pick up an item from the shelf, put it in your cart, take your smart phone out, which asks you if you are in the grocery store (just based on your geo-location with you starting any app or service) and when you say yes, automatically shows you what you have in your cart and if you are ready to purchase, and when you say yes, automatically makes the payment behind the scenes so you can just walk out the store. No need to wait or stand in a line, and no need to talk or pay to a store agent. Wouldn't that be magical ? Now think about other aspects like automatically recognising the product you've picked up, shows the related things and where you can find them in the store! Wouldn't that be delightful ?</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-beyZGrYF5Ek/UTn5v7Fs_GI/AAAAAAAAPUo/PnVulrn5LZU/s1600/4978_delight-cat.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://3.bp.blogspot.com/-beyZGrYF5Ek/UTn5v7Fs_GI/AAAAAAAAPUo/PnVulrn5LZU/s400/4978_delight-cat.jpg" width="400" /></a></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Yes that's the kind of experiences that you can create using the amazing new technologies and platforms that are being provided by companies like Apple, Google, PayPal, Amazon, Twilio, and many more to the developers.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
I'm sure you all might have heard about our <a href="https://www.x.com/devchallenge" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">new developer challenge </a>for Android - this is a great opportunity to take this challenge and build a great app that provides a delightful experience to the end consumers. And oh what's better than getting rewarded for that !</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Good luck!</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-33048065882655902902010-11-01T09:48:00.000-04:002013-03-08T09:50:18.024-05:00Switching over to Embedded Payments<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
As you all know <a href="https://www.x.com/node/338" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;" title="Adaptive Payments">Adaptive Payments</a> now supports <a href="https://www.x.com/community/ppx/embeddedpaymentsexperience" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Embedded Payment experience</a> that allows your customers to finish the payment flow right on your web site or app. This not only improves the user experience but also improves conversion rates. This combined with the <a href="https://micropayments.paypal-labs.com/" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">PayPal Micropayments Transaction</a> pricing would enable you to process payments for both physical & digital goods, and services for amounts as less than as 50 Cents and over.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
This post will give you a quick intro to what you need to change to enable embedded payments in your site or app that is "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">already integrated"</strong> with Adaptive Payments.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Typical Adaptive Payments API integration requires the following integration points (I'm ignoring all the non technical aspects like obtaining API Credentials as nothing with respect to those changed):</div>
<ol style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; list-style-image: none; list-style-position: outside; margin: 0px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">On your Checkout or equivalent page where the user reviews the items that he/she is paying for, include a HTML form with Checkout or Pay with PayPal button or a link to your server side handler (a servlet/a php script/a form action handler/etc.)</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Your server side handler collects all the information about the payment the user need to authorize for along with the cancel & return Urls where the user must be redirected back, and makes an Adaptive Payments "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Pay</strong>" API Call. Adaptive Payments API Service registers the payment transaction information and returns a "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">payKey</strong>".</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Your server side handler issues a <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">redirect</strong> (eg. HTTP 301/302) to PayPal payment authorization url along with the payKey returned by the Adaptive Payments API Service.<ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 5pt 0px 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">The standard Adaptive Payments payment authorization url looks like this: <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><a class="jive-link-external-small" href="https://www.paypal.com/webscr?cmd=_ap-payment&paykey=" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">https://www.paypal.com/webscr?cmd=_ap-payment&paykey=</a><span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><value-returned-by-service></value-returned-by-service></span></strong></li>
</ul>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Browser follows the redirects to PayPal authorization url, where the user logs in and confirms the payment or cancels the payment.</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">PayPal redirects the user back to your <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">returnUrl</strong> or <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">cancelUrl</strong> based on the user's action.</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">On your returnUrl or cancelUrl, you would show Payment/Purchase confirmation or cancellation message as required by your application or web site.</li>
</ol>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Now this can be easily modified to enable embedded payment experience right on your site or application. Below are the quick steps that you would need to do in your existing application processing payments through Adaptive Payments as described above:</div>
<ol style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; list-style-image: none; list-style-position: outside; margin: 0px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">On your Checkout or equivalent page where the user reviews the items that he/she is paying for,<ol style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: upper-alpha outside none; margin: 5pt 0px 0px 40px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">include the PayPal Javascript (typically this is done in the HTML Head section):<ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 5pt 0px 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet_squareGrey.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><script href="https://www.paypalobjects.com/js/external/dg.js" jive-link-external-small="" src="</span><a class=" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">https://www.paypalobjects.com/js/external/dg.js</a><span style="background-image: none; background-attachment: scroll; background-color: transparent; border: 0px none; margin: 0px; outline: none 0px; padding: 0px; background-position: 0px 0px; background-repeat: repeat repeat;">" type="text/javascript"></script></span></strong></li>
</ul>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">in your HTML form with Checkout or Pay with PayPal button, add a hidden form field '<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">expType</strong>' as below:<ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 5pt 0px 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet_squareGrey.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;"><pre attr="xml" class="jive_text_macro jive_macro_code" name="code" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px;"><div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<form action="ap_api_caller.php" method="post">
<!-- all your other html form elements go here-->
<input id="pay_button" src="btn_checkout_paypal.png" type="image" />
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><input name="expType" type="hidden" value="light" /></strong></form>
</div>
</pre>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet_squareGrey.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">also note that the action "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">ap_api_caller.ph</strong>p" needs to be replaced with your server side handler (php script, servlet, and the likes) and the button image with id "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">pay_button</strong>" with your button id.</li>
</ul>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Immediately following the html form, insert the following Javascript code that initializes the PayPal javascript object that orchestrates the embedded payment experience and register your Checkout or Pay with PayPal button id as the payment trigger.<ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 5pt 0px 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet_squareGrey.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;"><pre attr="xml" class="jive_text_macro jive_macro_code" name="code" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px;"><div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<script charset="utf-8" type="text/javascript"><br> var embeddedPPFlow = new PAYPAL.apps.DGFlow({trigger: 'pay_button'});<br> function get_full_url(url_path)<br> {<br> var loc = window.location;<br> var url = '' + loc.protocol + '//' + loc.host + url_path;<br> return url;<br> }<br> function MyEmbeddedFlow(embeddedFlow) {<br> this.embeddedPPObj = embeddedFlow;<br> this.paymentSuccess = function () {<br> this.embeddedPPObj.closeFlow();<br> // handle payment success here<br> // - redirect to a success page (or)<br> // - show another div confirming the payment (or)<br> // - display a popup confirming the payment<br> // NOTE: the line below redirects to a success page<br> window.location.href = get_full_url('/success.html');<br> };<br> this.paymentCanceled = function () {<br> this.embeddedPPObj.closeFlow();<br> // handle payment cancellation here<br> // - redirect to a cancel page (or)<br> // - show another div messaging that payment was canceled (or)<br> // - display a popup to retry payment again<br> // NOTE: the line below redirects to a cancellation page<br> window.location.href = get_full_url('/canceled.html');<br> };<br> <br> }<br> var myEmbeddedPaymentFlow = new MyEmbeddedFlow(embeddedPPFlow);<br></script></div>
</pre>
</li>
</ul>
</li>
</ol>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">In your server side code that makes <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Pay API</strong> call to Adaptive Payments Service end point, instead of redirecting to the standard PayPal Payment Authorization Url ( <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><a class="jive-link-external-small" href="https://www.paypal.com/webscr?cmd=_ap-payment&paykey=" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">https://www.paypal.com/webscr?cmd=_ap-payment&paykey=</a><span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><value-returned-by-service></value-returned-by-service></span></strong><span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">), update the </span><span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">code to return a redirect to the new PayPal embedded payments authorization url as below: </span><ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 5pt 0px 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;"><pre attr="java" class="jive_text_macro jive_macro_code" name="code" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px;"><div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
$token = $response->payKey;
<span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">$payPalURL = '</span><a class="jive-link-external-small" href="https://www.paypal.com/webapps/adaptivepayment/flow/pay?expType='.$_POST" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">https://www.paypal.com/webapps/adaptivepayment/flow/pay?expType='.$_POST</a><span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">[expType].'&paykey='.$token;</span>
header("Location: ".$payPalURL);</div>
</pre>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">Please note that if you still want to support standard full browser redirect to PayPal Payment authorization page, you can still doing it by adding your own "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">if"</strong> logic around it to switch between standard vs embedded experience.</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">Note that the new Payment Authorization url that you would need to use is "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><a class="jive-link-external-small" href="https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&paykey=" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&paykey=</a><span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><value-returned-by-service></value-returned-by-service></span></strong>"</li>
</ul>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Update your cancel and return Urls to handle the cancellation and successful payments to close the popup window or iframe inserted by the PayPal Javascript object to handle the embedded payment experience.<ol style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: upper-alpha outside none; margin: 5pt 0px 0px 40px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">In your returnUrl (payment success) make the following changes to invoke the '<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">myEmbeddedPaymentFlow</strong>' object that you have created in your main check out page.<ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 5pt 0px 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet_squareGrey.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;"><pre attr="xml" class="jive_text_macro jive_macro_code" name="code" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px;"><div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<script charset="utf-8" type="text/javascript"><br> <br> function handleEmbeddedFlow() {<br> if (top && top.opener && top.opener.top) {<br> top.opener.top.myEmbeddedPaymentFlow.paymentSuccess();<br> window.close();<br> } else if (top.myEmbeddedPaymentFlow) {<br> top.myEmbeddedPaymentFlow.paymentSuccess();<br> } else {<br> alert('Please close the window and reload to continue');<br> }<br> }<br> <br></script></div>
</pre>
</li>
</ul>
<ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 5pt 0px 0px;"></ul>
</li>
</ol>
</li>
</ol>
<ul style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; list-style: none outside none; margin: 0px; outline: none 0px; padding: 0px;"><ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px; outline: none 0px; padding: 5pt 0px 0px 20px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet_squareGrey.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">And from your html call the "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">handleEmbeddedFlow()</strong>" method to close the embedded flow ui components:<ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px; outline: none 0px; padding: 5pt 0px 0px 20px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet_dash.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;"><pre attr="xml" class="jive_text_macro jive_macro_code" name="code" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px;"><div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
eg. <body onload="setTimeout(handleEmbeddedFlow,200);"></body></div>
</pre>
</li>
</ul>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet_squareGrey.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">You should of course add some message or a spinning wheel to indicate that you are processing the request before it (embedded flow window/iframe) goes away.</li>
</ul>
</ul>
<ol style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; list-style-image: none; list-style-position: outside; margin: 0px; outline: none 0px; padding: 0px;"><ol style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: upper-alpha outside none; margin: 5pt 0px 0px 40px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">similarly in your cancelUrl (payment canceled) make the following changes to invoke the "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">myEmbeddedPaymentFlow</strong>' object that you have created in your main check out page.<ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 5pt 0px 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet_squareGrey.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;"><pre attr="xml" class="jive_text_macro jive_macro_code" name="code" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px;"><div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
<script charset="utf-8" type="text/javascript"><br> <br> function handleEmbeddedFlow() {<br> if (top && top.opener && top.opener.top) {<br> top.opener.top.myEmbeddedPaymentFlow.paymentCanceled();<br> window.close();<br> } else if (top.myEmbeddedPaymentFlow) {<br> top.myEmbeddedPaymentFlow.paymentCanceled();<br> } else {<br> alert('Please close the window and reload to continue');<br> }<br> }<br> <br></script></div>
</pre>
</li>
</ul>
</li>
</ol>
</ol>
<ul style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; list-style: none outside none; margin: 0px; outline: none 0px; padding: 0px;"><ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px; outline: none 0px; padding: 5pt 0px 0px 20px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet_squareGrey.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">And from your html call the "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">handleEmbeddedFlow()</strong>" method to close the embedded flow ui components:<ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px; outline: none 0px; padding: 5pt 0px 0px 20px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet_dash.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;"><pre class="jive_text_macro jive_macro_code" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px;"><div style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
eg. <body onload="setTimeout(handleEmbeddedFlow,200);"></body></div>
</pre>
</li>
</ul>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet_squareGrey.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">You should of course add some message or a spinning wheel to indicate that you are processing the request before it (embedded flow window/iframe) goes away.</li>
</ul>
</ul>
<li style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">Well That's it!</li>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Once you make these changes, give it a try in our sandbox environment to make sure things are working in the way you want. Also please note that different browsers behave differently, so please make sure your changes are working on all major browser types that you want to support.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Leave a comment if you find any issues with the code or need any help with the code.</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-53812845212807385532010-10-28T09:53:00.000-04:002013-03-08T09:54:41.116-05:00Quick links to new APIs and products<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
Here are the links to the new APIs, Services and Products we announced at Innovate in the last 2 days:</div>
<ol style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style-image: none; list-style-position: outside; margin: 0px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">InContext/Embedded Payments: <a href="https://www.x.com/community/ppx/adaptive_payments" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">https://www.x.com/community/ppx/adaptive_payments</a><ul style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: none outside none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 5pt 0px 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">look for new Embedded Payments section in <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Chapter 1 Introducing Adaptive Payments</strong> and <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Chapter 15 Adaptive Payment Commands</strong> in the <a href="https://cms.paypal.com/cms_content/US/en_US/files/developer/PP_AdaptivePayments.pdf" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Adaptive Payments developer guide</a>.<span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"> The url where the javascript code is hosted is </span><a class="jive-link-external-small" href="https://www.paypalobjects.com/js/external/dg.js" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">https://www.paypalobjects.com/js/external/dg.js</a></li>
<li style="background-attachment: scroll; background-color: transparent; background-image: url(https://www.x.com/sites/all/themes/x/images/bullet.png); background-position: 0px 5px; background-repeat: no-repeat no-repeat; border: 0px none; list-style-type: none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">for digital goods all you need to do is set the PaymentType param as DIGITALGOODS and signup for<a href="https://micropayments.paypal-labs.com/" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">micropayments transaction pricing</a> - we will automatically apply micropayments pricing when your transaction amounts are less than $12.</li>
</ul>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">PayPal Apps - new OpenSocial standard based PayPal container on PayPal.com can be found here:<a class="active_link" href="https://www.x.com/community/ppx/paypalapps" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">https://www.x.com/community/ppx/paypalapps</a><ol style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: upper-alpha outside none; margin: 5pt 0px 0px 40px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">You can find the link to the <a href="https://www.x.com/servlet/JiveServlet/downloadBody/2724-102-10-3104/PayPalApp.pdf" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">PayPal Apps Developer Guide</a> on the right side.</li>
</ol>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Mobile Express Checkout and Mobile Payment Libraries (for iOS & Android platforms) with Adaptive Payments can be found here: <a href="https://www.x.com/mobile" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">https://www.x.com/mobile</a></li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Business Payments : <a href="https://www.x.com/community/ppx/businesspayments" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">https://www.x.com/community/ppx/businesspayments</a><ol style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: upper-alpha outside none; margin: 5pt 0px 0px 40px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Please note that technically the API behind the Business Payments is really Adaptive Payments - so please refer to<a href="https://www.x.com/community/ppx/adaptive_payments" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Adaptive Payments Developer Guide</a> for API technical reference.</li>
</ol>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">New simple, efficient and standards based Permissions API:<a href="https://www.x.com/community/ppx/permissions/permissionapi_beta" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">https://www.x.com/community/ppx/permissions/permissionapi_beta</a></li>
</ol>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
Alright did I miss any ? :-)</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
If you need information about anything else please feel free to leave a comment or send me a message. We will be posting detailed tutorials/blog posts on how to use each one of these new products and APIs later today and tomorrow. So keep an eye on X.com for latest updates.</div>
<div style="background-attachment: scroll; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; outline: none 0px; padding: 0px 0px 10px;">
Thank you all for attending and making Innovate 2010 a great success ! You all Rock !</div>
<br />
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-75244379001506509442010-08-19T09:57:00.000-04:002013-03-08T09:58:32.441-05:00Under the covers of Bling with PayPal<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: left;"> </span><a href="http://2.bp.blogspot.com/-ziWSxMDYCg8/UTn8GhSfIWI/AAAAAAAAPU4/0Rt8fZZJO_4/s1600/1535_icanhascheezburger-sampler.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://2.bp.blogspot.com/-ziWSxMDYCg8/UTn8GhSfIWI/AAAAAAAAPU4/0Rt8fZZJO_4/s640/1535_icanhascheezburger-sampler.jpg" width="478" /></a></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px; text-align: center;">
(photo credit: icanhascheezburger.com)</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Well it is not a <a href="http://techcrunch.com/2010/06/29/bling-nation-adds-a-paypal-option-to-cell-phone-payments/" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">news</a> anymore that Bling Nation added PayPal as a payment option to it's mobile payments. We (all PayPal employees) even had a <a href="https://www.thepaypalblog.com/2010/07/bringing-some-bling-to-the-paypal-campus%E2%80%A6-and-beyond/" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">chance</a> to not only try it out, but use it on a daily basis inside our own campus in San Jose. I must say it is a great feeling for all of us at PayPal that have worked (days and nights since last one year or so) on the APIs and Services that have made this cool, secure, and seamless mobile payments with PayPal possible.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
(Btw - whenever we notice a transaction taking even a second more to complete, we do call the Adaptive Payments team and ask them what's going on. <span class="jive_macro jive_emote" name="silly" src="/images/emoticons/silly.gif" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"></span>)</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Anyways, I just wanted to write about how how the Bling with PayPal was implemented, and the APIs & Services used to provide the seamless and secure integration between the two platforms. As some of you might recall the core functionality provided by the new <a href="https://www.x.com/community/ppx/adaptive_payments" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Adaptive Payments APIs</a> -</div>
<ul style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; list-style: none outside none; margin: 0px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">Split Payments (Parallel and Chained),</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">Pre-approvals,</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">Refunds,</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">Guest Payments,</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">Delayed Payments and,</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">Currency Conversion. </li>
</ul>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Obviously the <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Split Payments</strong> has been probably one of the famous feature of Adaptive Payments APIs that everyone liked or might have heard about. Obviously Split Payments is a great way to split payments between multiple receivers (merchants) and almost instantly solves a lot of problems that merchants, marketplace providers, and developers face with respect to settling the payments received between them. While that solves the problems in the online commerce, when it comes to the real physical world, where there are no computers or devices with user-agents (browsers) that a user can use to pay, products like Bling Nation help in connecting the offline world with the online world for the users to finish their transactions. Obviously in applications like this, it's just not a good user friendly experience if the user was asked to login to their PayPal account to confirm the payment every time a transaction is being made, mainly through mobile devices at physical stores. This is where the <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Pre-approvals</strong> help in providing a better user friendly and secure experience to the end user. The <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Pre-approval</strong> API provides a way for the application to obtain a billing agreement from the user - in more technical terms, it provides a way for the users to give permission to the application to make payments "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">on behalf</strong>" of them (also called '<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">delegated access</strong>').</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
In case of Bling, when the user signs up for the Bling account (by registering his phone with the Bling Tag), once the phone number has been confirmed, Bling makes a Preapprovel API call to PayPal Adaptive Payments Service by setting the start and end date for which it is valid for, max total amount of payments it can make on behalf of the user, etc. and obtains a 'Preapproval Key'. It redirects the user to PayPal with the same 'Preapproval Key' asking the user to authorize the permission. PayPal authenticates the user, and displays a preapproval consent page where the user can authorize the permission. Once the permission is obtained, PayPal redirects the user back to the Bling site, at which point, Bling makes a 'Preapproval Details" API call to confirm that the user has indeed given the required permission for them to execute payments on behalf of them. Once that's confirmed, the BlingTag is marked as registered and bound with the "Preapproval Key" authorized by the user. The "Preapproval Key" is stored securely in their database along with the user's BlingTag pin, and when ever the user initiates a payment using the BlingTag, the "Preapproval Key" is automatically used to transfer the money from user's PayPal account to the merchant's account. The user and the merchant both receive immediate notifications from both Bling (SMS) and PayPal (email and IPN). Also to add further security to the user's BlingTag, Bling automatically challenges the user to provide their secure pin when the transaction amounts are above certain thresholds.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Well that's how simple it is, and what's good about the PayPal's Open Payments Platform is that, any one can utilize the same functionality. Preapprovals are popular among social game developers, Pay as you use model apps (typically SaaS), and micro-payment sites where the transaction amounts are usually very low (some times even less than a dollar) and it would be a bad user experience to redirect the user to PayPal for every such transaction. Using Preapprovals, they can automatically charge the user behind the scenes while providing an uninterrupted experience to the end user in their application. The Preapprovals can also be used to make Split Payments (Parallel and Chained) on behalf of the user, if that fits well for your monetization model.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
You can find more detailed technical information about the Preapprovals and Split Payments in the <a href="https://www.x.com/community/ppx/adaptive_payments" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Adaptive Payments Developer Guide</a>. You can use one of the <a href="https://www.x.com/community/ppx/sdks" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">SDKs</a> that meets your needs to quickly integrate Adaptive Payments into your application. If you need some code sample, you can also refer to our <a href="https://www.x.com/community/ppx/code_samples" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">code sample</a> that show you how to use the APIs in various use case scenarios.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Hope that was helpful - if you want to try out the Bling Mobile Payments, please visit the <a href="http://www.blingnation.com/paypal/blingtag" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">BlingTag page</a> to get one for yourself for free. Once you link a BlingTag to your PayPal account, you can give it a try at one of the <a href="http://www.blingnation.com/paypal/where_to_bling" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">local stores</a> that is Bling enabled. And of course, if you want to accept BlingTag payments in your store, you can order your <a href="http://www.blingnation.com/paypal/accept_payments" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">BlingBox StartKit</a>, which btw seems like free during the preview. So what more to wait for - start <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Bling'ing your Payments</strong>.<span class="jive_macro jive_emote" name="cool" src="/images/emoticons/cool.gif" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"></span></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<a href="http://1.bp.blogspot.com/-VoO1TKTQg54/UTn8Genu7qI/AAAAAAAAPUw/tVK1uunpR1I/s1600/1536_bling-paypal.jpg" imageanchor="1" style="font-family: Times; font-size: medium; line-height: normal; margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="http://1.bp.blogspot.com/-VoO1TKTQg54/UTn8Genu7qI/AAAAAAAAPUw/tVK1uunpR1I/s1600/1536_bling-paypal.jpg" /></a></div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-73498480207721170512010-08-15T10:01:00.000-04:002013-03-08T10:02:37.848-05:00Online Payments for Developers - part 3<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<iframe src="http://www.slideshare.net/slideshow/embed_code/4975020?rel=0" width="597" height="486" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="http://www.slideshare.net/paypalx/online-payments-for-developers" title="Online Payments For Developers" target="_blank">Online Payments For Developers</a> </strong> from <strong><a href="http://www.slideshare.net/paypalx" target="_blank">PayPalX Developer Network</a></strong> </div>Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-46224777841669440622010-07-21T23:18:00.003-04:002010-07-21T23:29:10.016-04:00Open Web Payments !Today we presented our proposal for Open Web Payments and the corresponding Open Stack to implement it and support it in a much easier and extensible way. Obviously as you all know, there are a lot of Payments Providers - from credit card networks & NACHA to Online Wallet/Checkout providers, Social/Virtual/Game currency to frequent flyer/buyer points, mobile payments to offline payments. Unfortunately for a developer integrating with each one of those is a nightmare given the differences in data model, APIs and protocols. Our goals with Open Web Payments effort were to:<br /><br />1. Provide Consistency APIs across platforms<br />2. Provide a Single model for authorization, payments and transactions<br />3. Support both real and virtual currencies<br />4. Provide a Single, extensible document model<br /><br />Please review our presentation on slideshare below and please join the google group (<a href="http://groups.google.com/group/owp-api">http://groups.google.com/group/owp-api</a>) to help in discussing and evolving this proposal as a formal spec, and if possible help in building a few sample reference implementations.<br /><br /><div style="width:425px" id="__ss_4808674"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/ppalavilli/open-web-payments" title="Open web payments">Open web payments</a></strong><object id="__sse4808674" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=openwebpayments-100721171703-phpapp01&rel=0&stripped_title=open-web-payments" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4808674" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=openwebpayments-100721171703-phpapp01&rel=0&stripped_title=open-web-payments" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/ppalavilli">Praveen Alavilli</a>.</div></div>Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com1tag:blogger.com,1999:blog-754260340057137512.post-74115242997114475492010-06-27T10:03:00.000-04:002013-03-08T10:04:52.785-05:00I CAN HAS DELAYED CHAINED PAYMENTS!<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/--Di7rWw_K8Q/UTn-Bv1QslI/AAAAAAAAPVA/4cKU7JEKik8/s1600/1355_funny-pictures-kitten-hid-a-body.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="478" src="http://1.bp.blogspot.com/--Di7rWw_K8Q/UTn-Bv1QslI/AAAAAAAAPVA/4cKU7JEKik8/s640/1355_funny-pictures-kitten-hid-a-body.jpg" width="640" /></a></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">[Image original source: </span><a class="jive-link-external-small" href="http://icanhascheezburger.com/" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">http://icanhascheezburger.com/</a><span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">]</span></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Chained Payments</strong> is a popular way to implement referral/affiliate fee payouts as part of the original payment transaction itself. For example, when a user is referred to your site to purchase an item, you can use chained payment approach to not only let the user pay for the purchased item to the merchant/seller, but also enable referral payment to your affiliates as part of the same transaction (so you pay the transaction fee only once). But some times, you might want to delay the payments to the secondary receivers for a certain period of time - for example, until you are sure the original transaction is not going to be cancelled or reversed (refund).</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Another sample use case would be an online marketplace, where the Merchant is the Primary Receiver in the Chained Payment and the online marketplace platform provider could be a Secondary Receiver, receiving a small fee on every transaction that has been provisioned through the platform. In this case, the Merchant might not want to pay out the platform provider until after certain number of days with in which the item could be returned as per the merchant's return policy.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
To enable these kinds of use cases, <a href="https://www.x.com/community/ppx/adaptive_payments" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">Adaptive Payments</a> now introduces a new feature called "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Delayed Chain Payments</strong>". With Delayed Chain Payments, you can now request all secondary payments to be delayed up to <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">90 days</strong>. And any time with in those 90 days, you can call the <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">ExecutePayment</strong> API to either process the delayed payments to the secondary receivers. Currently PayPal does not auto process (let us know if you need this) the Payments after the 90 days, you as the API caller of the original Chained Payment request MUST call the ExecutePayment API to finish the delayed transactions. If you do not call the ExecutePayment API to process the delayed chain payments, the disbursements to the secondary receivers will never happen. So it is very important for you to schedule an ExecutePayment API call in your app before the original delayed payment expires.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Now getting on to the coding side, adding Delayed Chain Payments is pretty simple. This is the over all interaction flow for using Delayed Chaine Payments:</div>
<ol style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; list-style-image: none; list-style-position: outside; margin: 0px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Change the value of the parameter <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">actionType</em></strong> in your <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PayRequest</strong></em> to "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PAY_PRIMARY</strong>".</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Add the Primary and Secondary Receivers as you have been adding before to the <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PayRequest</em>.</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Send the <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PayRequest</em> to Adaptive Payments Service end point.</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Adaptive Payments returns the <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PayResponse</strong></em> with <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">paymentExecStatus</em> as "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">CREATED</strong>" and the <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PayKey</strong></em>.</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Redirect the user to PayPal Authorization Page Url along with the <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PayKey</em></li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">User logs in and authorizes the Payment and get's redirected back to your app.<ol style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; list-style: upper-alpha outside none; margin: 5pt 0px 0px 40px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">(Optional) Send a <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PaymentDetailsRequest</strong></em> with the <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PayKey</em></li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">(Optional) Adaptive Payments returns the Payment <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">status</strong></em> as <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">INCOMPLETE</strong> </em>- this is expected and confirms that your chain payment is still incomplete due to the pending secondary receiver payments.</li>
</ol>
</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">With in the next 90 days, send an <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">ExecutePaymentRequest</strong></em> along with the same <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PayKey</strong></em></li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">PayPal would process the original delayed Secondary Receiver payments.</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">Adaptive Payments returns the <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">ExecutePaymentResponse</strong></em> with <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">paymentExecStatus</strong> as "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">COMPLETED</strong>"</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">The <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PaymentDetailsRequest</strong></em> with the same <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PayKey</strong></em> would also return the Payment status as "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">COMPLETED</strong>"</li>
</ol>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
If you haven't had a chance to implement the <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">ExecutePaymentRequest</strong></em>, it's almost the same as the <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PaymentDetailsRequest</strong></em>with the exception of trackingId and transactionId parameters. And the <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">ExecutePaymentResponse</em></strong> is almost same as the<em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"><strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PayResponse</strong></em> with the exception of the <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PayKey</em>. So implementing the ExecutePayment API should be pretty straight forward for more of you - whether you are using our SDKs/Toolkits or writing your own code to make the API calls.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Well as with anything related to Chained Payments, a few things to note:</div>
<ul style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; list-style: none outside none; margin: 0px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">Disbursements to the Secondary Receivers must happen within the 90 days since the Original PayRequest was made.</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">If one of more Secondary Receiver payments fail in the <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">ExecutePaymentRequest</em>, the API Caller can safely retry with the same PayKey to process the delayed payments</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">If a full or partial refund is initiated on the original Primary Receiver payment, all the Secondary Receiver Payments will automatically be canceled.</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">If for any reason the payment (from sender) to the Primary Receiver is still in the pending state, all the payments to the Secondary Receivers will not be processed even if the <em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">ExecutePaymentRequest</em> is sent.</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt 15px;">No IPNs would be sent to the Secondary Receivers until the delayed payment has been processed by sending the<em style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">ExecutePaymentRequest </em>API.</li>
</ul>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
I really think this is an important feature that many of you can take advantage of in various use cases. Please let me know if you need any more information about this feature.</div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-76637541714918704712010-06-24T10:15:00.000-04:002013-03-08T10:15:57.149-05:00I CAN HAS GUEST PAYMENTS & NEW UI<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
YES - you <a href="http://en.wikipedia.org/wiki/I_Can_Has_Cheezburger%3F" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">can has</a> guest payments and along with it the new UI too.<span class="jive_macro jive_emote" name="silly" src="/images/emoticons/silly.gif" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"></span></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/---TjMurziqE/UTn_3nsVVhI/AAAAAAAAPVI/zLILBW8rk3M/s1600/scary_cat.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://2.bp.blogspot.com/---TjMurziqE/UTn_3nsVVhI/AAAAAAAAPVI/zLILBW8rk3M/s400/scary_cat.jpg" width="311" /></a></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px; text-align: center;">
<span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">[original source </span><a class="jive-link-external-small" href="http://icanhascheezburger.com/" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">http://icanhascheezburger.com/</a><span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">]</span></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
No - you don't have to get scared <span class="jive_macro jive_emote" name="cool" src="/images/emoticons/cool.gif" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;"></span>- it's all simple and easy, and even better, <strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">PCI Compliant</strong> too. Seriously ! Yes, we did launch the Guest Payments functionality in Adaptive Payments Service as <a href="https://www.x.com/people/BaldGeek/blog/2010/06/25/its-official-guest-payments-is-now-live" style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #0090c0; margin: 0px; outline: none 0px; padding: 0px; text-decoration: initial;">announced here</a>. Guest Payments are simply payments made by the end users directly with their Credit/Debit cards with out requiring to create a PayPal Account. What it means for your apps is, you no longer have to worry about users that do not have a PayPal Account. Even non-PayPal users can make the payments simply by entering their Credit/Debit card info on the authorization page.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Along with the Guest Payments there were some very important improvements made to the UI and user experience (UX) to make the Payment authorization process as simple and intuitive as possible. You will notice it as you see the screenshots below. In particular notice the transaction summary box on the left hand side, that makes the process more "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">contextual</strong>". On the right hand side, you will notice two options - "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Pay with my PayPal account</strong>" and "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Don't have a PayPal account?</strong>". Obviously, as you would expect "Pay with my PayPal account" option is for users that already have a PayPal account.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
The "Don't have a PayPal account?" option is for users that do not already have a PayPal account. These users have 2 choices:</div>
<ol style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; list-style-image: none; list-style-position: outside; margin: 0px; outline: none 0px; padding: 0px;">
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">just make the payment with their Credit/Debit card info, or</li>
<li style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px 0px 0px 20px; outline: none 0px; padding: 0px 0px 5pt;">make the payment with their Credit/Debit card info and optionally create a PayPal account.</li>
</ol>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
This as you can imagine, not only enables Guest Payments but also makes the PayPal account creation process <span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">simple</span> and<span style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">seamless</span>.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Usual Adaptive Payments Authorization Page</strong></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-tAujHxKPzsY/UTn__w4yVbI/AAAAAAAAPVQ/x0azovsmALo/s1600/1343_Pay+with+a+PayPal+account+-+PayPal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="473" src="http://4.bp.blogspot.com/-tAujHxKPzsY/UTn__w4yVbI/AAAAAAAAPVQ/x0azovsmALo/s640/1343_Pay+with+a+PayPal+account+-+PayPal.png" width="640" /></a></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Adaptive Payments Authorization Page with Guest Payment option</strong></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; margin: 0px; outline: none 0px; padding: 0px;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-F3CEZO5UBFw/UToAFp-VDkI/AAAAAAAAPVY/XpBU_Q7NJCU/s1600/1344_Pay+with+a+credit+or+debit+card-no-reg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://3.bp.blogspot.com/-F3CEZO5UBFw/UToAFp-VDkI/AAAAAAAAPVY/XpBU_Q7NJCU/s640/1344_Pay+with+a+credit+or+debit+card-no-reg.png" width="596" /></a></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Adaptive Payments Authorization Page with Guest Payment and optional PayPal Account Registration</strong></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; margin: 0px; outline: none 0px; padding: 0px;">
</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; margin: 0px; outline: none 0px; padding: 0px;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-JdfP2YQRyag/UToANf_ayXI/AAAAAAAAPVg/Ux3PZBYy5oM/s1600/1345_Pay+with+a+credit+or+debit+card-with-reg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://1.bp.blogspot.com/-JdfP2YQRyag/UToANf_ayXI/AAAAAAAAPVg/Ux3PZBYy5oM/s640/1345_Pay+with+a+credit+or+debit+card-with-reg.png" width="537" /></a></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Adaptive Payments Preapproval Authorization Page with new PayPal Account Registration option</strong></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
In case of Preapprovals, currently we don't support Guest Payments, but the user can still use the simple Account registration that is part of the same page as below.</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; margin: 0px; outline: none 0px; padding: 0px;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-SAnpxOcYyVg/UToAXk4wD3I/AAAAAAAAPVo/zujQJYRvS70/s1600/1346_Pay+with+a+credit+or+debit+card.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://3.bp.blogspot.com/-SAnpxOcYyVg/UToAXk4wD3I/AAAAAAAAPVo/zujQJYRvS70/s640/1346_Pay+with+a+credit+or+debit+card.png" width="546" /></a></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
[UPDATE - 7/19/2010]</div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
Hey guys, just wanted to post a slight update that has been done - the Title for the Guest Payments slider is now changed from "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Don't have a PayPal account</strong>" to "<strong style="background-attachment: scroll; background-color: transparent; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; margin: 0px; outline: none 0px; padding: 0px;">Pay with a Credit or Debit Card</strong>", which helps users understand how to use Guest Payments when they arrive on the PayPal Payment confirmation page.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-gf2zakQaVR0/UToAcnOSdiI/AAAAAAAAPVw/siLygdlxLos/s1600/1429_guest-payments-new.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="390" src="http://3.bp.blogspot.com/-gf2zakQaVR0/UToAcnOSdiI/AAAAAAAAPVw/siLygdlxLos/s640/1429_guest-payments-new.png" width="640" /></a></div>
<div style="background-attachment: scroll; background-color: white; background-image: none; background-position: 0px 0px; background-repeat: repeat repeat; border: 0px none; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px; outline: none 0px; padding: 0px 0px 10px;">
<br /></div>
</div>
Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-21230246111421722932010-03-11T13:46:00.001-05:002010-03-11T13:46:50.788-05:00Fueling the Wallet.Next<div style="width:425px" id="__ss_3393574"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/paypalx/fueling-the-walletnext" title="Fueling the Wallet.Next">Fueling the Wallet.Next</a></strong><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=twitter-fueling-wallet-next-100310232211-phpapp02&stripped_title=fueling-the-walletnext" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=twitter-fueling-wallet-next-100310232211-phpapp02&stripped_title=fueling-the-walletnext" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/paypalx">PayPalX Developer Network</a>.</div></div>Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-83832199900421622142010-03-05T01:19:00.001-05:002010-03-05T01:21:46.829-05:00In Search of your Wallet ?<div style="width: 425px;" id="__ss_3341008"><strong style="margin: 12px 0pt 4px; display: block;"><a href="http://www.slideshare.net/paypalx/in-search-of-wallet" title="In Search of Your Wallet ?">In Search of Your Wallet ?</a></strong><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ignite-search-of-wallet-v6-100304234618-phpapp02&stripped_title=in-search-of-wallet"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ignite-search-of-wallet-v6-100304234618-phpapp02&stripped_title=in-search-of-wallet" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding: 5px 0pt 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/paypalx">PayPalX Developer Network</a>.</div></div>Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com0tag:blogger.com,1999:blog-754260340057137512.post-20826700867922374612010-01-25T20:55:00.008-05:002010-01-25T21:14:24.085-05:00Online Payments for Developers - Part 2 - Clearing House Based Networks<!--StartFragment--> <p class="MsoNormal">(this is a continuation of my previous post on Online Payments for Developers - Part 1)<b> </b></p><p class="MsoNormal"><b style="mso-bidi-font-weight:normal">Clearing House Based Network (a.k.a ACH)<o:p></o:p></b></p> <p class="MsoNormal"><o:p>A Clearing House simply is a central collection place where banks and other financial institutions exchange checks or drafts and settle accounts. In other words, it’s a common ground for all banks and financial institutions to transact with each other. ACH (Automated Clearing House) is an electronic network for the Clearing House, which was introduced in late 1960s as a result of the first “Paper-less Cache” initiative lead by several banks and Govt. The Federal Govt. wanted to reduce the cost involved in printing and mailing the Social Security, Tax returns, and Payroll checks, and the fraud in stolen checks from peoples mail boxes. The banks wanted to reduce the manual effort required in handling the checks submitted by the people. And last but not least, people wanted quicker access to the funds in their accounts, which otherwise takes a long time for the checks to be processed by the banks manually. <span style="mso-spacerun: yes"> </span>Over time several other big corporations started using ACH for direct Payroll processing, and several insurance and utility companies started using ACH for direct debits for their service payments.</o:p></p> <p class="MsoNormal"><o:p> </o:p></p><p class="MsoNormal"><o:p>The ACH is usually called 4 Participants Model, as there are 4 participants in addition to the Clearing House itself. </o:p></p><p class="MsoNormal"><br /></p><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Ea5XOGJFPEY/S15MH2OMcMI/AAAAAAAAMyw/lJ2KkAIX5gQ/s1600-h/Slide4.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_Ea5XOGJFPEY/S15MH2OMcMI/AAAAAAAAMyw/lJ2KkAIX5gQ/s400/Slide4.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5430861898353242306" /></a><br /><p class="MsoNormal"><!--StartFragment--> </p><p class="MsoListParagraphCxSpFirst" style="text-indent:-.25in;mso-list:l0 level1 lfo1"></p><ol><li><b>The Originator</b> – that initiates the payments transactions into the ACH (company that’s processing payroll funds, or the utility/insurance company collecting payments or more recently online and telemarketing companies to debit consumer accounts for purchase of goods and services).</li><li><b>ODFI</b> (Originator Depositor Financial Institution) – a national/state charter bank, financial institution or a credit union or an insurance company that consolidates many transactions from many Originators and submits them to the Clearing House for processing. The ODFI makes sure the transactions are valid and confirm to the ACH standards.</li><li><b>RDFI</b> (Received Depositor Financial Institution) – a national/start charter bank, a credit union or a loan and savings institution that participates in ACH. The RDFI holds the receivers deposit account and is responsible for accurately processing the transactions by debiting/credits the right accounts and for timely returning information to the ODFI for any transactions that cannot be processed.</li><li><b>The Receiver</b> – that receives the transaction. The transaction can be a credit or a debit request, which means money, may be added or subtracted from the receivers account. The Receiver holds a depository bank account with the RDFI. The receivers can be consumers or businesses or some other form of a corporate entity.</li></ol><p></p> <p class="MsoNormal"><o:p> </o:p></p><p class="MsoNormal"><o:p>Connecting the ODFIs and RDFIs is the Clearing House that processes all the transactions submitted by the ODFIs and delivers them to the RDFIs. As you can imagine the Clearing House processes gigantic volumes of transactions between the ODFIs and RDFIs. There are 2 Clearing Houses in US – the first one is a public Clearing House operated by Federal Reserve bank, where as the second one is a private Clearing House operated by a consortium of financial institutes and is called Electronic Payments Network.</o:p></p> <p class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal">Most financial institutions connect directly to the ACH with an exception of a few smaller institutes that connect indirectly to the ACH through another larger financial institution.<span style="mso-spacerun: yes"> </span>Both Clearing Houses operate on the same set of rules defined by the National Automated Clearing House Association (NACHA). NACHA is a non-profit association of member banks, and participants that oversee the ACH network. There are obviously several other regulations that control how the ACH must operate, which you don’t really need to know or worry about unless you are building a system for a financial institution that wants to participate in ACH. <span style="font-family:Wingdings;mso-ascii-font-family:Cambria;mso-ascii-theme-font: minor-latin;mso-hansi-font-family:Cambria;mso-hansi-theme-font:minor-latin; mso-char-type:symbol;mso-symbol-font-family:Wingdings;"><span style="mso-char-type: symbol;mso-symbol-font-family:Wingdings;">J</span></span></p> <p class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal">Also as you can guess, most of the financial institutions act as both ODFIs and RDFIs (with varying volumes based on the businesses they cater to – for example a bank processing Payroll sends more transactions as an ODFI than a consumer bank providing checking/saving accounts to end consumers that handles more transactions as an RDFI), although for a given transaction they can only act as one or the other (all the transactions across different accounts with-in the same financial institution are handled by the financial institutions itself and not sent through the Clearing House). </p> <p class="MsoNormal"> </p> <p class="MsoNormal">I know you must be as confused as me when I first read about it <span style="font-family:Wingdings;mso-ascii-font-family:Cambria; mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Cambria;mso-hansi-theme-font: minor-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"><span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;">J</span></span> - it helps to understand how this 4 Participants Model work by looking at a sample use case scenario. Let’s walk through a scenario where an employee signs up for direct deposit of paycheck into his personal bank account.</p><p class="MsoNormal"><br /></p> <!--EndFragment--><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Ea5XOGJFPEY/S15MdhLoWXI/AAAAAAAAMy4/0NkDfuQQGYo/s1600-h/Slide1.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_Ea5XOGJFPEY/S15MdhLoWXI/AAAAAAAAMy4/0NkDfuQQGYo/s400/Slide1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5430862270662465906" /></a><br /><!--StartFragment--> <p class="MsoNormal">As indicated in the diagram above, an ACH transaction starts when a receiver <span style="mso-spacerun: yes"> </span>(employee in example) authorizes the originator to credit/debit money into their accounts (say Bank of America checking account) for any goods or services they have received, by providing his bank’s routing and account information to the Originator (the employer on our example) for direct deposit of paycheck into his account. Once or several times of a day (depending on the business – in case of payroll it would be biweekly or once a month), the Originator (Employer) sends all of it’s transactions (Paycheck information) in a file to it’s ODFI (say Wells Fargo Bank).<span style="mso-spacerun: yes"> </span>Once the ODFI processes the files, it debits the money from the Originator’s account for the net value of all the transactions listed in the file. </p> <p class="MsoNormal"><br /></p><p class="MsoNormal">Similar to the Originator, once a day the ODFI (Wells Fargo Bank in our example) consolidates all the files coming from all of it’s Originators into a single file (format defined by NACHA) and sends it to the Clearing House.<span style="mso-spacerun: yes"> </span>The Clearing House processes the ODFI files, sorts the transactions by ABA-RTN numbers and calculates the net position for each financial institution including the transaction fee that the Clearing House charges the ODFI and RDFI for processing the transactions. The Clearing House groups the transactions based on the bank routing numbers, and then send the files to the corresponding RDFIs (in our example Bank of America will receive one).<span style="mso-spacerun: yes"> </span></p> <p class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal">It must be noted that even though these files contain millions of transactions, the net value for each RDFI might still be zero, or negative in some cases, since almost all the banks and financial institutions act as both ODFI and RDFI for it’s customers sending and receiving money on behalf of them.</p> <p class="MsoNormal"><br /></p> <p class="MsoNormal">Each day after it processes these files, the Clearing House also tells the ODFI and RDFI Financial Institutes whether they (in our example, Wells Fargo Bank and Bank of America) owes money to the Clearing House or the Clearing House owes the money to the financial institution. All the Settlements between the Financial Institutions are done using the accounts that each one of them holds with the Federal Reserve Bank (in case of public Clearing House) or the corresponding Bank of the Bankers (in case of a private Clearing House).<span style="mso-spacerun: yes"> </span>Let’s say in our example, the Wells Fargo owes $3M to the Clearing House to provide Salaries to all the employees, out of which say $1M goes to the Bank Of America for all the employees that use accounts in Bank of America and the rest goes to other banks that the employees hold accounts at.</p> <p class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal">As indicated in the diagram above, the Originator pays the ODFI a negotiated transaction fee varying based on it’s transaction volumes, and it’s negotiating power and relationship with ODFI. There are additional fee for the files that are processed, transaction reports generated, and the process to bank account, etc. The ODFI and RDFI also pay a processing fee to the Clearing House. There are additional fees associated with services (fraud detection, etc.) provided by the Clearing House operator (NACHA).<span style="mso-spacerun: yes"> </span>Similar to the ODFI, the RDFI charges it’s consumers a transaction fee based on the type of account (personal or business).</p><p class="MsoNormal">Alright that's it for the Clearing House Based Networks - next up is Card Based Networks, which I am sure is more interesting than the Clearing House Based Networks. :-)</p> <!--EndFragment--> <p></p> <!--EndFragment-->Praveenhttp://www.blogger.com/profile/10778095038892167017noreply@blogger.com3