Invalid Signature error in amazon Selling Partner (SP) api PHP - php

In amazon selling partner api , canonical request and string to sign is coming as expected, code after that is below:
{
$kDate=hash_hmac('sha256',$date,'AWS4'.$secretKey,true); //only date. $kRegion=hash_hmac('sha256',$region,$kDate,true); $kService=hash_hmac('sha256',$service,$kRegion,true); $kSigning=hash_hmac('sha256','aws4_request',$kService,true); $signature=hash_hmac('sha256',$stringToSign,$kSigning);
}
Can anyone help me with what's wrong in it, Thanks in advance.
Output coming after running script

Related

How to connect Vsee to Firebase using Active API

I am using VSee video calling plugin, but now I need to connect this plugin to firebase API.
So far I have implemented this code below:
Request
https://api.vsee.com/activeapi/gettoken?apikey=<API KEY>
{
"secretkey": SECRET KEY
}
I receive below response.
{
"state_url": https://XXX.firebaseio.com/release/X,
"token": token string
}
Please help me, when someone has developed already.
You're probably looking for some of the docs as you're not really having an issue.

PHP OpenWeather

Alright so I am having some troubles understanding how to use the open weather API.
I have tried using it as
<?php
$request = file_get_contents('http://api.openweathermap.org/data/2.5/forecast/city?id=myidblablabla'); //example ID
$jsonPHP = json_decode($request);
echo $jsonPHP->city;
?>
But I get an error saying
Catchable fatal error: Object of class stdClass could not be converted
to string in
Now there is 1 more question that I have to ask, how do I get certains City Temperature, humidity etc? From the code I received I get only Moscow
To simplify it, you can also transform the json into array instead.
$jsonPHP = json_decode($request,true);
Now let's discuss it briefly. According to the documentation (http://openweathermap.org/current),
Note also that I've never used this API before. I'm just trying to help here.
If you hit api.openweathermap.org/data/2.5/weather?lat=35&lon=139
It responds as
{"coord":{"lon":139,"lat":35},
"sys":{"country":"JP","sunrise":1369769524,"sunset":1369821049},
"weather":[{"id":804,"main":"clouds","description":"overcast clouds","icon":"04n"}],
"main":{"temp":289.5,"humidity":89,"pressure":1013,"temp_min":287.04,"temp_max":292.04},
"wind":{"speed":7.31,"deg":187.002},
"rain":{"3h":0},
"clouds":{"all":92},
"dt":1369824698,
"id":1851632,
"name":"Shuzenji",
"cod":200}
Now assuming you want to take the weather and humidity , it just :
weather :
echo $jsonPHP["weather"][0]["id"];
humidity:
echo $jsonPHP["main"]["humidity"];
Note also that, If you hit http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139 and get the responds as
{"cod":401, "message": "Invalid API key. Please see http://openweathermap.org/faq#error401 for more info."}
For the case, they've explained here :
http://openweathermap.org/faq#error401 which is :
Q: API calls return an error 401
A: Starting from 9 October 2015 our
API requires a valid APPID for access. Note that this does not mean
that our API is subscription-only now - please take a minute to
register a free account to receive a key.
We are sorry for inconvenience but this is a necessary measure that
will help us deliver our services to you faster and more reliably.
For FOSS developers: we welcome free and open source software and are
willing to help you. If you want to use OWM data in your free software
application please register an API key and file a ticket describing
your application and API key registered. OWM will review your request
lift access limits for your key if used in open source application.

Google in-app payments: howto to handle Google's postback JWT

Maybe its a stupid question but I'm not an advanced programmer. I've
have successfully setup In-App payments for my app but it only works
without using a postback url.
I've Google'd around many hours trying to tackle this myself without
success. Hopefully anybody could help me out. I've included the script
handling the post data which does obviously something wrong.. This is what Google says:
Your server must send a 200 OK response for each HTTP POST message
that Google sends to your postback URL. To send this response, your
server must:
Decode the JWT that's specified in the jwt parameter of the POST
message. Check to make sure that the order is OK. Get the value of the
JWT's "orderId" field. Send a 200 OK response that has only one thing
in the body: the "orderId" value you got in step 3.
This is what I wrote but as far as I can see there is no way to test it (how can I simulate a post from Google?).
require_once 'include/jwt.php'; // including luciferous jwt library
$encoded_jwt = $_POST['jwt'];
$decoded_jwt = JWT::decode($encoded_jwt, "fdNAbAdfkCDakJQBdViErg");
$decoded_jwt_array = (array) $decoded_jwt;
$orderId = $decoded_jwt_array['response']['orderId'];
header("HTTP/1.0 200 OK");
echo $orderId;
Any help would be much appreciated. Thanks Tim
I had this same problem a year later and solved it with the following code:
require_once 'include/jwt.php'; // including luciferous jwt library
$encoded_jwt = $_POST['jwt'];
$decodedJWT = JWT::decode($jwt, $sellerSecret);
// get orderId
$orderId = $decodedJWT->response->orderId;
header("HTTP/1.0 200 OK");
echo $orderId;
Google Wallet's In App Purchase documentation is relatively new, and lacking on the callback side. This code works both sandbox and production side, just make sure you use your own seller secret.
Set Sandbox Postback URL in your Google Wallet setting to a test page, then log the requests to that page. You will see a JWT. Use it for test.

