payment - facebook pay dialog not showing local currency dialog -
payment - facebook pay dialog not showing local currency dialog -
facebook pay dialog shows credits only, when click on purchase credits rather should goto next dialog should inquire me payment options says purchase successful. not sure i'm doing tried it's not working.
here javascript function
function buy_tokens(p){ fb.init({appid: "myappid", status: true, cookie: true}); var obj = { method: 'pay', action: 'buy_item', order_info: {'item_id': 'tokens', 'price':p}, dev_purchase_params: {'oscif': true} }; //fb.ui(obj, js_callback); fb.ui(obj, function(paydata) { // response }); }
here callback.php
<?php $facebook = new facebook(array( 'appid' => app_id, 'secret' => secret, 'cookie' => true, )); $api_key = 'appid'; $secret = 'app secret'; // prepare homecoming info array $data = array('content' => array()); //parse signed info $request = parse_signed_request($_request['signed_request'], $secret); if ($request == null) { // handle unauthenticated request here } $payload = $request['credits']; // retrieve params passed in $func = $_request['method']; $order_id = $payload['order_id']; function parse_signed_request($signed_request, $secret) { list($encoded_sig, $payload) = explode('.', $signed_request, 2); // decode info $sig = base64_url_decode($encoded_sig); $data = json_decode(base64_url_decode($payload), true); if (strtoupper($data['algorithm']) !== 'hmac-sha256') { error_log('unknown algorithm. expected hmac-sha256'); homecoming null; } // check sig $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); if ($sig !== $expected_sig) { error_log('bad signed json signature!'); homecoming null; } homecoming $data; } function base64_url_decode($input) { homecoming base64_decode(strtr($input, '-_', '+/')); } if ($func == 'payments_status_update') { $status = $payload['status']; // write logic here, determine state wanna move if ($status == 'placed') { $next_state = 'settled'; $data['content']['status'] = $next_state; } // compose returning info array_change_key_case $data['content']['order_id'] = $order_id; } else if ($func == 'payments_get_items') { // remove escape characters $order_info = stripcslashes($payload['order_info']); $item_info = json_decode($order_info, true); //per credits api documentation, //you should pass in item reference // , query internal db proper //information. set item //information here returned facebook //then shown user confirmation. if($item_info['price']=='0.69'){ $tokens = 150000; }elseif($item_info['price']=='1.49'){ $tokens = 350000; }elseif($item_info['price']=='2.49'){ $tokens = 600000; }elseif($item_info['price']=='3.99'){ $tokens = 1000000; } $fb = $facebook->api('/me/?fields=currency'); $credit = round($item_info['price']*$fb[currency] ['currency_exchange_inverse']*$fb[currency]['currency_offset']*$fb[currency] ['currency_exchange']); // $symbol = array('gbp'=>'£','eur'=>'€','usd'=>'$'); if ($item_info['item_id'] != "") { $item['title'] = $tokens.' tokens '; $item['price'] = $credit; $item['description']= 'you '.$tokens.' tokens'; $item['image_url']='url'; $item['product_url']='url'; } //for url fields, if not prefixed http:, //prefix them $url_key = array('product_url', 'image_url'); foreach ($url_key $key) { if (substr($item[$key], 0, 7) != 'http://') { $item[$key] = 'http://'.$item[$key]; } } $data['content'] = array($item); } // required api_fetch_response() $data['method'] = $func; echo json_encode($data); ?>
the dev_purchase_params: {'oscif': true} parameter work if not using test business relationship purchase. seek facebook business relationship not listed payments tester in app's settings.
facebook payment
Comments
Post a Comment