shoprenter.docs.html 24 KB

1234567891011121314151617181920212223242526272829303132333435
  1. <!DOCTYPE html>
  2. <html lang="en-US">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <title>Initial steps | ShopRenter | Developer Documentation</title>
  7. <meta name="generator" content="VuePress 1.5.2">
  8. <link rel="icon" type="image/x-icon" sizes="16x16" href="/images/favicon.ico">
  9. <meta name="description" content="">
  10. <meta name="theme-color" content="#85b218">
  11. <link rel="preload" href="/assets/css/0.styles.7ddf3af6.css" as="style"><link rel="preload" href="/assets/js/app.a0d683f5.js" as="script"><link rel="preload" href="/assets/js/3.078258a1.js" as="script"><link rel="preload" href="/assets/js/4.4fc26026.js" as="script"><link rel="preload" href="/assets/js/140.572a8f37.js" as="script"><link rel="prefetch" href="/assets/js/1.bc9445ed.js"><link rel="prefetch" href="/assets/js/10.6ec3bd3b.js"><link rel="prefetch" href="/assets/js/100.56b55bee.js"><link rel="prefetch" href="/assets/js/101.e7228ad9.js"><link rel="prefetch" href="/assets/js/102.4469d696.js"><link rel="prefetch" href="/assets/js/103.611627f4.js"><link rel="prefetch" href="/assets/js/104.1ba4a911.js"><link rel="prefetch" href="/assets/js/105.9091af8f.js"><link rel="prefetch" href="/assets/js/106.083e12d9.js"><link rel="prefetch" href="/assets/js/107.59a15dec.js"><link rel="prefetch" href="/assets/js/108.bbdd79dc.js"><link rel="prefetch" href="/assets/js/109.8468c8ee.js"><link rel="prefetch" href="/assets/js/11.32215d0b.js"><link rel="prefetch" href="/assets/js/110.ec2ed44c.js"><link rel="prefetch" href="/assets/js/111.fce07c23.js"><link rel="prefetch" href="/assets/js/112.a14bde30.js"><link rel="prefetch" href="/assets/js/113.eef9b310.js"><link rel="prefetch" href="/assets/js/114.31fc6c61.js"><link rel="prefetch" href="/assets/js/115.61c25cb9.js"><link rel="prefetch" href="/assets/js/116.32bd1a9a.js"><link rel="prefetch" href="/assets/js/117.16f02300.js"><link rel="prefetch" href="/assets/js/118.365f135a.js"><link rel="prefetch" href="/assets/js/119.302f09b1.js"><link rel="prefetch" href="/assets/js/12.7158a234.js"><link rel="prefetch" href="/assets/js/120.733f29b3.js"><link rel="prefetch" href="/assets/js/121.555c09a0.js"><link rel="prefetch" href="/assets/js/122.5392f1a1.js"><link rel="prefetch" href="/assets/js/123.233a11d1.js"><link rel="prefetch" href="/assets/js/124.4367accc.js"><link rel="prefetch" href="/assets/js/125.042873c9.js"><link rel="prefetch" href="/assets/js/126.1222cce6.js"><link rel="prefetch" href="/assets/js/127.d43aa28b.js"><link rel="prefetch" href="/assets/js/128.e974cb09.js"><link rel="prefetch" href="/assets/js/129.a312982f.js"><link rel="prefetch" href="/assets/js/13.21386617.js"><link rel="prefetch" href="/assets/js/130.f6a64706.js"><link rel="prefetch" href="/assets/js/131.db7e2ccb.js"><link rel="prefetch" href="/assets/js/132.d762696c.js"><link rel="prefetch" href="/assets/js/133.4f707936.js"><link rel="prefetch" href="/assets/js/134.a8923aa4.js"><link rel="prefetch" href="/assets/js/135.b71e2fb0.js"><link rel="prefetch" href="/assets/js/136.bf4b25e1.js"><link rel="prefetch" href="/assets/js/137.089a3eea.js"><link rel="prefetch" href="/assets/js/138.544658b9.js"><link rel="prefetch" href="/assets/js/139.a6fc101e.js"><link rel="prefetch" href="/assets/js/14.860af4c9.js"><link rel="prefetch" href="/assets/js/141.c48db4c1.js"><link rel="prefetch" href="/assets/js/142.c0346f5c.js"><link rel="prefetch" href="/assets/js/143.bfd2fb63.js"><link rel="prefetch" href="/assets/js/144.58d27f49.js"><link rel="prefetch" href="/assets/js/145.7204f801.js"><link rel="prefetch" href="/assets/js/146.25dc3cae.js"><link rel="prefetch" href="/assets/js/147.30fb0f1e.js"><link rel="prefetch" href="/assets/js/148.9e5ddd87.js"><link rel="prefetch" href="/assets/js/149.f76befae.js"><link rel="prefetch" href="/assets/js/15.67e17ae6.js"><link rel="prefetch" href="/assets/js/150.2d5f8cb9.js"><link rel="prefetch" href="/assets/js/151.1c316f06.js"><link rel="prefetch" href="/assets/js/152.4046e43c.js"><link rel="prefetch" href="/assets/js/153.6378adcb.js"><link rel="prefetch" href="/assets/js/154.c9c7fc8c.js"><link rel="prefetch" href="/assets/js/155.cb45b961.js"><link rel="prefetch" href="/assets/js/156.1b7f5fef.js"><link rel="prefetch" href="/assets/js/157.3075a9a6.js"><link rel="prefetch" href="/assets/js/158.8efa6773.js"><link rel="prefetch" href="/assets/js/159.6f6e2b77.js"><link rel="prefetch" href="/assets/js/16.778d8110.js"><link rel="prefetch" href="/assets/js/160.27c7fe97.js"><link rel="prefetch" href="/assets/js/161.6cf96371.js"><link rel="prefetch" href="/assets/js/162.d75fa1e9.js"><link rel="prefetch" href="/assets/js/163.fc038e26.js"><link rel="prefetch" href="/assets/js/164.f11e28d3.js"><link rel="prefetch" href="/assets/js/165.7781cee0.js"><link rel="prefetch" href="/assets/js/166.5eceb53f.js"><link rel="prefetch" href="/assets/js/167.f6d0316f.js"><link rel="prefetch" href="/assets/js/17.01d55ea6.js"><link rel="prefetch" href="/assets/js/18.f1f46a0a.js"><link rel="prefetch" href="/assets/js/19.b108d55d.js"><link rel="prefetch" href="/assets/js/20.66d2a416.js"><link rel="prefetch" href="/assets/js/21.53f94e47.js"><link rel="prefetch" href="/assets/js/22.203a6dd6.js"><link rel="prefetch" href="/assets/js/23.54e89712.js"><link rel="prefetch" href="/assets/js/24.0936a58c.js"><link rel="prefetch" href="/assets/js/25.3cbd8346.js"><link rel="prefetch" href="/assets/js/26.a0c48268.js"><link rel="prefetch" href="/assets/js/27.b33c5c9a.js"><link rel="prefetch" href="/assets/js/28.5fe5adf3.js"><link rel="prefetch" href="/assets/js/29.8c8a55dd.js"><link rel="prefetch" href="/assets/js/30.16b6cbfd.js"><link rel="prefetch" href="/assets/js/31.80ee7f66.js"><link rel="prefetch" href="/assets/js/32.5226fb1d.js"><link rel="prefetch" href="/assets/js/33.507ac8bf.js"><link rel="prefetch" href="/assets/js/34.d863146d.js"><link rel="prefetch" href="/assets/js/35.845c4b28.js"><link rel="prefetch" href="/assets/js/36.f9421e92.js"><link rel="prefetch" href="/assets/js/37.048db21a.js"><link rel="prefetch" href="/assets/js/38.b20d56af.js"><link rel="prefetch" href="/assets/js/39.1e45c338.js"><link rel="prefetch" href="/assets/js/40.17257369.js"><link rel="prefetch" href="/assets/js/41.907fa1c1.js"><link rel="prefetch" href="/assets/js/42.bd6af2ab.js"><link rel="prefetch" href="/assets/js/43.f8d4263a.js"><link rel="prefetch" href="/assets/js/44.d394295e.js"><link rel="prefetch" href="/assets/js/45.610c5834.js"><link rel="prefetch" href="/assets/js/46.27f6a134.js"><link rel="prefetch" href="/assets/js/47.2e4e9847.js"><link rel="prefetch" href="/assets/js/48.227088a9.js"><link rel="prefetch" href="/assets/js/49.c3309d9c.js"><link rel="prefetch" href="/assets/js/5.f9ad5e44.js"><link rel="prefetch" href="/assets/js/50.2afe7cf3.js"><link rel="prefetch" href="/assets/js/51.bd009c8b.js"><link rel="prefetch" href="/assets/js/52.1afa1f2a.js"><link rel="prefetch" href="/assets/js/53.3d63218e.js"><link rel="prefetch" href="/assets/js/54.3665ec56.js"><link rel="prefetch" href="/assets/js/55.418d665a.js"><link rel="prefetch" href="/assets/js/56.0b9b13e3.js"><link rel="prefetch" href="/assets/js/57.6d419447.js"><link rel="prefetch" href="/assets/js/58.a1ab1d10.js"><link rel="prefetch" href="/assets/js/59.206e0631.js"><link rel="prefetch" href="/assets/js/6.c5465329.js"><link rel="prefetch" href="/assets/js/60.0df20159.js"><link rel="prefetch" href="/assets/js/61.66d945c2.js"><link rel="prefetch" href="/assets/js/62.ace7e6a8.js"><link rel="prefetch" href="/assets/js/63.568b04a3.js"><link rel="prefetch" href="/assets/js/64.1de370f3.js"><link rel="prefetch" href="/assets/js/65.09334253.js"><link rel="prefetch" href="/assets/js/66.bb693eda.js"><link rel="prefetch" href="/assets/js/67.7d20ee4c.js"><link rel="prefetch" href="/assets/js/68.f73e2729.js"><link rel="prefetch" href="/assets/js/69.a4ca467b.js"><link rel="prefetch" href="/assets/js/7.49c08379.js"><link rel="prefetch" href="/assets/js/70.244a480c.js"><link rel="prefetch" href="/assets/js/71.57913c95.js"><link rel="prefetch" href="/assets/js/72.4b8d3dbf.js"><link rel="prefetch" href="/assets/js/73.6ae97ab1.js"><link rel="prefetch" href="/assets/js/74.47841e58.js"><link rel="prefetch" href="/assets/js/75.ecbf2d97.js"><link rel="prefetch" href="/assets/js/76.54880dda.js"><link rel="prefetch" href="/assets/js/77.c18bfe91.js"><link rel="prefetch" href="/assets/js/78.73291375.js"><link rel="prefetch" href="/assets/js/79.118e3c12.js"><link rel="prefetch" href="/assets/js/8.7c15eb87.js"><link rel="prefetch" href="/assets/js/80.34e3b9d5.js"><link rel="prefetch" href="/assets/js/81.a9804149.js"><link rel="prefetch" href="/assets/js/82.dd63c623.js"><link rel="prefetch" href="/assets/js/83.131bb9a5.js"><link rel="prefetch" href="/assets/js/84.0b279508.js"><link rel="prefetch" href="/assets/js/85.83f9b564.js"><link rel="prefetch" href="/assets/js/86.db0fbc2a.js"><link rel="prefetch" href="/assets/js/87.eb541a6f.js"><link rel="prefetch" href="/assets/js/88.2f898d33.js"><link rel="prefetch" href="/assets/js/89.527d65a0.js"><link rel="prefetch" href="/assets/js/9.4af29b38.js"><link rel="prefetch" href="/assets/js/90.92074f1b.js"><link rel="prefetch" href="/assets/js/91.7c1454f0.js"><link rel="prefetch" href="/assets/js/92.5e86ef43.js"><link rel="prefetch" href="/assets/js/93.8ba02f54.js"><link rel="prefetch" href="/assets/js/94.33ee5c87.js"><link rel="prefetch" href="/assets/js/95.bb24994e.js"><link rel="prefetch" href="/assets/js/96.e0cde854.js"><link rel="prefetch" href="/assets/js/97.1b6ff71b.js"><link rel="prefetch" href="/assets/js/98.02856f64.js"><link rel="prefetch" href="/assets/js/99.195831d6.js">
  12. <link rel="stylesheet" href="/assets/css/0.styles.7ddf3af6.css">
  13. </head>
  14. <body>
  15. <div id="app" data-server-rendered="true"><div class="theme-container"><div></div> <header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/images/logo.svg" alt="ShopRenter | Developer Documentation" class="logo"> <span class="site-name can-hide"></span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="https://github.com/Shoprenter/sr-api-docs" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="fab fa-github"></i> GitHub</a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="https://github.com/Shoprenter/sr-api-docs" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="fab fa-github"></i> GitHub</a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>Development</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading"><span>API</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading"><span>API Examples</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading open"><span>App Development</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/development/app-development/01_getting_started.html" aria-current="page" class="active sidebar-link">Initial steps</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/development/app-development/02_faq.html" class="sidebar-link">Frequently asked Questions</a></li></ul></section></li><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading"><span>App Examples</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading"><span>Frontend API</span> <span class="arrow right"></span></p> <!----></section></li><li><a href="/development/changelog.html" class="sidebar-link">Changelog</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>API Resources</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Shoprenter Payment API</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Theme development</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="initial-steps"><a href="#initial-steps" class="header-anchor">#</a> Initial steps</h1> <h3 id="data-required-to-register-the-application"><a href="#data-required-to-register-the-application" class="header-anchor">#</a> Data required to register the Application:</h3> <p>Please send the necessary data to the email address partnersupport@shoprenter.hu.</p> <p><strong>The application owner must provide the following information.</strong></p> <ul><li><strong>Application name:</strong> this will appear in the list of installable applications.</li> <li><strong>EntryPoint:</strong> Application entry point. Provided by the app developer. It must be accessible via HTTPS protocol.</li> <li><strong>RedirectUri:</strong> The authentication entry point of the application will request the authentication data for the API of the Shoprenter store via this URL. It must be accessible via the HTTPS protocol.
  16. <strong>Attention!</strong> If e.g. the client will be a Single-Page Application (SPA), where each route is specified with a URL resource identifier (<code>https://example.com/shoprenter#redirect</code>), we cannot accept it for technical reasons.</li> <li><strong>UninstallUri:</strong> After the application is uninstalled, a GET request will be sent to this URL so that the application can perform one last operation.
  17. (Note: the following data will be added to the query string: <code>shopname</code>, <code>code</code>, <code>timestamp</code>, <code>hmac</code>.)</li> <li><strong>Application logo:</strong> the logo image appearing in the application list (<strong>250x150px</strong>).</li> <li><strong>Short description of application:</strong> Short text of maximum 70 characters.</li> <li><strong>Application details link:</strong> Link to the application details/sales page.</li> <li><strong>Type of application:</strong> The application has two forms:
  18. <ul><li>Embedded: The URL given to the EntryPoint is loaded into an Iframe, which can be accessed via the URL belonging to the application, on the Shoprenter admin interface (e.g. <code>https://shopname.myshoprenter.hu/admin/app/1</code>).</li> <li>Redirected: When redirecting, the user is simply redirected to the specified EntryPoint URL.</li></ul></li> <li><strong>Name of the test store:</strong> At the very beginning of the development, a test store must be requested on <a href="https://www.shoprenter.hu/tesztigenyles/?devstore=1" target="_blank" rel="noopener noreferrer">shoprenter.hu<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>.
  19. Here you can enter the shop name, which will be visible in the first part of the shop domain - <code>[shopName].myshoprenter.hu</code>.</li> <li><strong>Required scopes:</strong> You must specify the scopes your application will require in advance. The client credentials you'll receive will only grant access to these pre-defined scopes. Required scopes per API resource are listed <a href="/development/api/11_scopes.html">here</a>. When installing the app, the shop owner will be presented with this list of required scopes, allowing them to grant informed consent to the app’s data access.</li></ul> <p><strong>After registering the application, Partner Support will send the following data:</strong></p> <ul><li><strong>AppId:</strong> the identifier of the application within Shoprenter.</li> <li><strong>ClientId:</strong> is the application ID.</li> <li><strong>ClientSecret:</strong> key to identify requests.</li> <li><strong>App URL:</strong> the Shoprenter URL of the application on the admin side. E.g.: <code>demo.myshoprenter.hu/admin/app/55</code></li></ul> <h3 id="application-installation-process"><a href="#application-installation-process" class="header-anchor">#</a> Application installation process:</h3> <ol><li>The user clicks to install the application on the Shoprenter admin interface.</li> <li>Shoprenter calls the RedirectUri (GET Request) provided by the application developer.
  20. Parameters passed during the call:
  21. <ul><li><strong>shopname:</strong> the name of the shop from which the call was initiated</li> <li><strong>code:</strong> generated hash</li> <li><strong>timestamp:</strong> request time</li> <li><strong>hmac:</strong> check hash</li> <li><strong>app_url</strong> The URL to which the user must be redirected after running the script under RedirectUri</li></ul></li> <li>It is advisable for the serving party to check that the request was indeed sent by Shoprenter.
  22. To verify that the request was sent by Shoprenter:
  23. The part of the query string without HMAC (<code>code=0907a61c0c8d55e99db179b68161bc00&amp;shopname=example&amp;timestamp=1337178173</code>) encoded with <strong>ClientSecret</strong> using the sha256 algorithm must be equivalent to the value of the HMAC parameter of the query string.</li> <li>Once the request is validated, the user must be redirected to the <strong>app_url</strong> received in the query string. <br> <em>Previously, the application server was supposed to request credentials for Basic Authentication from Shoprenter at this point in the process, but Basic Authentication has since been deprecated and is no longer supported. Attempting to request Basic Authentication credentials will result in a 403 error response from the Shoprenter endpoint.</em> <br><br><strong>Note:</strong> It is possible to decorate the value of <code>app_url</code> (Shoprenter's URL of the application) with unique query string parameters.
  24. These parameters will also appear in the EntryPoint URL, along with the parameters used for request authentication (<code>shopname</code>, <code>code</code>, <code>timestamp</code>, <code>hmac</code>).<br> <strong>Example:</strong> <br> Let EntryPoint be <code>https://app.example.com/entryPoint</code><br>
  25. The application redirects to: <code>https://[primaryDomain]/admin/app/[appId]?pelda=parameter</code><br>
  26. In this case, EntryPoint is called like this: <code>https://app.example.com/entryPoint?shopname=[shopname]&amp;code=[code]&amp;timestamp=[timestamp]&amp;hmac=[hmac]&amp;pelda=parameter</code><br><br></li> <li>Shoprenter opens the EntryPoint for the application. The request will contain the parameters described in step 2.</li> <li>After installation, Shoprenter only sends requests to the Entrypoint. In all cases, with the parameters described in step 2.</li> <li>After obtaining the client credentials from Partner Support and completing the installation process, the application is ready to request access tokens for the shop's API. Instructions for requesting an access token are specified <a href="/development/api/12_acquiring_an_access_token.html">here</a></li></ol> <h3 id="updating-application-scopes"><a href="#updating-application-scopes" class="header-anchor">#</a> Updating application scopes</h3> <p>Over time, your application may require additional API permissions, for example, when new features are added. In such cases, you should contact Partner Support with the updated list of required scopes so they can update them on the Shoprenter platform.</p> <p>However, by this time, the application may have been installed in multiple shops, and their owners have not consented to the app acquiring these new access privileges in their shops.</p> <p>To obtain consent for the new scopes in shops that have already installed the app, the shop owners must be directed to the following URL:</p> <h4 id="get-https-shopname-myshoprenter-hu-admin-app-clientid-approvescopes"><a href="#get-https-shopname-myshoprenter-hu-admin-app-clientid-approvescopes" class="header-anchor">#</a> <code>GET https://{shopName}.myshoprenter.hu/admin/app/{clientId}/approveScopes</code></h4> <p><strong>Path Parameters:</strong></p> <table><thead><tr><th>Parameter</th> <th>Type</th> <th>Description</th></tr></thead> <tbody><tr><td><code>shopName</code></td> <td>string</td> <td>The name of the shop.</td></tr> <tr><td><code>clientId</code></td> <td>string</td> <td>The ClientId of the application.</td></tr></tbody></table> <p>It is up to the application to decide whether consent is obtained via in-app redirection or by emailing shop owners who have already installed the app — or any other way.</p> <p>Until the shop owner grants consent — by clicking the button on the URL mentioned above — the application will not have access to the new scopes in that specific store.</p> <h3 id="example-applications"><a href="#example-applications" class="header-anchor">#</a> Example applications</h3> <ul><li><a href="https://github.com/Shoprenter/sr-demo-app-php" target="_blank" rel="noopener noreferrer">SR Demo app PHP<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://github.com/Shoprenter/sr-demo-app-php-slim" target="_blank" rel="noopener noreferrer">SR Demo app PHP Slim<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://github.com/Shoprenter/sr-demo-app-node" target="_blank" rel="noopener noreferrer">SR Demo app Node.js<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></div> <footer class="page-edit"><!----> <div class="copy-right">
  27. © 2011 - 2025 Shoprenter Kft.
  28. </div> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
  29. <a href="/development/api-examples/10_product_addon.html" class="prev">Product Addon</a></span> <span class="next"><a href="/development/app-development/02_faq.html">Frequently asked Questions</a>
  30. </span></p></div> </main> <div></div></div><div class="global-ui"><!----></div></div>
  31. <script src="/assets/js/app.a0d683f5.js" defer></script><script src="/assets/js/3.078258a1.js" defer></script><script src="/assets/js/4.4fc26026.js" defer></script><script src="/assets/js/140.572a8f37.js" defer></script>
  32. </body>
  33. </html>