Is there a way we can access customer info like, email and name on a product detail page and access as a variable (like a handlebar variable)?
You can use the Profile.Model and then get the instance of the profile model like ProfileModel.getInstance(). There you can get the Customers data.
The other way of doing that via backend is using the Commerce API customer. It is inside the Models.Init module.
These are the methods that is available under Customer API
addAddress(address)
addCreditCard(creditcard)
emailCustomer(subject, body)
getAddress(addressid, fields)
getAddressBook(fields)
getCampaignSubscriptions(fields)
getCampaignSubscriptions(subscriptionId,fields)
getCreditCard(creditcardid, fields)
getCreditCards(fields)
getCustomFields()
getCustomFieldValues()
getFieldValues(fields)
isGuest()
removeAddress(addressid)
removeCreditCard(creditcardid)
setLoginCredentials(customer)
updateAddress(address)
updateCampaignSubscriptions(subscriptions)
updateCreditCard(creditcard)
updateProfile(customer)
Related
I need to get room information from the Revit model via Forge. I have tried to use generateMasterViews parameter as in this example;https://forge.autodesk.com/blog/new-rvt-svf-model-derivative-parameter-generates-additional-content-including-rooms-and-spaces. But , it did not work. How can I show the room details of the .rvt model in Model Browser of the viewer and get the room details by using model derivative's web service that is using for get metadata and properties? (Exporting nwc file and using it is not applicaple for me.)
I am using the Acumatica REST endpoint https://sandbox.kimballinc.com/AcumaticaERP/entity/Default/6.00.001 in my application
I am using the URL https://sandbox.kimballinc.com/AcumaticaERP/entity/Default/6.00.001/StockItem?$filter=InventoryID eq '123456'&$expand=WarehouseDetails to fetch info about a Product and to get complete warehouse details
My query is how to expand and get Price/CostInfo details in the response
Expand should be used for the arrays declared inside the entity in the web service endpoint:
Price/CostInfo is not an array so it can't be expanded. The default endpoint doesn't contain those fields so you'll need to extend the endpoint and add them:
Select the StockItem entity and use POPULATE button to add the fields:
Extended endpoint requires that you specify a different endpoint name:
In this example I choose DefaultPlus so I need to connect to:
https://xyz/AcumaticaERP/entity/DefaultPlus/6.00.001/StockItem
Instead of:
https://xyz/AcumaticaERP/entity/Default/6.00.001/StockItem
The added fields will be part of the GET response for StockItem, no special parameter is required for that.
I took a look at your site and noticed that you are using Acumatica 2018 R2.
I would then recommend that you use the latest version of the endpoint 18.200.001 as there are more field there by default.
If I saw correctly some of the fields for the Price/Cost Info are already in the main entity as they have a relation 1:1 to it.
To resume it using the latest version of the endpoint would allow you to see these field without the need to expand anything.
I'm currently trying to build a private app which will allow me to create a form which customers can use to update info like name, email address, etc.
I know that I can access this information in my template through the customer object:
https://help.shopify.com/themes/liquid/objects/customer
I also believe that I can send http requests through the admin api which would allow me to update a given customer object:
https://help.shopify.com/api/reference/customer#update
This is an example PUT request from that page
PUT /admin/customers/#{id}.json
{
"customer": {
"id": 207119551,
"email": "changed#email.address.com",
"note": "Customer is a great guy"
}
}
I think that in order to use this api (or at least use it securely) I need to use a private app. I found the following npm package which I would use to create the private app:
https://www.npmjs.com/package/shopify-node-api
This is an example of a PUT request from that page (I think this can be modified for customers):
var put_data = {
"product": {
"body_html": "<strong>Updated!</strong>"
}
}
Shopify.put('/admin/products/1234567.json', put_data, function(err, data, headers){
console.log(data);
});
Does anyone have any experience doing this as I'm unsure about a few things.
Will this PUT request be called when the url is loaded? So if I have an
<a> tag with href="/admin/products/1234567.json the request would load?
If so, this seems quite useless with the customer ID hardcoded in. Can I pass in the customer ID of whoever is logged in and clicking the link and use that as the last part of the request url somehow? In addition to this would it be possible to grab the form data that the user enters to use as the value for "email" or "note?
You should check out this answer shopify app proxy: send customer data or only customer ID for some pointers, discussion and links.
tl/dr; Don't rely on only the logged in customer id or you'll be opening yourself up to easy hackery.
So bascially you update the customer with the PUT you outlined in your question.
To get the id securely you:
Create a form with the customer id and make sure you have a server generated hash of that customer id to thwart bots (that's the reference post)
You post the customer data to a an app via a proxy url
You update the customer via a PUT to a constructed url.
Along with the thumbnail photo, I may want to display other properties in my master pages that are imported from AD such as "company" using User Profile sync
If I use SPServices.SPGetCurrentUser() (https://spservices.codeplex.com/documentation), I can get selected properties held in user profile settings. However, I can't make this call since the property does not exist here (yet).
var company = $().SPServices.SPGetCurrentUser({
fieldName: "Company",
debug: false
});
It is however, is displayed both in http://mysite.mydomain.com/_layouts/EditProfile.aspx when in Mysite and _layouts/ProfAdminEdit.aspx (Edit user properties in Central Admin). I guess my question is then to be able to use SPServices, do I somehow edit the default properties and include my "Company" attribute held in the user' mysite profile? Alternatively, is there another way to access the properties held in the user profile with JavaScript ?
Thanks
Daniel
$().SPServices.SPGetCurrentUser calls this page : http://you.site.com/_layouts/userdisp.aspx?Force=True&1376982818371. For me the function is not able to parse the page correctly, but you could simply use jQuery (or pure JS or whatever) to get by yourself the same page, and then parse it to find the data you want.
Otherwise you can use $SP().people() to query the User Profile Service and gets the info for the user. See the example from the provided link. In theory that should return you the same information or even more info.
I'm trying to get details of Foursquare list by PHP library:
$foursquare = new FoursquareAPI($key,$secret);
$list = $foursquare->GetPublic('lists/'.$listId);
But everytime gets this error:
string(7672) "{"meta":{"code":200,"errorType":"deprecated","errorDetail":"Please provide an API version to avoid future errors.See https:\/\/developer.foursquare.co ... "
When I debug it, library calls this URL: https://api.foursquare.com/v2/lists/ with these params: Array ( [client_id] => <client_id> [client_secret] => <client_secret> )
But when I try this API method in Foursquare API Explorer I see that, this URL is calling: OAuth token automatically added. https://api.foursquare.com/v2/lists/<list_id>?oauth_token=<token>&v=20111205.
In lists doc is Requires Acting User: No, so I'm confused. Is it possible to call this function without authenticating user?
It would be nice, because I want to add places from my list (favourite restaurants) to my page on Google map in Contacts. It would be useful for our clients.
The error you are seeing is unrelated to the list endpoint you are requesting or the state of authentication. It is a warning that the library you are using is currently not following versioning best practice for Foursquare. You can read more about it here.
As for the list there should be a response object at the same level as the meta object.