نسخه‌ای که کاملاً آماده استفاده باشد، در یک فایل واحد، بدون نیاز به تغییر ساختار فولدر، ساخته شده و آماده دانلود و اجراست. این فایل: - فید ترب تولید می‌کند - فید گوگل تولید می‌کند - کش هوشمند دارد - به ترب آپلود می‌کند - گوگل را پینگ می‌کند - لاگ‌گیری کامل دارد - فقط کافی است در یک فایل با نام 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 verifyToken(String token) { return parser.parseSignedClaims(token); } }{ "header": {"alg": "EdDSA", "typ": "JWT", "v": 1}, "payload": {"aud": "api.example.com", "exp": 1730206744, "nbf": 1730206000} }-----BEGIN PUBLIC KEY----- MCowBQYDK2VwAyEAt6Mu4T0pBORY11W+QeM35UsmLO3vsf+6yKpFDEImFk0= -----END PUBLIC KEY-----
جستجو در محصولات
کالایی در این صفحه موجود نیست
    پروفایلسبد خریددسته‌بندیخانه