Is there a way to hook into the checkout event in Magento? - api

I'm creating a custom module that needs to hook in to the checkout success event in Magento.
What I need to do is this:
1). Once a custom has successfully checked out I need to present a special offer on the success page with a yes/no radio button and submit form. If they select yes I need to add their details to a custom grid in Magento backend that I have already created.
2). I then need to make an API call to a third party CRM using the POST method to authenticate and add the customers details to their billing system.
3). Upon completion there needs to be a way to update the Grid in Magento to change state from "pending..." to "accepted"
I have started the module but I just can't seem to find any clear documentation about making API Calls or POST requests from Magento that I'm beginning to wonder if this is actually possible?
I would be grateful if anyone knows of an extenion or documentation on how to do the above or if they know of a simpler solution...
If neccessary I can submit my module on Github as a reference if someone is able to assist me
Many thanks!

add a custom block to the checkout_onepage_success layout handle via XML. This block will contain your form.
in the controller that processes your form, you can use Zend_Http_Client to make the POST request to the third party API. Alternatively Zend_Rest_Client or Zend_Soap_Client or Zend_XmlRpc_Client if any of these protocols are used. All of those Zend packages are readily available in Magento.
this is just basic loading and updating models, you should already know how to do this

Related

Page & Action wise Authorization Asp.Net Core Razor Pages

I have a requirement to configure the user's authorization per module per screen per action. For example, one user should be able to Create/Save WorkOrders in WorkOrder Module, but another user should only able to View/Delete WorkOrders. Similarly, a third user should only be able to View WorkOrders. This is an example of one screen. Now there are many screens in the application. Let's keep the actions same for all i.e. View, New, Update, Delete.
There is a reports module also, in which the user will create reports on the fly and add it into the application. So authorization is required here too. For example, a user can View/Print WorkOrder reports. But another user can only view reports. Let's keep the actions in reports only View & Print.
I am not sure Asp.Net Core built-in authorization is capable of this or not. What I have looked so far, it is not possible. Please correct me if I am wrong.
Now question is, how should I do this? I had a similar kind of requirement in a previously built application where I used database tables to store rights against each user and each screen. And upon log-in, I used to fetch that data, and then while loading the web page; I used to show or hide the relevant buttons & menus based on user's rights. But here in Asp.Net Razor Pages, the action method matters (If I'm not wrong), and certain functionality can be accessed via route. I am looking for some attribute-based solution.
I found this link with more or less above mentioned implementation using database tables and route URL to determine action name. So the URLs are saved in the database and on runtime they are checked and matched with the current URL and the user is authenticated.
Another link here, where the developer has used attribute-based filtering on action methods. But URL Routes are not being saved in the database or anywhere.
Are these the only & best solution to my problem? I have no problem implementing them, they look logical. But I just want to use the best available approach. Can anyone assist me with any other more suitable approach?

Where to put database Model for extensions?

I want to write a small extension that is able to take some informations from the database, based on some user filter preference, and show them on the main page.
I have read: PHPBB extensions development and took a look at: ACME DEMO extension but i didn't find an answer to where the database handling should be placed. Normally this should go into a Model that will handle the data to a Controller, in this case I was not able to figure out where the Model should be placed in to the structure and how it should work.
How should an extension database model should be handled? Where should it sit in to the extension structure?
I'm guessing you would need an event listener.
PHP event listeners work with core events to inject code into phpBB.
Core events are like hooks, and they can be found throughout phpBB’s
codebase at key points. They give your extension access to phpBB’s
variables and allow you to use and modify them or to inject additional
PHP code during phpBB’s execution. -per the Skeleton Extension
Page

WHMCS Modifying Clients Table

How can you add a custom field to the table under View/Search Clients in the admin portal.
I have seen a lot of examples for ClientArea but nothing for the ADMIN Area.
Any light shed on this would be truly helpful.
Thanks.
You can do that with Javascript + AJAX:
1- write script to monitor current page is Clients page.
2- then add column header for the custom field,
3- Ajax script will send a request to php file (you need to write that as well) to get that custom field value and add it to the client row.
Best approach is to write addon module for this and use WHMCS hooks to add scripts to footer.

AtTask create/update a custom field through API on project creation created through AtTask's web app

I'm looking to use AtTask's API to update or create a custom field (ie. assign a custom ID apart from AtTask's auto-generated id) whenever a project is created through the web app. But I have not found anything about handling events in the API documentation.
I'm able to retrieve/edit project fields when issuing a request by ID or some other search parameter.
But I'm having trouble finding ways to edit project fields on some event like 'project created'.
One way I can think of is to have my script periodically search for new projects based on project metadata and edit projects that way, but there must be a better solution I probably missed.
Thanks in advance!
UPDATE:
It seems 'AtTask event subscriptions' was what I was looking for. At the time of the post below (12/2013), due to scalability issues, AtTask has turned this feature turned off with no ETA on resolving the issue. See here: Does AtTask event subscription work?
Any updates would be appreciated.
You are correct the AtTask API does not currently support events. The easiest thing to do is to just poll the system for updates using the search. You could also monitor an email address for emails that are sent upon project creation. The email will contain the project/task/issue ID that you can use to update events.

Is there any otherway to get configurable product and their options in Magento api

I'm using magento 1.7 and my problem is how to get configurable product and their options through a default api without creating a custom api. because my client wants to get the api's without modifying the actual source code on the server.
Now i can able to get the options like warranty & the screen protector but can't able to get a color and then a size. Please refer the attached screenshot below:
I have googled a lot more to find my solution without writing a custom api to get a configurable product. But so far no luck!
Is there any other way to get so? please let me know.
And please note, i'm a pure front end developer role. By referring the API reference documentation we are developing this application.
Referring the API document - http://www.magentocommerce.com/api/soap/introduction.html
Try to use $product->getOptions(), But make sure you load the product object $product = $observer->getEvent()->getProduct();