@artilingo/artiframe-cli 1.1.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/artiframe.js +1 -1
- package/core-stubs/docs/de.html +99 -6
- package/core-stubs/docs/en.html +100 -7
- package/core-stubs/docs/es.html +99 -6
- package/core-stubs/docs/fr.html +100 -7
- package/core-stubs/docs/tr.html +95 -2
- package/package.json +2 -1
- package/src/App.php +11 -0
- package/src/Commands/AddCommand.php +18 -4
- package/src/Commands/MakeApiCommand.php +1 -1
- package/src/Commands/MakeClassCommand.php +1 -1
- package/src/Commands/MakeViewCommand.php +1 -1
- package/src/Commands/ModeCommand.php +71 -0
- package/src/Lang/de.php +7 -0
- package/src/Lang/en.php +7 -0
- package/src/Lang/es.php +7 -0
- package/src/Lang/fr.php +7 -0
- package/src/Lang/tr.php +7 -0
- package/stubs/make/api-standart.stub +20 -0
- package/stubs/make/api-switch-case.stub +38 -0
- package/stubs/make/class.stub +25 -0
- package/stubs/make/view.stub +30 -0
- package/stubs/service/phpmailer.stub +143 -0
- package/stubs/service/qrcode.stub +169 -0
- /package/{core-stubs/stubs → stubs}/service/image.stub +0 -0
- /package/{core-stubs/stubs → stubs}/service/iyzico.stub +0 -0
- /package/{core-stubs/stubs → stubs}/service/jwt.stub +0 -0
- /package/{core-stubs/stubs → stubs}/service/pusher.stub +0 -0
- /package/{core-stubs/stubs → stubs}/service/redis.stub +0 -0
- /package/{core-stubs/stubs → stubs}/service/s3.stub +0 -0
- /package/{core-stubs/stubs → stubs}/service/sentry.stub +0 -0
- /package/{core-stubs/stubs → stubs}/service/stripe.stub +0 -0
- /package/{core-stubs/stubs → stubs}/service/twilio.stub +0 -0
package/bin/artiframe.js
CHANGED
package/core-stubs/docs/de.html
CHANGED
|
@@ -282,10 +282,13 @@
|
|
|
282
282
|
<a href="#cli-go">go</a>
|
|
283
283
|
<a href="#cli-remove">remove</a>
|
|
284
284
|
<a href="#cli-version">version</a>
|
|
285
|
-
<a href="#cli-
|
|
285
|
+
<a href="#cli-mode">mode</a>
|
|
286
|
+
<a href="#cli-serve">serve</a>
|
|
286
287
|
<a href="#cli-add">add</a>
|
|
287
288
|
<div class="sb-cat">Integrierte Dienste</div>
|
|
288
|
-
<a href="#svc-
|
|
289
|
+
<a href="#svc-qrcode">QR Code</a>
|
|
290
|
+
<a href="#svc-phpmailer">PHPMailer (Mail)</a>
|
|
291
|
+
<a href="#svc-iyzico">Iyzico <span class="tag b-core" style="padding: 1px 5px; margin-left: 2px; font-weight: bold;" title="Ücretli/Lisanslı Servis">$</span></a>
|
|
289
292
|
<a href="#svc-stripe">Stripe <span class="tag b-core" style="padding: 1px 5px; margin-left: 2px; font-weight: bold;" title="Ücretli/Lisanslı Servis">$</span></a>
|
|
290
293
|
<a href="#svc-jwt">JWT</a>
|
|
291
294
|
<a href="#svc-image">Image Processing</a>
|
|
@@ -843,7 +846,16 @@ artiframe> <span class="fn">go</span> <span class="st">back</span>
|
|
|
843
846
|
<pre><code>artiframe> <span class="fn">version</span> upgrade minor
|
|
844
847
|
<span class="cm">✔ Sürüm 1.2.0 → 1.3.0 olarak güncellendi.</span></code></pre>
|
|
845
848
|
</section>
|
|
846
|
-
<!--
|
|
849
|
+
<!-- mode -->
|
|
850
|
+
<section id="cli-mode">
|
|
851
|
+
<h2><code>mode</code> <span class="tag b-cli">CLI-Befehl</span></h2>
|
|
852
|
+
<p>Ermöglicht es Ihnen, den Betriebsmodus des Projekts (Entwicklung oder Produktion) mit einem einzigen Befehl zu ändern. Dies erspart Ihnen das mühsame manuelle Öffnen und Bearbeiten der Datei <code>config/app-version.php</code>.</p>
|
|
853
|
+
<pre><code>artiframe> <span class="fn">mode</span> <span class="st">1</span>
|
|
854
|
+
✅ Vom Prod- in den Debug-Modus gewechselt.</code></pre>
|
|
855
|
+
<p>Sie können den Parameter <code>0</code> verwenden, um zur Produktionsfreigabe zu wechseln:</p>
|
|
856
|
+
<pre><code>artiframe> <span class="fn">mode</span> <span class="st">0</span></code></pre>
|
|
857
|
+
</section>
|
|
858
|
+
<!-- serve -->
|
|
847
859
|
<section id="cli-serve">
|
|
848
860
|
<h2><code>serve</code> <span class="tag b-cli">CLI Komutu</span></h2>
|
|
849
861
|
<p>Startet einen lokalen Entwicklungsserver (localhost), um das Projekt zu testen. Es startet Ihr Projekt in Sekundenschnelle und öffnet es automatisch in Ihrem Browser, ohne dass ein zusätzlicher Webserver (XAMPP, Nginx usw.) installiert werden muss.</p>
|
|
@@ -866,9 +878,11 @@ artiframe> <span class="fn">go</span> <span class="st">back</span>
|
|
|
866
878
|
<tr><th>Befehl</th><th>Komponistenpaket</th><th>Generierte Klassendatei</th></tr>
|
|
867
879
|
</thead>
|
|
868
880
|
<tbody>
|
|
869
|
-
<tr><td><code>add
|
|
881
|
+
<tr><td><code>add phpmailer</code></td><td>phpmailer/phpmailer</td><td><span class="tag b-core">src/Service/Mailer.php</span></td></tr>
|
|
882
|
+
<tr><td><code>add iyzico</code></td><td>iyzipay/iyzipay-php</td><td><span class="tag b-core">src/Service/Iyzico.php</span></td></tr>
|
|
870
883
|
<tr><td><code>add stripe</code></td><td>Stripe/Stripe-php</td><td><span class="tag b-core">src/Service/Stripe.php</span></td></tr>
|
|
871
|
-
<tr><td><code>add
|
|
884
|
+
<tr><td><code>add qrcode</code></td><td>endroid/qr-code</td><td><span class="tag b-core">src/Service/QrCode.php</span></td></tr>
|
|
885
|
+
<tr><td><code>add jwt</code></td><td>firebase/php-jwt</td><td><span class="tag b-core">src/Auth/JwtAuth.php</span></td></tr>
|
|
872
886
|
<tr><td><code>add image</code></td><td>Intervention/Bild</td><td><span class="tag b-core">src/Service/ImageProcessor.php</span></td></tr>
|
|
873
887
|
<tr><td><code>add s3</code></td><td>aws/aws-sdk-php</td><td><span class="tag b-core">src/Service/S3Storage.php</span></td></tr>
|
|
874
888
|
<tr><td><code>add sentry</code></td><td>Wache/Wächter</td><td><span class="tag b-core">config/sentry.php</span></td></tr>
|
|
@@ -906,7 +920,86 @@ artiframe> <span class="fn">go</span> <span class="st">back</span>
|
|
|
906
920
|
<section id="entegre-servisler">
|
|
907
921
|
<h2>Integrierte Dienste (Wrapper) <span class="tag b-core">Stubs</span></h2>
|
|
908
922
|
<p>Anstatt gängige Pakete direkt zu verwenden, bietet ArtiFrame <strong>vorkonfigurierter Wrapper</strong> Es bietet Kurse für Sie an.</p>
|
|
909
|
-
<div class="card" id="svc-
|
|
923
|
+
<div class="card" id="svc-qrcode">
|
|
924
|
+
<h2>QR Code</h2>
|
|
925
|
+
<div class="alert a-info" style="margin-top: 10px; padding: 10px 15px; font-size: 0.85em;"><strong>📌 Wrapper-Klasse:</strong> Wenn Sie <code>add qrcode</code> ausführen, wird die Klasse <code>src/Service/QrCode.php</code> erstellt.</div>
|
|
926
|
+
<p>Eine fließende (fluent) Klasse, die den komplexen Instanziierungsprozess der Endroid QR Code-Bibliothek verbirgt.</p>
|
|
927
|
+
|
|
928
|
+
<h3 style="margin-top:20px; margin-bottom:10px; font-size: 1.1em; color: var(--text-color);">Methoden</h3>
|
|
929
|
+
<ul style="line-height: 1.6; margin-bottom: 20px;">
|
|
930
|
+
<li><code>->generate('Metin')</code> : Startet die Kette.</li>
|
|
931
|
+
<li><code>->size(300)</code> : Größe in Pixeln.</li>
|
|
932
|
+
<li><code>->margin(10)</code> : Weißer Rand.</li>
|
|
933
|
+
<li><code>->color('#000000', '#ffffff')</code> : Vordergrund- und Hintergrundfarbe als HEX.</li>
|
|
934
|
+
<li><code>->logo('/path/logo.png', 50, true)</code> : Bettet ein Logo ein.</li>
|
|
935
|
+
<li><code>->format('png')</code> : png oder svg.</li>
|
|
936
|
+
<li><code>->save('/path/save.png')</code> : Speichert die Datei.</li>
|
|
937
|
+
<li><code>->base64()</code> : Gibt als base64 zurück.</li>
|
|
938
|
+
<li><code>->output()</code> : Gibt direkt an den Browser aus.</li>
|
|
939
|
+
</ul>
|
|
940
|
+
|
|
941
|
+
<h3 style="margin-top:20px; margin-bottom:10px; font-size: 1.1em; color: var(--text-color);">Beispiele</h3>
|
|
942
|
+
<pre><code><span class="kw">use</span> <span class="var">App\Service\QrCode</span>;
|
|
943
|
+
|
|
944
|
+
<span class="cm">// Örnek 1: Ekrana HTML Img olarak basma</span>
|
|
945
|
+
<span class="var">$base64</span> = <span class="var">QrCode</span>::generate(<span class="st">'https://artiframe.dev'</span>)
|
|
946
|
+
-><span class="fn">size</span>(400)
|
|
947
|
+
-><span class="fn">logo</span>(<span class="var">$_SERVER</span>[<span class="st">'DOCUMENT_ROOT'</span>] . <span class="st">'/assets/logo.png'</span>)
|
|
948
|
+
-><span class="fn">base64</span>();
|
|
949
|
+
|
|
950
|
+
<span class="kw">echo</span> <span class="st">'<img src="'</span> . <span class="var">$base64</span> . <span class="st">'" alt="QR">'</span>;
|
|
951
|
+
|
|
952
|
+
<span class="cm">// Örnek 2: Fiziksel PNG Olarak Kaydetme</span>
|
|
953
|
+
<span class="var">QrCode</span>::generate(<span class="st">'VCARD Bilgileri'</span>)
|
|
954
|
+
-><span class="fn">color</span>(<span class="st">'#ff0000'</span>, <span class="st">'#ffffff'</span>)
|
|
955
|
+
-><span class="fn">save</span>(<span class="st">'/temp/kullanici_karti.png'</span>);
|
|
956
|
+
|
|
957
|
+
<span class="cm">// Örnek 3: API Endpoint olarak resmi tarayıcıya basma</span>
|
|
958
|
+
<span class="var">QrCode</span>::generate(<span class="st">'https://artilingo.com'</span>)-><span class="fn">output</span>();</code></pre>
|
|
959
|
+
</div>
|
|
960
|
+
|
|
961
|
+
<div class="card" id="svc-phpmailer">
|
|
962
|
+
<h2>PHPMailer (Mail)</h2>
|
|
963
|
+
<div class="alert a-info" style="margin-top: 10px; padding: 10px 15px; font-size: 0.85em;"><strong>📌 Automatische .env-Einrichtung:</strong> Wenn Sie den Befehl <code>add phpmailer</code> ausführen, werden die SMTP-Einstellungen automatisch zu Ihrer <code>.env</code>-Datei hinzugefügt und die Klasse <code>src/Service/Mailer.php</code> erstellt.</div>
|
|
964
|
+
<p>Eine viel modernere, fließende und sichere (CRLF-geschützte) Wrapper-Klasse, die auf der PHPMailer-Bibliothek aufbaut. Alle Methoden der Klasse sind verkettbar (chainable).</p>
|
|
965
|
+
|
|
966
|
+
<h3 style="margin-top:20px; margin-bottom:10px; font-size: 1.1em; color: var(--text-color);">Methoden und Verwendung</h3>
|
|
967
|
+
<ul style="line-height: 1.6; margin-bottom: 20px;">
|
|
968
|
+
<li><code>->to('mail@adres.com', 'İsim')</code> : Legt fest, an wen die E-Mail gesendet wird.</li>
|
|
969
|
+
<li><code>->cc('mail@adres.com')</code> : Fügt CC-Empfänger (Carbon Copy) hinzu.</li>
|
|
970
|
+
<li><code>->bcc('mail@adres.com')</code> : Fügt BCC-Empfänger (Blind Carbon Copy) hinzu. Primäre Empfänger können diese nicht sehen.</li>
|
|
971
|
+
<li><code>->subject('Konu')</code> : Legt den Betreff (Titel) der E-Mail fest.</li>
|
|
972
|
+
<li><code>->attach('/path/fatura.pdf', 'Isim.pdf')</code> : Fügt eine physische Datei vom Server (oder Temp) als Anhang zur E-Mail hinzu.</li>
|
|
973
|
+
<li><code>->embedImage('/path/logo.png', 'logo_cid')</code> : Bettet ein Bild in die E-Mail ein, das im HTML verwendet wird (<code><img src="cid:logo_cid"></code>).</li>
|
|
974
|
+
<li><code>->html('HTML Kodu')</code> : Legt den HTML-Inhalt der E-Mail fest. Erstellt automatisch eine reine Textversion (AltBody).</li>
|
|
975
|
+
<li><code>->text('Düz Metin')</code> : Wird verwendet, wenn die E-Mail ausschließlich als reiner Text gesendet werden soll.</li>
|
|
976
|
+
<li><code>->send()</code> : Schließt alle Operationen ab und sendet die E-Mail über SMTP. Wirft bei Fehler eine Exception.</li>
|
|
977
|
+
</ul>
|
|
978
|
+
|
|
979
|
+
<h3 style="margin-top:20px; margin-bottom:10px; font-size: 1.1em; color: var(--text-color);">Erweitertes Beispiel: PHP-Vorlage (View) und dynamischer Dateianhang</h3>
|
|
980
|
+
<p>Wenn Sie den HTML-Inhalt nicht direkt in Strings schreiben möchten, können Sie <code>ob_start()</code> verwenden, um eine externe PHP-Vorlagendatei (mit Variablen) einzubinden und ein dynamisch generiertes PDF anzuhängen:</p>
|
|
981
|
+
<pre><code><span class="kw">use</span> <span class="var">App\Service\Mailer</span>;
|
|
982
|
+
|
|
983
|
+
<span class="cm">// 1. Ihre dynamischen Daten</span>
|
|
984
|
+
<span class="var">$siparisNo</span> = <span class="st">'#90210'</span>;
|
|
985
|
+
<span class="var">$pdfDosyasi</span> = <span class="var">$_SERVER</span>[<span class="st">'DOCUMENT_ROOT'</span>] . <span class="st">'/temp/fatura_90210.pdf'</span>;
|
|
986
|
+
|
|
987
|
+
<span class="cm">// 2. HTML-Vorlage extern laden (Output Buffering)</span>
|
|
988
|
+
<span class="fn">ob_start</span>();
|
|
989
|
+
<span class="kw">require_once</span> <span class="var">$_SERVER</span>[<span class="st">'DOCUMENT_ROOT'</span>] . <span class="st">'/views/email/siparis.php'</span>;
|
|
990
|
+
<span class="var">$htmlIcerik</span> = <span class="fn">ob_get_clean</span>();
|
|
991
|
+
|
|
992
|
+
<span class="cm">// 3. E-Mail senden</span>
|
|
993
|
+
<span class="var">Mailer</span>::create()
|
|
994
|
+
-><span class="fn">to</span>(<span class="st">'musteri@mail.com'</span>, <span class="st">'Ahmet Yılmaz'</span>)
|
|
995
|
+
-><span class="fn">bcc</span>(<span class="st">'arsiv@sirket.com'</span>) <span class="cm">// Der Kunde kann dies nicht sehen</span>
|
|
996
|
+
-><span class="fn">subject</span>(<span class="st">'Siparişiniz Onaylandı: '</span> . <span class="var">$siparisNo</span>)
|
|
997
|
+
-><span class="fn">html</span>(<span class="var">$htmlIcerik</span>)
|
|
998
|
+
-><span class="fn">attach</span>(<span class="var">$pdfDosyasi</span>, <span class="st">'Siparis_Faturasi.pdf'</span>)
|
|
999
|
+
-><span class="fn">send</span>();</code></pre>
|
|
1000
|
+
</div>
|
|
1001
|
+
|
|
1002
|
+
<div class="card" id="svc-iyzico">
|
|
910
1003
|
<h2>Iyzico <span class="tag b-core" style="padding: 1px 5px; margin-left: 2px; font-weight: bold;" title="Ücretli/Lisanslı Servis">$</span></h2>
|
|
911
1004
|
<div class="alert a-info" style="margin-top: 10px; padding: 10px 15px; font-size: 0.85em;"><strong>📌 Mitgliedschaft und API-Schlüssel:</strong> Zur Nutzung der Iyzico-Zahlungsinfrastruktur <a href="https://www.iyzico.com" style="color: var(--green); font-weight: bold;" target="_blank">iyzico.com</a> (live) oder <a href="https://sandbox-merchants.iyzipay.com/" style="color: var(--green); font-weight: bold;" target="_blank">sandbox.iyzipay.com</a> Sie müssen über (Test) ein Verkäuferkonto erstellen und Ihre API/Geheimschlüssel erhalten.</div>
|
|
912
1005
|
<div class="code-badge" style="margin-bottom: 15px; padding: 10px; background: rgba(0,0,0,0.2); border: 1px solid rgba(255,255,255,0.05); border-radius: 6px; font-family: monospace;">
|
package/core-stubs/docs/en.html
CHANGED
|
@@ -282,10 +282,13 @@
|
|
|
282
282
|
<a href="#cli-go">go</a>
|
|
283
283
|
<a href="#cli-remove">remove</a>
|
|
284
284
|
<a href="#cli-version">version</a>
|
|
285
|
-
<a href="#cli-
|
|
285
|
+
<a href="#cli-mode">mode</a>
|
|
286
|
+
<a href="#cli-serve">serve</a>
|
|
286
287
|
<a href="#cli-add">add</a>
|
|
287
288
|
<div class="sb-cat">Integrated Services</div>
|
|
288
|
-
<a href="#svc-
|
|
289
|
+
<a href="#svc-qrcode">QR Code</a>
|
|
290
|
+
<a href="#svc-phpmailer">PHPMailer (Mail)</a>
|
|
291
|
+
<a href="#svc-iyzico">Iyzico <span class="tag b-core" style="padding: 1px 5px; margin-left: 2px; font-weight: bold;" title="Paid/Licensed Service">$</span></a>
|
|
289
292
|
<a href="#svc-stripe">Stripe <span class="tag b-core" style="padding: 1px 5px; margin-left: 2px; font-weight: bold;" title="Paid/Licensed Service">$</span></a>
|
|
290
293
|
<a href="#svc-jwt">J.W.T.</a>
|
|
291
294
|
<a href="#svc-image">Image Processing</a>
|
|
@@ -843,7 +846,16 @@ artiframe> <span class="fn">go</span> <span class="st">back</span>
|
|
|
843
846
|
<pre><code>artiframe> <span class="fn">version</span> upgrade minor
|
|
844
847
|
<span class="cm">✔ Updated to Version 1.2.0 → 1.3.0.</span></code></pre>
|
|
845
848
|
</section>
|
|
846
|
-
<!--
|
|
849
|
+
<!-- mode -->
|
|
850
|
+
<section id="cli-mode">
|
|
851
|
+
<h2><code>mode</code> <span class="tag b-cli">CLI Command</span></h2>
|
|
852
|
+
<p>Allows you to change the project's operating mode (Development or Production) with a single command. This saves you from the hassle of manually opening and editing the <code>config/app-version.php</code> file.</p>
|
|
853
|
+
<pre><code>artiframe> <span class="fn">mode</span> <span class="st">1</span>
|
|
854
|
+
✅ Switched from Prod to Debug mode.</code></pre>
|
|
855
|
+
<p>You can use the <code>0</code> parameter to switch to the production release:</p>
|
|
856
|
+
<pre><code>artiframe> <span class="fn">mode</span> <span class="st">0</span></code></pre>
|
|
857
|
+
</section>
|
|
858
|
+
<!-- serve -->
|
|
847
859
|
<section id="cli-serve">
|
|
848
860
|
<h2><code>serve</code> <span class="tag b-cli">CLI Komutu</span></h2>
|
|
849
861
|
<p>Starts a local development server (localhost) to test the project. It launches your project in seconds and automatically opens it in your browser, without the need to install an additional web server (XAMPP, Nginx, etc.).</p>
|
|
@@ -866,9 +878,11 @@ artiframe> <span class="fn">go</span> <span class="st">back</span>
|
|
|
866
878
|
<tr><th>command</th><th>Composer Package</th><th>Generated Class File</th></tr>
|
|
867
879
|
</thead>
|
|
868
880
|
<tbody>
|
|
869
|
-
<tr><td><code>add
|
|
881
|
+
<tr><td><code>add phpmailer</code></td><td>phpmailer/phpmailer</td><td><span class="tag b-core">src/Service/Mailer.php</span></td></tr>
|
|
882
|
+
<tr><td><code>add iyzico</code></td><td>iyzipay/iyzipay-php</td><td><span class="tag b-core">src/Service/Iyzico.php</span></td></tr>
|
|
870
883
|
<tr><td><code>add stripe</code></td><td>stripe/stripe-php</td><td><span class="tag b-core">src/Service/Stripe.php</span></td></tr>
|
|
871
|
-
<tr><td><code>add
|
|
884
|
+
<tr><td><code>add qrcode</code></td><td>endroid/qr-code</td><td><span class="tag b-core">src/Service/QrCode.php</span></td></tr>
|
|
885
|
+
<tr><td><code>add jwt</code></td><td>firebase/php-jwt</td><td><span class="tag b-core">src/Auth/JwtAuth.php</span></td></tr>
|
|
872
886
|
<tr><td><code>add image</code></td><td>intervention/image</td><td><span class="tag b-core">src/Service/ImageProcessor.php</span></td></tr>
|
|
873
887
|
<tr><td><code>add s3</code></td><td>aws/aws-sdk-php</td><td><span class="tag b-core">src/Service/S3Storage.php</span></td></tr>
|
|
874
888
|
<tr><td><code>add sentry</code></td><td>sentry/sentry</td><td><span class="tag b-core">config/sentry.php</span></td></tr>
|
|
@@ -890,7 +904,7 @@ artiframe> <span class="fn">go</span> <span class="st">back</span>
|
|
|
890
904
|
<tr><td><code>add mpdf</code></td><td>mpdf/mpdf</td></tr>
|
|
891
905
|
<tr><td><code>add dompdf</code></td><td>dompdf/dompdf</td></tr>
|
|
892
906
|
<tr><td><code>add spreadsheet</code></td><td>phpoffice/phpspreadsheet</td></tr>
|
|
893
|
-
|
|
907
|
+
|
|
894
908
|
<tr><td><code>add guzzle</code></td><td>guzzlehttp/guzzle</td></tr>
|
|
895
909
|
<tr><td><code>add uuid</code></td><td>ramsey/uuid</td></tr>
|
|
896
910
|
<tr><td><code>add carbon</code></td><td>nesbot/carbon</td></tr>
|
|
@@ -906,7 +920,86 @@ artiframe> <span class="fn">go</span> <span class="st">back</span>
|
|
|
906
920
|
<section id="entegre-servisler">
|
|
907
921
|
<h2>Integrated Services (Wrapper) <span class="tag b-core">Stubs</span></h2>
|
|
908
922
|
<p>Instead of using popular packages directly, ArtiFrame <strong>pre-configured Wrapper</strong> It offers classes for your use.</p>
|
|
909
|
-
<div class="card" id="svc-
|
|
923
|
+
<div class="card" id="svc-qrcode">
|
|
924
|
+
<h2>QR Code</h2>
|
|
925
|
+
<div class="alert a-info" style="margin-top: 10px; padding: 10px 15px; font-size: 0.85em;"><strong>📌 Wrapper Class:</strong> When you run the <code>add qrcode</code> command, the <code>endroid/qr-code</code> library is installed and the <code>src/Service/QrCode.php</code> wrapper class is created.</div>
|
|
926
|
+
<p>A modern and fluent class that hides the complex object instantiation (Builder/Writer) processes of the Endroid QR Code library, allowing you to generate a QR code and embed a logo in a single line.</p>
|
|
927
|
+
|
|
928
|
+
<h3 style="margin-top:20px; margin-bottom:10px; font-size: 1.1em; color: var(--text-color);">Methods and Usage</h3>
|
|
929
|
+
<ul style="line-height: 1.6; margin-bottom: 20px;">
|
|
930
|
+
<li><code>->generate('Metin')</code> : Starts the chain by setting the text or URL to be converted to a QR code.</li>
|
|
931
|
+
<li><code>->size(300)</code> : Sets the width/height of the QR code in pixels (e.g. 300).</li>
|
|
932
|
+
<li><code>->margin(10)</code> : Sets the white margin around the QR code.</li>
|
|
933
|
+
<li><code>->color('#000000', '#ffffff')</code> : Sets the foreground (lines) and background colors as HEX codes (e.g. <code>#000000, #ffffff</code>).</li>
|
|
934
|
+
<li><code>->logo('/path/logo.png', 50, true)</code> : Embeds an image (logo) right in the center of the QR code. Takes the physical path, size, and whether to punch out the background.</li>
|
|
935
|
+
<li><code>->format('png')</code> : Sets the output format. <code>png</code> or <code>svg</code> are supported. Default: png.</li>
|
|
936
|
+
<li><code>->save('/path/save.png')</code> : Saves the generated QR code to a physical file on the server.</li>
|
|
937
|
+
<li><code>->base64()</code> : Returns the QR code as a base64 string so you can use it directly in an HTML <code><img src="..."></code> tag.</li>
|
|
938
|
+
<li><code>->output()</code> : Outputs the QR code directly to the browser with the appropriate HTTP headers.</li>
|
|
939
|
+
</ul>
|
|
940
|
+
|
|
941
|
+
<h3 style="margin-top:20px; margin-bottom:10px; font-size: 1.1em; color: var(--text-color);">Usage Examples</h3>
|
|
942
|
+
<pre><code><span class="kw">use</span> <span class="var">App\Service\QrCode</span>;
|
|
943
|
+
|
|
944
|
+
<span class="cm">// Örnek 1: Ekrana HTML Img olarak basma</span>
|
|
945
|
+
<span class="var">$base64</span> = <span class="var">QrCode</span>::generate(<span class="st">'https://artiframe.dev'</span>)
|
|
946
|
+
-><span class="fn">size</span>(400)
|
|
947
|
+
-><span class="fn">logo</span>(<span class="var">$_SERVER</span>[<span class="st">'DOCUMENT_ROOT'</span>] . <span class="st">'/assets/logo.png'</span>)
|
|
948
|
+
-><span class="fn">base64</span>();
|
|
949
|
+
|
|
950
|
+
<span class="kw">echo</span> <span class="st">'<img src="'</span> . <span class="var">$base64</span> . <span class="st">'" alt="QR">'</span>;
|
|
951
|
+
|
|
952
|
+
<span class="cm">// Örnek 2: Fiziksel PNG Olarak Kaydetme</span>
|
|
953
|
+
<span class="var">QrCode</span>::generate(<span class="st">'VCARD Bilgileri'</span>)
|
|
954
|
+
-><span class="fn">color</span>(<span class="st">'#ff0000'</span>, <span class="st">'#ffffff'</span>)
|
|
955
|
+
-><span class="fn">save</span>(<span class="st">'/temp/kullanici_karti.png'</span>);
|
|
956
|
+
|
|
957
|
+
<span class="cm">// Örnek 3: API Endpoint olarak resmi tarayıcıya basma</span>
|
|
958
|
+
<span class="var">QrCode</span>::generate(<span class="st">'https://artilingo.com'</span>)-><span class="fn">output</span>();</code></pre>
|
|
959
|
+
</div>
|
|
960
|
+
|
|
961
|
+
<div class="card" id="svc-phpmailer">
|
|
962
|
+
<h2>PHPMailer (Mail)</h2>
|
|
963
|
+
<div class="alert a-info" style="margin-top: 10px; padding: 10px 15px; font-size: 0.85em;"><strong>📌 Automatic .env Setup:</strong> When you run the <code>add phpmailer</code> command, SMTP settings are automatically added to your <code>.env</code> file and the <code>src/Service/Mailer.php</code> class is created.</div>
|
|
964
|
+
<p>A much more modern, fluent, and secure (CRLF protected) Wrapper class working on top of the PHPMailer library. All methods provided by the class are chainable.</p>
|
|
965
|
+
|
|
966
|
+
<h3 style="margin-top:20px; margin-bottom:10px; font-size: 1.1em; color: var(--text-color);">Methods and Usage</h3>
|
|
967
|
+
<ul style="line-height: 1.6; margin-bottom: 20px;">
|
|
968
|
+
<li><code>->to('mail@adres.com', 'İsim')</code> : Sets who the email will be sent to.</li>
|
|
969
|
+
<li><code>->cc('mail@adres.com')</code> : Adds Carbon Copy recipients.</li>
|
|
970
|
+
<li><code>->bcc('mail@adres.com')</code> : Adds Blind Carbon Copy recipients. Primary recipients cannot see these addresses.</li>
|
|
971
|
+
<li><code>->subject('Konu')</code> : Sets the subject (title) of the email.</li>
|
|
972
|
+
<li><code>->attach('/path/fatura.pdf', 'Isim.pdf')</code> : Adds a physical file from the server (or temp) as an attachment into the email.</li>
|
|
973
|
+
<li><code>->embedImage('/path/logo.png', 'logo_cid')</code> : Embeds an image into the email to be used in HTML (<code><img src="cid:logo_cid"></code>).</li>
|
|
974
|
+
<li><code>->html('HTML Kodu')</code> : Sets the HTML content of the email. Automatically creates a plain text (AltBody) version for security.</li>
|
|
975
|
+
<li><code>->text('Düz Metin')</code> : Used if you want to send the email strictly as plain text.</li>
|
|
976
|
+
<li><code>->send()</code> : Completes all chained operations and sends the email via SMTP. Throws an Exception if there is an error.</li>
|
|
977
|
+
</ul>
|
|
978
|
+
|
|
979
|
+
<h3 style="margin-top:20px; margin-bottom:10px; font-size: 1.1em; color: var(--text-color);">Advanced Example: PHP Template (View) and Dynamic File Attachment</h3>
|
|
980
|
+
<p>If you do not want to write the HTML content of the email directly in strings like spaghetti code, you can use <code>ob_start()</code> to include an external PHP template file (containing variables) and attach a dynamically generated PDF directly to the email:</p>
|
|
981
|
+
<pre><code><span class="kw">use</span> <span class="var">App\Service\Mailer</span>;
|
|
982
|
+
|
|
983
|
+
<span class="cm">// 1. Your dynamic data</span>
|
|
984
|
+
<span class="var">$siparisNo</span> = <span class="st">'#90210'</span>;
|
|
985
|
+
<span class="var">$pdfDosyasi</span> = <span class="var">$_SERVER</span>[<span class="st">'DOCUMENT_ROOT'</span>] . <span class="st">'/temp/fatura_90210.pdf'</span>;
|
|
986
|
+
|
|
987
|
+
<span class="cm">// 2. Loading HTML Template externally (Output Buffering)</span>
|
|
988
|
+
<span class="fn">ob_start</span>();
|
|
989
|
+
<span class="kw">require_once</span> <span class="var">$_SERVER</span>[<span class="st">'DOCUMENT_ROOT'</span>] . <span class="st">'/views/email/siparis.php'</span>;
|
|
990
|
+
<span class="var">$htmlIcerik</span> = <span class="fn">ob_get_clean</span>();
|
|
991
|
+
|
|
992
|
+
<span class="cm">// 3. Sending the Mail</span>
|
|
993
|
+
<span class="var">Mailer</span>::create()
|
|
994
|
+
-><span class="fn">to</span>(<span class="st">'musteri@mail.com'</span>, <span class="st">'Ahmet Yılmaz'</span>)
|
|
995
|
+
-><span class="fn">bcc</span>(<span class="st">'arsiv@sirket.com'</span>) <span class="cm">// Customer cannot see this</span>
|
|
996
|
+
-><span class="fn">subject</span>(<span class="st">'Siparişiniz Onaylandı: '</span> . <span class="var">$siparisNo</span>)
|
|
997
|
+
-><span class="fn">html</span>(<span class="var">$htmlIcerik</span>)
|
|
998
|
+
-><span class="fn">attach</span>(<span class="var">$pdfDosyasi</span>, <span class="st">'Siparis_Faturasi.pdf'</span>)
|
|
999
|
+
-><span class="fn">send</span>();</code></pre>
|
|
1000
|
+
</div>
|
|
1001
|
+
|
|
1002
|
+
<div class="card" id="svc-iyzico">
|
|
910
1003
|
<h2>Iyzico <span class="tag b-core" style="padding: 1px 5px; margin-left: 2px; font-weight: bold;" title="Paid/Licensed Service">$</span></h2>
|
|
911
1004
|
<div class="alert a-info" style="margin-top: 10px; padding: 10px 15px; font-size: 0.85em;"><strong>📌 Membership & API Keys:</strong> To use Iyzico payment infrastructure <a href="https://www.iyzico.com" style="color: var(--green); font-weight: bold;" target="_blank">iyzico.com</a> (live) or <a href="https://sandbox-merchants.iyzipay.com/" style="color: var(--green); font-weight: bold;" target="_blank">sandbox.iyzipay.com</a> You need to create a seller account via (test) and get your API/Secret keys.</div>
|
|
912
1005
|
<div class="code-badge" style="margin-bottom: 15px; padding: 10px; background: rgba(0,0,0,0.2); border: 1px solid rgba(255,255,255,0.05); border-radius: 6px; font-family: monospace;">
|
package/core-stubs/docs/es.html
CHANGED
|
@@ -282,10 +282,13 @@
|
|
|
282
282
|
<a href="#cli-go">go</a>
|
|
283
283
|
<a href="#cli-remove">remove</a>
|
|
284
284
|
<a href="#cli-version">version</a>
|
|
285
|
-
<a href="#cli-
|
|
285
|
+
<a href="#cli-mode">mode</a>
|
|
286
|
+
<a href="#cli-serve">serve</a>
|
|
286
287
|
<a href="#cli-add">add</a>
|
|
287
288
|
<div class="sb-cat">Servicios Integrados</div>
|
|
288
|
-
<a href="#svc-
|
|
289
|
+
<a href="#svc-qrcode">QR Code</a>
|
|
290
|
+
<a href="#svc-phpmailer">PHPMailer (Mail)</a>
|
|
291
|
+
<a href="#svc-iyzico">Iyzico <span class="tag b-core" style="padding: 1px 5px; margin-left: 2px; font-weight: bold;" title="Ücretli/Lisanslı Servis">$</span></a>
|
|
289
292
|
<a href="#svc-stripe">Stripe <span class="tag b-core" style="padding: 1px 5px; margin-left: 2px; font-weight: bold;" title="Ücretli/Lisanslı Servis">$</span></a>
|
|
290
293
|
<a href="#svc-jwt">JWT</a>
|
|
291
294
|
<a href="#svc-image">Image Processing</a>
|
|
@@ -843,7 +846,16 @@ artiframe> <span class="fn">go</span> <span class="st">back</span>
|
|
|
843
846
|
<pre><code>artiframe> <span class="fn">version</span> upgrade minor
|
|
844
847
|
<span class="cm">✔ Sürüm 1.2.0 → 1.3.0 olarak güncellendi.</span></code></pre>
|
|
845
848
|
</section>
|
|
846
|
-
<!--
|
|
849
|
+
<!-- mode -->
|
|
850
|
+
<section id="cli-mode">
|
|
851
|
+
<h2><code>mode</code> <span class="tag b-cli">Comando CLI</span></h2>
|
|
852
|
+
<p>Le permite cambiar el modo de funcionamiento del proyecto (Desarrollo o Producción) con un solo comando. Esto le ahorra la molestia de abrir y editar manualmente el archivo <code>config/app-version.php</code>.</p>
|
|
853
|
+
<pre><code>artiframe> <span class="fn">mode</span> <span class="st">1</span>
|
|
854
|
+
✅ Cambiado del modo Prod al modo Debug.</code></pre>
|
|
855
|
+
<p>Puede utilizar el parámetro <code>0</code> para cambiar al lanzamiento de producción:</p>
|
|
856
|
+
<pre><code>artiframe> <span class="fn">mode</span> <span class="st">0</span></code></pre>
|
|
857
|
+
</section>
|
|
858
|
+
<!-- serve -->
|
|
847
859
|
<section id="cli-serve">
|
|
848
860
|
<h2><code>serve</code> <span class="tag b-cli">CLI Komutu</span></h2>
|
|
849
861
|
<p>Inicia un servidor de desarrollo local (localhost) para probar el proyecto. Lanza tu proyecto en segundos y lo abre automáticamente en tu navegador, sin necesidad de instalar un servidor web adicional (XAMPP, Nginx, etc.).</p>
|
|
@@ -866,9 +878,11 @@ artiframe> <span class="fn">go</span> <span class="st">back</span>
|
|
|
866
878
|
<tr><th>dominio</th><th>Paquete de compositor</th><th>Archivo de clase generado</th></tr>
|
|
867
879
|
</thead>
|
|
868
880
|
<tbody>
|
|
869
|
-
<tr><td><code>add
|
|
881
|
+
<tr><td><code>add phpmailer</code></td><td>phpmailer/phpmailer</td><td><span class="tag b-core">src/Service/Mailer.php</span></td></tr>
|
|
882
|
+
<tr><td><code>add iyzico</code></td><td>iyzipay/iyzipay-php</td><td><span class="tag b-core">src/Service/Iyzico.php</span></td></tr>
|
|
870
883
|
<tr><td><code>add stripe</code></td><td>Stripe/Stripe-php</td><td><span class="tag b-core">src/Service/Stripe.php</span></td></tr>
|
|
871
|
-
<tr><td><code>add
|
|
884
|
+
<tr><td><code>add qrcode</code></td><td>endroid/qr-code</td><td><span class="tag b-core">src/Service/QrCode.php</span></td></tr>
|
|
885
|
+
<tr><td><code>add jwt</code></td><td>base de fuego/php-jwt</td><td><span class="tag b-core">src/Auth/JwtAuth.php</span></td></tr>
|
|
872
886
|
<tr><td><code>add image</code></td><td>intervención/imagen</td><td><span class="tag b-core">src/Service/ImageProcessor.php</span></td></tr>
|
|
873
887
|
<tr><td><code>add s3</code></td><td>aws/aws-sdk-php</td><td><span class="tag b-core">src/Service/S3Storage.php</span></td></tr>
|
|
874
888
|
<tr><td><code>add sentry</code></td><td>Sentry/Sentry</td><td><span class="tag b-core">config/sentry.php</span></td></tr>
|
|
@@ -906,7 +920,86 @@ artiframe> <span class="fn">go</span> <span class="st">back</span>
|
|
|
906
920
|
<section id="entegre-servisler">
|
|
907
921
|
<h2>Servicios Integrados (Wrapper) <span class="tag b-core">Stubs</span></h2>
|
|
908
922
|
<p>En lugar de utilizar paquetes populares directamente, ArtiFrame <strong>Envoltorio preconfigurado</strong> Ofrece clases para su uso.</p>
|
|
909
|
-
<div class="card" id="svc-
|
|
923
|
+
<div class="card" id="svc-qrcode">
|
|
924
|
+
<h2>QR Code</h2>
|
|
925
|
+
<div class="alert a-info" style="margin-top: 10px; padding: 10px 15px; font-size: 0.85em;"><strong>📌 Clase contenedora (Wrapper):</strong> Al ejecutar <code>add qrcode</code>, se crea la clase <code>src/Service/QrCode.php</code>.</div>
|
|
926
|
+
<p>Una clase fluida que oculta el complejo proceso de creación de instancias de la biblioteca Endroid QR Code.</p>
|
|
927
|
+
|
|
928
|
+
<h3 style="margin-top:20px; margin-bottom:10px; font-size: 1.1em; color: var(--text-color);">Métodos</h3>
|
|
929
|
+
<ul style="line-height: 1.6; margin-bottom: 20px;">
|
|
930
|
+
<li><code>->generate('Metin')</code> : Inicia la cadena.</li>
|
|
931
|
+
<li><code>->size(300)</code> : Tamaño en píxeles.</li>
|
|
932
|
+
<li><code>->margin(10)</code> : Margen blanco.</li>
|
|
933
|
+
<li><code>->color('#000000', '#ffffff')</code> : Colores en formato HEX.</li>
|
|
934
|
+
<li><code>->logo('/path/logo.png', 50, true)</code> : Incrusta un logotipo.</li>
|
|
935
|
+
<li><code>->format('png')</code> : png o svg.</li>
|
|
936
|
+
<li><code>->save('/path/save.png')</code> : Guarda el archivo.</li>
|
|
937
|
+
<li><code>->base64()</code> : Devuelve en base64.</li>
|
|
938
|
+
<li><code>->output()</code> : Salida directa al navegador.</li>
|
|
939
|
+
</ul>
|
|
940
|
+
|
|
941
|
+
<h3 style="margin-top:20px; margin-bottom:10px; font-size: 1.1em; color: var(--text-color);">Ejemplos</h3>
|
|
942
|
+
<pre><code><span class="kw">use</span> <span class="var">App\Service\QrCode</span>;
|
|
943
|
+
|
|
944
|
+
<span class="cm">// Örnek 1: Ekrana HTML Img olarak basma</span>
|
|
945
|
+
<span class="var">$base64</span> = <span class="var">QrCode</span>::generate(<span class="st">'https://artiframe.dev'</span>)
|
|
946
|
+
-><span class="fn">size</span>(400)
|
|
947
|
+
-><span class="fn">logo</span>(<span class="var">$_SERVER</span>[<span class="st">'DOCUMENT_ROOT'</span>] . <span class="st">'/assets/logo.png'</span>)
|
|
948
|
+
-><span class="fn">base64</span>();
|
|
949
|
+
|
|
950
|
+
<span class="kw">echo</span> <span class="st">'<img src="'</span> . <span class="var">$base64</span> . <span class="st">'" alt="QR">'</span>;
|
|
951
|
+
|
|
952
|
+
<span class="cm">// Örnek 2: Fiziksel PNG Olarak Kaydetme</span>
|
|
953
|
+
<span class="var">QrCode</span>::generate(<span class="st">'VCARD Bilgileri'</span>)
|
|
954
|
+
-><span class="fn">color</span>(<span class="st">'#ff0000'</span>, <span class="st">'#ffffff'</span>)
|
|
955
|
+
-><span class="fn">save</span>(<span class="st">'/temp/kullanici_karti.png'</span>);
|
|
956
|
+
|
|
957
|
+
<span class="cm">// Örnek 3: API Endpoint olarak resmi tarayıcıya basma</span>
|
|
958
|
+
<span class="var">QrCode</span>::generate(<span class="st">'https://artilingo.com'</span>)-><span class="fn">output</span>();</code></pre>
|
|
959
|
+
</div>
|
|
960
|
+
|
|
961
|
+
<div class="card" id="svc-phpmailer">
|
|
962
|
+
<h2>PHPMailer (Mail)</h2>
|
|
963
|
+
<div class="alert a-info" style="margin-top: 10px; padding: 10px 15px; font-size: 0.85em;"><strong>📌 Configuración automática de .env:</strong> Cuando ejecuta el comando <code>add phpmailer</code>, la configuración SMTP se agrega automáticamente a su archivo <code>.env</code> y se crea la clase <code>src/Service/Mailer.php</code>.</div>
|
|
964
|
+
<p>Una clase contenedora (Wrapper) mucho más moderna, fluida y segura que funciona sobre la biblioteca PHPMailer. Todos los métodos de la clase se pueden encadenar (chainable).</p>
|
|
965
|
+
|
|
966
|
+
<h3 style="margin-top:20px; margin-bottom:10px; font-size: 1.1em; color: var(--text-color);">Métodos y uso</h3>
|
|
967
|
+
<ul style="line-height: 1.6; margin-bottom: 20px;">
|
|
968
|
+
<li><code>->to('mail@adres.com', 'İsim')</code> : Establece a quién se enviará el correo electrónico.</li>
|
|
969
|
+
<li><code>->cc('mail@adres.com')</code> : Agrega destinatarios de copia de carbón (CC).</li>
|
|
970
|
+
<li><code>->bcc('mail@adres.com')</code> : Agrega destinatarios de copia oculta (BCC). Los destinatarios principales no pueden ver estas direcciones.</li>
|
|
971
|
+
<li><code>->subject('Konu')</code> : Establece el asunto (título) del correo electrónico.</li>
|
|
972
|
+
<li><code>->attach('/path/fatura.pdf', 'Isim.pdf')</code> : Agrega un archivo físico del servidor (o temporal) como archivo adjunto en el correo.</li>
|
|
973
|
+
<li><code>->embedImage('/path/logo.png', 'logo_cid')</code> : Incrusta una imagen en el correo electrónico para ser utilizada en HTML (<code><img src="cid:logo_cid"></code>).</li>
|
|
974
|
+
<li><code>->html('HTML Kodu')</code> : Establece el contenido HTML. Crea automáticamente una versión de texto sin formato (AltBody).</li>
|
|
975
|
+
<li><code>->text('Düz Metin')</code> : Se usa si desea enviar el correo electrónico estrictamente como texto sin formato.</li>
|
|
976
|
+
<li><code>->send()</code> : Completa todas las operaciones encadenadas y envía el correo electrónico a través de SMTP. Lanza una Excepción si hay un error.</li>
|
|
977
|
+
</ul>
|
|
978
|
+
|
|
979
|
+
<h3 style="margin-top:20px; margin-bottom:10px; font-size: 1.1em; color: var(--text-color);">Ejemplo avanzado: Plantilla PHP (View) y archivo adjunto dinámico</h3>
|
|
980
|
+
<p>Si no desea escribir el contenido HTML directamente en cadenas, puede usar <code>ob_start()</code> para incluir un archivo de plantilla PHP externo (que contenga variables) y adjuntar un PDF:</p>
|
|
981
|
+
<pre><code><span class="kw">use</span> <span class="var">App\Service\Mailer</span>;
|
|
982
|
+
|
|
983
|
+
<span class="cm">// 1. Tus datos dinámicos</span>
|
|
984
|
+
<span class="var">$siparisNo</span> = <span class="st">'#90210'</span>;
|
|
985
|
+
<span class="var">$pdfDosyasi</span> = <span class="var">$_SERVER</span>[<span class="st">'DOCUMENT_ROOT'</span>] . <span class="st">'/temp/fatura_90210.pdf'</span>;
|
|
986
|
+
|
|
987
|
+
<span class="cm">// 2. Cargar plantilla HTML externamente (Output Buffering)</span>
|
|
988
|
+
<span class="fn">ob_start</span>();
|
|
989
|
+
<span class="kw">require_once</span> <span class="var">$_SERVER</span>[<span class="st">'DOCUMENT_ROOT'</span>] . <span class="st">'/views/email/siparis.php'</span>;
|
|
990
|
+
<span class="var">$htmlIcerik</span> = <span class="fn">ob_get_clean</span>();
|
|
991
|
+
|
|
992
|
+
<span class="cm">// 3. Enviar el correo</span>
|
|
993
|
+
<span class="var">Mailer</span>::create()
|
|
994
|
+
-><span class="fn">to</span>(<span class="st">'musteri@mail.com'</span>, <span class="st">'Ahmet Yılmaz'</span>)
|
|
995
|
+
-><span class="fn">bcc</span>(<span class="st">'arsiv@sirket.com'</span>) <span class="cm">// El cliente no puede ver esto</span>
|
|
996
|
+
-><span class="fn">subject</span>(<span class="st">'Siparişiniz Onaylandı: '</span> . <span class="var">$siparisNo</span>)
|
|
997
|
+
-><span class="fn">html</span>(<span class="var">$htmlIcerik</span>)
|
|
998
|
+
-><span class="fn">attach</span>(<span class="var">$pdfDosyasi</span>, <span class="st">'Siparis_Faturasi.pdf'</span>)
|
|
999
|
+
-><span class="fn">send</span>();</code></pre>
|
|
1000
|
+
</div>
|
|
1001
|
+
|
|
1002
|
+
<div class="card" id="svc-iyzico">
|
|
910
1003
|
<h2>Iyzico <span class="tag b-core" style="padding: 1px 5px; margin-left: 2px; font-weight: bold;" title="Ücretli/Lisanslı Servis">$</span></h2>
|
|
911
1004
|
<div class="alert a-info" style="margin-top: 10px; padding: 10px 15px; font-size: 0.85em;"><strong>📌 Membresía y claves API:</strong> Para utilizar la infraestructura de pagos de Iyzico <a href="https://www.iyzico.com" style="color: var(--green); font-weight: bold;" target="_blank">iyzico.com</a> (en vivo) o <a href="https://sandbox-merchants.iyzipay.com/" style="color: var(--green); font-weight: bold;" target="_blank">sandbox.iyzipay.com</a> Debe crear una cuenta de vendedor a través de (prueba) y obtener sus claves API/secretas.</div>
|
|
912
1005
|
<div class="code-badge" style="margin-bottom: 15px; padding: 10px; background: rgba(0,0,0,0.2); border: 1px solid rgba(255,255,255,0.05); border-radius: 6px; font-family: monospace;">
|