Facebook Payments Overview
Facebook's Payments system allows the developer complete flexibility to price goods in any region specific local currency, at arbitrary price-points. This new system simplifies the purchase experience for users, improves the performance of the payment flow, and makes it easier for developers to price virtual goods for a global audience.
This document details the key product features of the Facebook Payments system, including developer features, user experience and common usage scenarios.
- For a technical outline of the product, see Facebook Payments - Implementation Guide.
- Also available is a series of seven videos, which couple the guide linked above. Please see thisplaylist of the videos.
- Alternatively, for a tutorial which walks through the integration of Facebook Payments into an existing game see Canvas Games Tutorial - Payments.
Payment Features
There are two common product offerings that developers make available within their app store, both of which are supported by the payments system:
![]() | Virtual Currency
The recommended model is for developers to sell their own in-app virtual currency, such as 'coins', through our payments system. This currency can then be used within the game in exchange for virtual goods. When selling an in-app currency, you provide Facebook with a
quantity parameter, dictating the amount of currency you are selling to the user at a given time. Facebook will then render the payment dialog, showing that amount, before your currency's name. |
![]() | In-app Items
Alternatively, you may choose to sell individual, discrete products in your game at a set price. A simple example of this approach might be offering a 'starter pack', which contains a number of goods at a discounted price. By omitting a
quantity parameter during the payment flow, Facebook assumes you are selling a single unit of your item. |
The Facebook Payments system has no concept of a stored balance. This means users will directly, atomically, purchase items or virtual currencies at set price-points, with no ability to 'over pay' and store remaining funds with Facebook. Each transaction within your app will directly bill the user. The only exception to this is Facebook gift cards, which will provide users with a store of funds from which they can make purchases.
Static and Dynamic Pricing
In addition to the two types of product you can specify, payment products can be priced in two different ways.
![]() | Static Pricing
The simplest method for pricing a product is Static Pricing. You specify a fixed price for the item in any number of local currencies. Specifying the price up-front allows Facebook to cache the pricing data, enabling the ability to instantly display the Pay Dialog, with no delay to the user.
The ability to provide a price for the item in multiple currencies means you have complete flexibility to target each region with different pricing strategies, and specify appropriately rounded prices that users are familiar seeing. If you do not define a price point for a particular local currency, users of that currency will have their price automatically calculated based upon the current exchange rate between the first currency you specify and that target currency.
This architecture provides the flexibility to price goods appropriate to each region in which you're selling, but gives the assurance that if you do not provide specific pricing detail for a given region, Facebook will generate and charge an appropriate price for you.
|
![]() | Dynamic Pricing
While Static Pricing is straightforward to implement and provides users with a fast, efficient payment experience, it can sometimes be valuable to gain additional pricing flexibility by dynamically controlling the price of an item at the time of purchase. A common example of the utility of this feature is when implementing a flash sale, where you temporarily reduce the cost of items within your app by a small percentage, or when A/B testing different price-points to optimize conversion. Alternatively, it can be valuable to price goods specifically to individual users, allowing you to implement loyalty discounts.
As with Static Pricing, Facebook will cache the product information provided (title, image etc) to improve the performance of the checkout experience for the user. Additionally however, Facebook will contact your server for pricing information at the point of purchase. Using dynamic pricing introduces a blocking call that must be made to your server during the purchase flow, which slows down the display of the initial pay dialog for users. Whenever possible, it is recommended that you use static pricing. Dynamic pricing should only be used in scenarios where the additional pricing flexibility is required.
|
Fulfillment
Facebook has streamlined the order fulfillment process to avoid all blocking requests required before the pay dialog is closed and a purchase completed. This makes the user experience of purchasing a virtual item more responsive, leading to higher conversion rates.
There are two primary methods through which you are notified of the outcome of the purchase, and a further method by which you can verify any payment information.
Firstly, Facebook will return details of the order via a JavaScript callback. The data sent to this callback includes:
payment_id
, which uniquely identifies the transaction.quantity
, which indicates the amount of the item which was sold.request_id
, optionally, the developer can provide their own unique identification for the transaction when calling the Facebook SDK for Javascript to render the payment dialog. This value is then returned upon purchase completion.status
, which indicates the current state of the transaction, i.e. 'pending', 'completed', 'failed' etc.
Secondly, Facebook will issue a realtime update notifying the developer that a new order has completed. The developer can subscribe to the
payment_object
callback to track order completions, using the payment_id
as the unique identity parameter for each transaction.
Thirdly, at any time, the
payment_id
can be used to verify details of a transaction via the Graph API. Details such as the associated user_id
, updated_time
and amount
can be queried, using thepayment_id
. The Graph API will also allow you to access further details including any refunds or disputes associated with the transaction.
If for some reason both the JavaScript callback and the realtime update fail and you do not receive the
payment_id
, we also allow you to query the Graph API using the optional request_id
parameter, which can be specified by the developer when invoking the Facebook payment dialog.
More details around fulfillment can be found in this section.
User Experience
Buying Currency and Items
Users only pay for the item being purchased and will not have a stored balance after the transaction. The Pay Dialog reflects this by showing the amount billable to the user with each transaction. The only exceptions to this rule, where an existing balance might have cause to be displayed, are a one-time credits migration, or gift cards.
In this first example, the user is purchasing an in-app currency, 'Friend Smash Coins'. A
quantity
of 100 has been provided, which is reflected in the dialog.![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.2178/851559_456776794406054_843607819_n.png)
Alternatively, when selling an individual item or bundled package, the quantity you wish to sell will typically always be 1. Therefore, if you either specify a
quantity
of 1, or omit the quantity
parameter altogether, Facebook will not display a quantity figure when rendering the dialog leaving only the product title. This is illustrated in the 'Friend Smash Bomb' example below.![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.2178-6/851580_460789464014393_430720668_n.png)
Pricing Items in Specific Currencies
Items may be priced specifically in different currencies, enabling full flexibility with pricing strategies across multiple regions. The example below is another item, the 'Friend Smash Starter Pack', priced specifically for a British audience.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.2178/851586_339264679532962_562608143_n.png)
Below the same item is offered, this time aimed at American users, paying in US Dollars.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.2178/851561_471631842918735_607436427_n.png)
Although these values are not equal in each currency, the ability to price the item specifically for each region allows you to provide a price point users are familiar seeing (with no strange rounding), and to target different countries with different monetization strategies.
Dynamic Pricing for Different Situations
Items can be priced dynamically, allowing for more control over pricing in real time. Some examples are frequent price changes, A/B testing, sales or loyalty bonuses. In the example below, still for a 'Friend Smash Starter Pack', a user is being charged in Euros.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.2178/851586_194822284002294_502992854_n.png)
The user below has attempted to purchase the same item, but under sale conditions. The price can be fetched from the developer at the time of purchase, and the sale can be rendered in the dialog.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.2178/851580_142116302640640_1684941431_n.png)
Paying with Different Methods
Facebook payments will will always display prices in the user's preferred currency, customising the experience for international users.
Credit Card
If a user chooses to purchase with a credit card, and they have previously purchased on Facebook with a credit card, they are given the option to continue with their previous credit card details, or register a new card.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.2178/851576_511302418925468_1615121753_n.png)
For the case where the user wishes to purchase with a credit card, but does not have one on file with Facebook, they will see a dialog prompting them to enter new credit card details.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.2178/851577_596374427047218_1344791462_n.png)
Once they continue with this flow, Facebook will open a new secure window for the user to enter their credit card credentials similar to the one below.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.2178/851581_681792578514196_239494635_n.png)
PayPal
If a user chooses to pay through a Paypal account, and already have their PayPal details on file with Facebook, they will see their email below the PayPal option.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.2178/851583_139352669589319_753805787_n.png)
Once they click okay, their email address will be automatically entered into the Paypal login window as seen below.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.2178/851561_465706623509966_328708005_n.png)
If the user elects to use their Paypal account, but does not have one associated with Facebook already, they will first select the Paypal option as seen below.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.2178/851578_529414593761794_1544920730_n.png)
Then they will see a new window, prompting them to create a new Paypal account. Finally, they will be returned to complete the purchase.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.2178/851580_158225981025302_419695601_n.jpg)
Mobile
In most regions, users can additionally choose to pay via their mobile carrier, where the charge will appear as part of their monthly carrier bill, either via a direct charge or via SMS.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.2178/851556_159554247550142_324628566_n.png)
If the user has not previously entered mobile details with Facebook, they will be prompted to enter that information before the transaction can continue.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.2178/851565_173169336175346_1754075355_n.png)
In order to confirm the mobile is valid, a code will be sent via SMS to the number the user provides. The user is required to respond to the SMS to complete the registration process.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.2178/851563_354836121283055_1590886724_n.png)
While our payment partners finish the transaction, the user will see a progress dialog similar to the following before the dialog closes upon completion.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.2178/851576_188220004663191_1181657514_n.png)
The dialog will close once Facebook has successfully charged the user's Mobile Phone.
Alternate Payment Methods
We also support alternate payment methods such as Western Union and MoneyGram which vary from country to country. You can find more information on what alternate payment methods are supported in each country here.
Mobile Price points and Price Jumping
Certain payment methods, including mobile carrier billing and some alternative pay methods have limitations on the price points available for a user. As a result, sometimes the price the user wishes to pay may not be available. Since the payments system has no concept of a stored balance, Facebook will instead round up the price to the closest price point available that still covers the cost of the item. Such scenarios will result in an additional 'fee' field that reflects the difference between the price of the item and the mobile price point at which the user must be charged.
We use the term "price jumping" to explain this scenario when Facebook is forced to apply this fee to users because the price point they wish to pay is not supported by the selected payment instrument.Read more about price jumping, and how to optimize the cost of items within your app to maximize user value.
![](https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.2178/851556_159554247550142_324628566_n.png)
In the example above, the item was priced at £10.00 GBP, but that price point was not available to the user looking to make the purchase through their mobile. The closest price point available above the £10.00 GBP cost of the item is at £12.00 GBP, thus, the user sees a 'fee' of £2.00, to cover the difference.
Optimizing Quantity
If the user wishes to purchase a quantity (greater than 1) of an item or currency in your app, then we allow you to specify whether Facebook should attempt to optimize the quantity of the item or currency that the user receives, to yield the maximum value for a given fixed payment price point.
To best illustrate this in action, take the following example:
- We define a virtual currency, the 'Friend Smash Coin' to be worth $0.05 USD each.
- The user is prompted to purchase 151 of them, coming to a total cost of $7.55 USD.
- There is no price point available to the user at $7.55 USD. The closest price points are $7.50 USD ($0.05 below the target price), and $10.00 USD ($2.45 above the target price).
- If a minimum and maximum quantity are not specified, Facebook is forced to round the price upward to the nearest price point that covers the cost of the item. Therefore the user will be charged $10.00 USD, including a fee of $2.45.
- However, if a minimum quantity is specified, say at 100, you are giving Facebook permission to round to the lower price point and alter the
quantity
to match. In this instance Facebook will reduce the quantity to the price point at $7.50 USD. The user will be offered to purchase 150 'Friend Smash Coins' at a flat $7.50 USD, with no fee applied.
It's important to note, this is only possible if you inform Facebook you are flexible with the quantity of the virtual item sold. This often is perfectly acceptable for a virtual currency, but not for a virtual item (where you only wish to sell a single unit). We therefore recommend that developers price their virtual items in their virtual currency rather than directly in a local currency, as much as possible.
Mobile Store and Shortcut
The recommended way to handle price jumping is to create a mobile store where items and currency bundles are priced at the mobile price-points available for the user in that country. We provide an API for you to easily query the price-points for the user, as well as shortcut the user directly into the mobile flow. Using these APIs you can create a great mobile paying experience for users where they never have to experience price jumping or unnecessary fees. See the documentation on Mobile Price Points and Shortcutting for more information.
Getting Started
Developers can start integrating with Facebook Payments right away.
- For a technical walkthrough of the product, see Facebook Payments - Implementation Guide.
- Also available is a series of seven videos, which couple the guide linked above. Please see thisplaylist of the videos.
- Alternatively, a tutorial which walks through the integration of Facebook Payments into an existing game is available, see Canvas Games Tutorial - Payments.
- To submit a question or provide feedback to the Facebook Developer Support Team, please click here.
No comments:
Post a Comment