UPS API PHP - End point URL

I have downloaded a PHP SDK for the UPS API. I have the following code and have no idea what an end point URL is. The documentation does not provide any information on what this is.
//Configuration
$access = "0C81234564C2567";
$userid = "leannetest";
$passwd = "456hththd8hf";
$accessSchemaFile = "schemas/AccessRequest.xsd";
$requestSchemaFile = "schemas/RateRequest.xsd";
$responseSchemaFile = "schemas/RateResponse.xsd";
$endpointurl = 'add URL here';
$outputFileName = "XOLTResult.xml";
Can anyone help?
Endpoint url explaination in the UPS document. it consists of four parts which are explained below.
For example if we are going to use "Rate" service than our urls should be as below.
Testing and integration URL : https://wwwcie.ups.com/ups.app/xml/Rate
Production URL : https://onlinetools.ups.com/ups.app/xml/Rate
As per the documentation if we devide the url in four parts all of them are as listed below.
Protocol : https
Name of server : wwwcie.ups.com (testing) OR onlinetools.ups.com (production)
Path of service : ups.app/xml/Rate
name of the service : Rate OR Ship OR QVEvents
I just replied to explain UPS endpoint url in detail so it might help
An API endpoint "defines the address or connection point to a Web service. It is typically represented by a simple HTTP URL string". So basically, the endpoint URL is the URL of the web service that are you attempting to interact with.
SOURCE:
http://en.wikipedia.org/wiki/Web_Services_Description_Language#Objects_in_WSDL_1.1_.2F_WSDL_2.0
EDIT: It appears from the documentation that the Rate webservices endpoint URL is https://wwwcie.ups.com/webservices/Rate.
SOURCE:
UPS. (January 2, 2002). Rating Package Web Services Developers Guide. Section 1.9.3 Server Availability Check. Accessed in Rating API found on this page: https://www.ups.com/upsdeveloperkit/downloadresource?loc=en_US
The shipping endpoint url is:
https://wwwcie.ups.com/webservices/Ship
In case anyone needs it, since it's not documented in their developers kit.
Indeed the documentation is poor but with a little google trick I got the list of all the endpoint URLs
Type in google search:
site:https://onlinetools.ups.com/ups.app/xml/
In this way, it will show you all the endpoints.
Note: Do not use the sandbox URLs because they don't work at all :(
Anyway, here is the list:
https://onlinetools.ups.com/ups.app/xml/TimeInTransit
https://onlinetools.ups.com/ups.app/xml/License
https://onlinetools.ups.com/ups.app/xml/QVEvents
https://onlinetools.ups.com/ups.app/xml/Register
https://onlinetools.ups.com/ups.app/xml/AV
https://onlinetools.ups.com/ups.app/xml/ShipAccept
https://onlinetools.ups.com/ups.app/xml/Void
https://onlinetools.ups.com/ups.app/xml/XAV
https://onlinetools.ups.com/ups.app/xml/Track
https://onlinetools.ups.com/ups.app/xml/Rate
https://onlinetools.ups.com/ups.app/xml/ShipConfirm
https://onlinetools.ups.com/ups.app/xml/LabelRecovery
I hope this help

Can't get "Live Delegated Authentication" to work

I try to get the Live Delegated Authentication to work for the purpose of reading the email addresses.
I am doing this in PHP with the help of the windowslivelogin library. The problem is that I get an error.
I'm not sure what I'm doing wrong, i registered my application on the Azure webpage and got the appid and the secret into the code. This is what i use to initialize the Live Library :
$o = new WindowsLiveLogin();
$o->setAppId('000000004801B670');
$o->setSecret('secret');
$o->setSecurityAlgorithm('wsignin1.0');
$o->setDebug(true);
$o->setPolicyUrl('http://www.google.com/aides.html');
$o->setReturnUrl("http://michaelp.dev.gamepoint.net/framework/mainsite/contactimporter/?service=live");
return $o;
Then I call
$this->LiveLibrary->getLoginUrl()
And after I Login in to Live, it posts 2 things back, $_POST['stoken'] and $_POST['action'].
As soon as I call
$this->LiveLibrary->processLogin($_REQUEST);
It fails and gives back an error that the token is invalid.
I tried getting Consent straight away by making redirecting to
$this->LiveLibrary->getConsentUrl("Contacts.View");
But that gives an 3007 error and says that it cant share the information
According to MS this means the following :
3007
Consent Service API failed in the <method name> method. The application verifier is invalid.
The offer security level requires that a valid application verifier be passed with the request.
I am using the following URL, generated by the library
https://consent.live.com/Delegation.aspx?ps=Contacts.Invite&ru=http%3A%2F%2Fmichaelp.dev.gamepoint.net%2Fframework%2Fmainsite%2Fcontactimporter%2F%3Fservice%3Dlive&pl=http%3A%2F%2Fwww.google.com%2Faides.html&app=appid%3D000000004801B670%26ts%3D1251722931%26sig%3DD2gkM%252F%252FwlRXXfS64NMrV%252Bkt50v6dAOcESblfRk7j%252FUE%253D
I don't understand most of the documentation Microsoft has on this thing, I think its really unclear and chaotic. Also the Sample I tried doesn't work. I get an error message, it can't validate/decode the token. Same I get when I try the processLogin().
Thanks in Advance,
Michael

Categories