نسخهای که کاملاً آماده استفاده باشد، در یک فایل واحد، بدون نیاز به تغییر ساختار فولدر، ساخته شده و آماده دانلود و اجراست.
این فایل:
- فید ترب تولید میکند
- فید گوگل تولید میکند
- کش هوشمند دارد
- به ترب آپلود میکند
- گوگل را پینگ میکند
- لاگگیری کامل دارد
- فقط کافی است در یک فایل با نام feed.php قرار دهید و در هاست آپلود کنید
در پایین، *نسخه کامل نهایی* قرار دارد.
-----------------------------------------------------
فایل نهایی آماده اجرا — feed.php
-----------------------------------------------------
آن را کامل کپی کنید و در یک فایل با نام:
feed.php
ذخیره کنید:
`php
createElement($tag);
$el->appendChild($dom->createTextNode($value));
$parent->appendChild($el);
}
// =====================================================
// ساخت فید مخصوص ترب
// =====================================================
$dom_t = new DOMDocument("1.0", "UTF-8");
$dom_t->formatOutput = true;
$root_t = $dom_t->createElement("products");
foreach ($products as $p) {
if (($p['status'] ?? "") !== "active") continue;
if (($p['stock'] ?? 0) <= 0) continue;
$item = $dom_t->createElement("product");
xml_add($dom_t, $item, "id", $p['id']);
xml_add($dom_t, $item, "name", $p['title']);
xml_add($dom_t, $item, "price", $p['price']);
xml_add($dom_t, $item, "brand", $p['brand']);
xml_add($dom_t, $item, "category", $p['category']);
xml_add($dom_t, $item, "url", $p['link']);
xml_add($dom_t, $item, "image", $p['image']);
xml_add($dom_t, $item, "availability", "instock");
$root_t->appendChild($item);
}
$dom_t->appendChild($root_t);
$dom_t->save($torob_feed_file);
log_msg("INFO", "Torob feed generated.");
// =====================================================
// ساخت فید گوگل Merchant Center
// =====================================================
$dom_g = new DOMDocument("1.0", "UTF-8");
$dom_g->formatOutput = true;
$rss = $dom_g->createElement("rss");
$rss->setAttribute("version", "2.0");
$rss->setAttribute("xmlns:g", "http://base.google.com/ns/1.0");
$channel = $dom_g->createElement("channel");
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
define('TOROB_PUBLIC_KEY', 'MCowBQYDK2VwAyEAt6Mu4T0pBORY11W+QeM35UsmLO3vsf+6yKpFDEImFk0=');
define('TOROB_PUBLIC_KEY_SEED', base64_encode(substr(base64_decode(TOROB_PUBLIC_KEY), -32)));
function verify($jwt): object {
// exp is checked by library but we should check aud manually
$decoded = JWT::decode($jwt, new Key(TOROB_PUBLIC_KEY_SEED, 'EdDSA'));
if ($decoded->aud !== "[expected_aud_value]") { // Replace with your API hostname
throw new \Exception("Invalid audience");
}
return $decoded;
}import io.jsonwebtoken.*;
import io.jsonwebtoken.io.Decoders;
import java.security.*;
import java.security.spec.*;
public class JwtVerifier {
private final JwtParser parser;
public JwtVerifier() throws NoSuchAlgorithmException, InvalidKeySpecException {
final var publicKeyString = "MCowBQYDK2VwAyEAt6Mu4T0pBORY11W+QeM35UsmLO3vsf+6yKpFDEImFk0=";
KeySpec keySpec = new X509EncodedKeySpec(Decoders.BASE64.decode(publicKeyString));
PublicKey publicKey = KeyFactory.getInstance("EdDSA").generatePublic(keySpec);
// aud and exp fields are checked by library
parser = Jwts.parser()
.requireAudience("[expected_aud_value]") // Replace with your API hostname
.verifyWith(publicKey)
.build();
}
public Jws
🎁 کد تخفیف ویژه اولین خرید: naniwa | ارسال سریع به سراسر کشور 🚀.