Developers Manual > SDK Integration > Facebook > Facebook API References in JavaScript > Facebook-canvaspay

.canvas.pay(info, callback)

Prompt the user to make a payment using Facebook Payments. This wraps the JS SDK function FB.ui({method: "pay", action: "purchaseitem", ...), which you can find more details at Pay Dialog.

Parameters

1
plugin.FacebookAgent.prototype.canvas.pay = function(info, callback){}
Name Type Required Description
info object Yes The object to contain the details of the payment.
callback Function No Callback function containing a result code and a JSON response.

Properties of info object:

Name Type Required Description
product URL Yes The URL of your og:product object that the user is looking to purchase. For a full description on how to construct this product object, please see the How-to: Local Currency Payments - Defining Products guide, and the Product Object reference material.
quantity int No The amount of this item the user is looking to purchase - typically used when implementing a virtual currency purchase.
quantity_min int No The minimum quantity of the item the user is able to purchase. This parameter is important when handling price jumping to maximize the efficiency of the transaction.
quantity_max int No The maximum quantity of the item the user is able to purchase. This parameter is important when handling price jumping to maximize the efficiency of the transaction.
request_id String No The developer defined unique identifier for this transaction, which becomes attached to the payment within the Graph API. Learn more.
pricepoint_id String No Used to shortcut a mobile payer directly to the mobile purchase flow at a given price point. Full details can be found in the Optimizing for Mobile Payments doc.
test_currency String No This parameter can be used during debugging and testing your implementation to force the dialog to use a specific currency rather than the current user's preferred currency. This allows you to rapidly prototype your payment experience for different currencies without having to repeatedly change your personal currency preference settings. This parameter is only available for admins, developers and testers associated with the app, in order to minimize the security risk of a malicious JavaScript injection. Provide the 3 letter currency code of the intended forced currency. The list of supported currency codes is available here.

Callback function

1
var callback = function (code, response) {}

On success, code is plugin.FacebookAgent.CODE_SUCCEED and response is a JSON containing the payment information as the example below,

1
2
3
4
5
6
{
  "payment_id": 848929916459082,
  "quantity": "2",
  "status": "completed", 
  "signed_request": "7QYHzKqKByA7fjiqJUh2bxFvEdqdvn0n_y1zYiyN6tg.eyJhbGCJxdWFudGl0eSI6IjEiLCJzdGF0dXMiOiJjb21wbGV0ZWQifQ"
}

If the payment failed, code is error code and response is a JSON containing error message as the example below,

1
2
3
{
    "error_message": "Unknown error"
}

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var info = {
    product: 'https://www.cocos2d-x.org/demo/facebooktest/pay/item1.html'
};

var facebook = plugin.FacebookAgent.getInstance();
facebook.canvas.pay(info, function(code, response){
    if (code == plugin.FacebookAgent.CODE_SUCCEED){
        if (response['status'] === 'completed')
            cc.log("Payment succeeded: " + response['amount'] + response['currency']);
        else 
            cc.log("Payment failed: " + response['status'])
    } else {
        cc.log("Request send failed, error #" + code + ": " + response);
    }
});

Sign up for our newsletter to keep up with the latest developments, releases and updates for Cocos2d-x.