Jump to content

Surya Kanta Mekap

  • Content Count

  • Joined

  • Last visited

Community Reputation

0 Neutral

About Surya Kanta Mekap

  • Rank

Profile Information

  • Gender

Contact Methods

  • Skype
  1. 1) To create an iOS friendly layout for FMGo, the best practice is to minimize the amount of horizontal and vertical scrolling required to interact on your layout. To achieve the same, we should make a single layout for iPhone having size 320W X 255H and for iPad having size 768W X 673H (instead of making two layouts one for landscape and one for portrait) along with proper anchor locks which will stretch it properly to fit for both the landscape and portrait mode view. 2) We also need to take care of the proper anchor locks for the objects(fields,graphic, webviewer etc) placed on the layout so that the objects showing correctly in one view would not overlap with each other on the other view. The other benefit of this size layout is that we will not have to scroll in either direction to view all of the objects. 3) Sometimes, we need to make the layout big enough to hold all the objects, in this case we have to design the layout smartly we can make use of the side a block method to make the layout work both horizontally and vertically. We can even make use of tabs to place tab related objects on it thus limiting the layout to above size.Please have a look on to the below link to get a better idea of the side a block method: http://www.infografix.biz/?p=188 4) Locking the zoom level is helpful on a list view to prevent horizontal scrolling and can be done by using “Set Zoom Level[Lock;100%]” step in the navigating script of the layout for that file. However a possible best practice would be to defer zoom levels to the user rather than setting them by script. 5) Make sure the size of button and the space between them are adequate so as user doesn’t accidentally click the button near the one that he is intended to click. 6) Make sure the size of the text are large enough to interact with the database from the iPhone and iPad. 7) Don’t forget to make your list views 4pt narrower so as to accommodate the indicator for the active record. Some other factors to take into consideration while designing the layout are: FMGO ITEM INFORMATION Toolbar 44 points high in Portrait mode on the iPhone / iPad Toolbar 44 points high in Landscape mode on the iPad Toolbar 34 points high in Landscape mode on the iPhone Status Bar 20 points high in Portrait mode on the iPhone / iPad Status Bar 20 points high in Landscape on the iPad 8) Sometimes, field height do restrict the bottom of character on iPad and iPhone such as “g”, “p” etc, we should take care of the same by increasing field height or doing the correct alignment for top, bottom or middle for that field. 9) “Allow User Abort[Off]” step should be set appropriately for the application so as to avoid users to interrupt scripts by double-tapping a scripted UI element. This lets user unintentionally stop scripts from executing, potentially interrupting data processing scripts and potentially introducing data corruption. 10) We should use small images or native FileMaker contents to make the navigation to the layouts faster, we can even use the hidden tab control feature to hide objects contributing towards loading time for the layouts, and show them with the click of a button when the user is intended to do so. Please have a look on to the below link to have better idea of the same: http://www.teamdf.com/weetbicks/tab-controls-overlay-menus-revealing-filemaker12/151/ 11) Make use of a webviewer instead of field to make the content non-editable and scrollable in FileMaker Go. Please have a look on to the below link to have better idea of the same: http://www.supportgroup.com/explore/using-the-web-viewer-as-a-field-in-filemaker-go/ 12) Finally it is always the best practice to test the layout for each aspect on the iPad and iPhone itself while doing the design. Surya Kanta Mekap Software Developer, Mindfire Solutions, India http://www.mindfiresolutions.com email:suryam@mindfiresolutions.com Skype: mfsi_suryam
  2. Success is just a matter of time.

  3. One of our client wanted us to build a solution for them to process credit cards from a FileMaker application with authorize.net and merchant account gateway. All we wanted to do is to capture the Credit Card data and send it to the iPad filemaker app and then send it to the web-service of the payment gateway. Filemaker API and Payment Gateway: Initially we made the integration using a hosted Filemaker file and PHP server; the processing worked well. Below are steps explaining the same, 1. In filemaker, the web-viewer will contain the payment form from web server. The web- viewer works same like other standard web-browsers like safari, mozilla etc.. 2. On submission of the form with the credit card details, the web-server will get the credit card details along with the order id(primary key of order). 3. Then a connection will be made to the filemaker database to retrieve the payment gateway details like: payment URL, API-login-id and Transaction-key. 4. After getting the details of payment gateway, we will post the credit card data along with API-login-id and Transaction-key to the payment URL for payment process. I have followed following method to post the data to payment url: Data array to be posted: $post_values = array( "x_login" => " API-login-id", "x_tran_key" => "Transaction-key", "x_delim_data" => "TRUE", "x_delim_char" => "|", "x_relay_response" => "FALSE", "x_invoice_num" => "order id", "x_method" => "CC", "x_card_num" => "card number", "x_exp_date" => "expiry date", "x_amount" => "payment_amount",//like: 0215 "x_type" => "type of transaction" //like: AUTH ONLY, PRIOR_AUTH_CAPTURE etc.. // Additional fields can be added here as outlined in the AIM integration // guide at: http://developer.authorize.net ); Then convert the array into authorize supported data. Authorize supported data like "x_login=username&x_tran_key=a1B2c3D4" $post_string = Authorize supported data string. Post the data to payment URL for payment process: $request = curl_init(payment URL); // initiate curl object curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1) curl_setopt($request, CURLOPT_POSTFIELDS, $post_string); // use HTTP POST to send form data curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment this line if you get no gateway response. $post_response = curl_exec($request); //execute curl post and store results in $post_response curl_close ($request); 5. The response from authorize is a string. All the data will be separated by the delimited character. Here it is '|'. So we will convert the response string into array by using explode function and retrieve the transaction details as below: $response_array = explode('|', $post_response); Retrieve transaction detail: $xresponse_code = $response_array[0]; $xresponse_reason_text = $response_array[3]; $xtrans_id = $response_array[6]; $xorder_id = $response_array[7]; $xamount = $response_array[9]; 6.If the $xresponse_code is one, then transaction is being successful. Show a successful message in the web-viewer. 7.If the $xresponse_code is not equals to one, then transaction is unsuccessful. Show an error message($xresponse_reason_text ) in the web-viewer. 8.We have the order id for which the payment is done. Now we need to update the payment details like: transaction id, payment amount etc.. for that order. Find the record and get the id: $find_record = $db_obj->newFindCommand('layout name'); $find_record->AddFindCriterion('field name', 'auto-increment id value'); $find_record_result = $find_record->execute(); $record = $find_currency_result->getFirstRecord(); $record_id = $record->getRecordId(''); Edit the record: $edit_record = $db_obj->newEditCommand('layout name', $record_id); $edit_record->setField('field', 'value'); . . $result = $edit_record->execute(); The problem with the above procedure requires to host the file on the Filemaker server as we are making a db connection to get the payment gateway details, and hence we have to access the app on the iPad remotely. This added some restriction to the mobility as we need to be within the LAN area or else we will be loosing connection with the server, hence the processing and updating of record will be affected, so we decided to make the app resident on the iPad itself. Now we required a third party app to integrate with FilemakerGo application and as we are not able to install plugins for the Filemaker Go so we looked forward for third party apps supporting URL schemes.We found the "Credit Card Terminal" from innerfence serving the purpose. Credit Card Terminal: The above app is free on the App Store and also gives away a free Credit Card when we signup as a new merchant. For this to work on the iPad we need to make use of URL Schemes The URL protocol allows FileMaker Go to communicate with other iOS applications. Learn more: http://help.filemaker.com/app/answers/detail/a_id/7786/kw/fmp7script URL Scheme used (Its URL Encoded): Th above URL takes us to the CC Terminal application on the Ipad and then will ask us to swipe in the credit card details, after processing the card it will send us back to the FM Go file called "POS.fmp12” and will start executing the script called "CallBackScript". We can pass as much info from FM Go to CC terminal as we want by setting the other query string parameters in the base URL, I have just passed the amount and email in the above example. The other parameters that we can pass on the URL is here on this page https://github.com/innerfence/ChargeDemo The "returnURL" is responsible for the call of “CallBackScript” script in the “POS.fmp12” file. The results of the charge will be returned via this return URL by including additional query string parameters which gets automatically declared. We can set those variables into our fields directly. $ifcc_responseType - approved, cancelled, declined, or error $ifcc_transactionId - transaction id (e.g. 100001) $ifcc_amount - amount charged (e.g. 10.99) $ifcc_currency - currency of amount (e.g. USD) $ifcc_taxAmount - tax portion from amount (e.g. 0.93) $ifcc_taxRate - tax rate applied to original amount (e.g. 8.5) $ifcc_tipAmount - tip portion from amount (e.g. 1.50) $ifcc_redactedCardNumber - redacted card number (e.g. XXXXXXXXXXXX1111) $ifcc_cardType - card type: Visa, MasterCard, Amex, Discover, Maestro, Solo, or Unknown Below is the encoded return URL. Encoded returnURL= fmp:%2F%2F<IP_Address>%2FPOS.fmp12%3Fscript%3DCallBackScript UN-Encoded returnURL= <IP_Address> needs to be replaced by the IP address on which the filemaker file is hosted, this needs to be replaced by “~” if the filemaker file is resident(local) on the Ipad. The above app charges some monthly amount and Interchange fees. Other better pricing offers are also available for high volume purchase for the Credit Card Terminal. Learn more: http://www.innerfence.com/apps/credit-card-terminal http://www.innerfence.com/apps/credit-card-terminal/developer-api https://github.com/innerfence/ChargeDemo Addition of a monthly fee and per-charge transaction fee cuts further into profit, so we looked forward for an app that will help us read the magnetic stripe from the Credit Card and process the Credit card using payment gateway API through web viewer. CCQ-FM: Now we need to get rid of the intervention of the filemaker server, so no Filemaker API is used, we planned to give away the details needed for processing on the URL itself in some encrypted format from the web viewer after getting the request the API will decrypt then will parse and process the card and will send the response back to the requested client on the URL itself. On the Filemaker Go we will be executing a timer script to check for the response available or not using the GetLayoutObject("webviewer", "source") for a preset time. When the response is available it parses the data and updates different fields for to log the transaction results on the filemakerGo application and shows the user about the payment processing details. The first character in the request must be a ‘?’. We have to add the string containing our protocol for return data. CardSwipe® will append the data from the mag stripe to the end of our request. We have to replace any spaces with %20. Using the FMP7Script ( and FMP for FileMaker Go 12 ) protocols CardSwipe® will return the swipe data at the end of our url string. For a local database named Invoice.fp7 (.fp7 is optional) and a script named Process Scan our call would look like this: For FileMaker Go 12 our call would look like this: CardSwipe® will return the mag stripe data as a script parameter. We can add parameters and variables For FileMaker Go 12: This will create a variable $CCData that will contain the mag stripe data. The tilde ~ character prior to the database name indicates that it is a local database if the database is hosted then the IP address should be sent instead of the tilde. Additional instructions for FileMaker available at: http://www.ccq-fm.com/fmgo_development.pdf You can download the integration guide at http://www.ccq-fm.com/CardSwipeIntegrationGuide.pdf Please refer to the applications documentation for further information. The CCQ-FM can itself be used without any other API to process credit cards and it has also got PA-DSS Certified Credit Card Processing for Filemaker Systems and the Web. CardSwipe: http://www.filemaker.com/company/media/press-releases/releases/3p_2011/ccq-fm_inc_announces_ccq-fm_2v1_pa-dss_certified_credit_card_processing_for_filemaker_systems_and_the_web.html http://www.ccq-fm.com Any of the above methods could be used as the situation demands. You can decide which of the above methods fits your necessity well. There are other Ipad/Iphone apps too that can be used to process credit cards from FilemakerGo app, we need to check for the support of URLScheme for that app to communicate with the Filemaker app. Surya Kanta Mekap Software Developer, Mindfire Solutions, India http://www.mindfiresolutions.com email:suryam@mindfiresolutions.com Skype: mfsi_suryam
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.