Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Shopware 6 -List Currencies
See more Shopware 6 Examples
With store-api.currency you can fetch all currencies that are available in this Sales Channel.Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.Http,
Chilkat.StringBuilder,
Chilkat.JsonArray,
Chilkat.HttpResponse,
Chilkat.JsonObject;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
http: THttp;
json: TJsonObject;
resp: THttpResponse;
sbResponseBody: TStringBuilder;
respStatusCode: Integer;
factor: string;
shortName: string;
name: string;
id: string;
apiAlias: string;
jRespArr: TJsonArray;
jCurrency: TJsonObject;
i: Integer;
count_i: Integer;
jResp: TJsonObject;
begin
success := False;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http := THttp.Create;
// Sends the following POST
// POST /store-api/v3/currency
// {
// "includes": {
// "currency": [
// "id",
// "factor",
// "shortName",
// "name"
// ]
// }
// }
// Use this online tool to generate code from sample JSON:
// Generate Code to Create JSON
json := TJsonObject.Create;
json.UpdateString('includes.currency[0]','id');
json.UpdateString('includes.currency[1]','factor');
json.UpdateString('includes.currency[2]','shortName');
json.UpdateString('includes.currency[3]','name');
// This request simply authenticates with the sw-access-key you can interactively copy from your
// sales channel in the Shopware 6 administration web portal.
// We do NOT use OAuth2 for Store API requests.
http.SetRequestHeader('sw-access-key','<sales-channel-api-access-key>');
resp := THttpResponse.Create;
success := http.HttpJson('POST','https://my-shopware-6-shop.de/store-api/v3/currency',json,'application/json',resp);
if (success = False) then
begin
WriteLn(http.LastErrorText);
Exit;
end;
sbResponseBody := TStringBuilder.Create;
resp.GetBodySb(sbResponseBody);
WriteLn(sbResponseBody.GetAsString());
// If we get a 401 response, it may be that our access token expired and we need to fetch a new one.
respStatusCode := resp.StatusCode;
WriteLn('Response Status Code = ' + respStatusCode);
if (respStatusCode >= 400) then
begin
WriteLn('Response Header:');
WriteLn(resp.Header);
WriteLn('Failed.');
Exit;
end;
// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)
// A single object can be returned.
// {
// "factor": 1,
// "shortName": "EUR",
// "name": "Euro",
// "id": "b7d2554b0ce847cd82f3ac9bd1c0dfca",
// "apiAlias": "currency"
// }
// or an array of currency objects can be returned:
// [
// {
// "factor": 0.89157,
// "shortName": "GBP",
// "name": "Pound",
// "id": "01913e4cbe604f45be84cbabd5966239",
// "apiAlias": "currency"
// },
// {
// "factor": 10.51,
// "shortName": "SEK",
// "name": "Swedish krone",
// "id": "3dfbaa78994b4f1cac491f1a992646fd",
// "apiAlias": "currency"
// }
// ]
// Sample code for parsing the JSON response...
// Use the following online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
sbResponseBody.Trim();
if (sbResponseBody.StartsWith('[',False) = True) then
begin
// This is an array.
jRespArr := TJsonArray.Create;
jRespArr.LoadSb(sbResponseBody);
i := 0;
count_i := jRespArr.Size;
while i < count_i do
begin
jCurrency := jRespArr.ObjectAt(i);
factor := jCurrency.StringOf('factor');
shortName := jCurrency.StringOf('shortName');
name := jCurrency.StringOf('name');
id := jCurrency.StringOf('id');
apiAlias := jCurrency.StringOf('apiAlias');
jCurrency.Free;
i := i + 1;
end;
end
else
begin
// This is a single currency.
jResp := TJsonObject.Create;
jResp.LoadSb(sbResponseBody);
jResp.EmitCompact := False;
WriteLn('Response Body:');
WriteLn(jResp.Emit());
factor := jResp.StringOf('factor');
shortName := jResp.StringOf('shortName');
name := jResp.StringOf('name');
id := jResp.StringOf('id');
apiAlias := jResp.StringOf('apiAlias');
end;
http.Free;
json.Free;
resp.Free;
sbResponseBody.Free;
jRespArr.Free;
jResp.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.