GuillaumeB-AE Posted December 29, 2021 Share Posted December 29, 2021 Bonjour, Je souhaite pour un client utiliser un appel (en ajax) à une API externe à Prestashop (prestataire externe). Pour ce faire, j'ai créé : un nouveau fichier php (assembly_check.php) dans le dossier /api/ du serveur (faisant appel à l'API externe) un champ input sur la page produit pour demander un code postal (voir code numéro 1) conditionné à une valeur (montage dans mon cas) un appel Ajax lors de la sortie du champ input (fonction "blur" du Javascript) précédemment cité (voir code numéro 2) Code numéro 1 : {if $montage != null} <hr> <h5> NOUVEAU : Simplifiez-vous la vie ! </h5> <p> <b>{$montage.name}</b><br> par un expert certifié </p> <p> Veuillez indiquer votre code postal afin de vérifier si nous avons des Experts disponibles dans votre ville pour réaliser ce service : </p> <p> <input type="text" data-offerId="{$montage.reference}" id="cp_assembly_input" name="cp_assembly" placeholder="Code postal" class="input-group form-control" /> </p> <div class="product-price"> <div class="current-price"> {$montage.price}€ </div> </div> <button class="btn btn-secondary" id="accessorie_btn_assembly" data-toggle="modal" data-target="#assembly-modal" disabled> Ajouter le service </button> <hr> {/if} Code numéro 2 : $('button#accessorie_btn_assembly').on('click', function(e) { e.preventDefault(); }); $('input#cp_assembly_input').blur(function(e) { var params = { offerId: $(this).data('offerid'), zipCode: $(this).val(), 'client_id': 1, }; console.log(params); $.ajax({ type: "POST", url: "/api/assembly_check.php&ws_key=XXX_ICI_SE_TROUVE_MA_CLE_API_PRESTASHOP_XXX", data: params, success: function (data) { console.log(data); alert(data); }, error: function (data) { console.log(data); alert('error'); } }); }).keyup(function(e) { if (/\D/g.test(this.value)) { this.value = this.value.replace(/\D/g, ''); } }); En gros, toute la partie affichage du champ + gestion au "blur" de l'appel Ajax fonctionne, j'ai bien un appel qui va se faire, par contre, j'ai un message d'erreur car je n'utilise pas les "fonctions" des webservices prestashop (products, orders...) et il me renvoie que mon fichier n'existe pas. Voici le retour XML (en réponse) que j'ai lorsque mon Ajax de type POST s’exécute : <?xml version="1.0" encoding="UTF-8"?> <prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> <errors> <error> <code><![CDATA[27]]></code> <message><![CDATA[Resource of type "assembly_check.php" does not exists. Did you mean: "supply_orders"? The full list is: "addresses", "attachments", "carriers", "cart_rules", "carts", "categories", "combinations", "configurations", "contacts", "content_management_system", "countries", "currencies", "customer_messages", "customer_threads", "customers", "customizations", "deliveries", "employees", "groups", "guests", "image_types", "images", "languages", "manufacturers", "messages", "order_carriers", "order_cart_rules", "order_details", "order_histories", "order_invoices", "order_payments", "order_slip", "order_states", "orders", "price_ranges", "product_customization_fields", "product_feature_values", "product_features", "product_option_values", "product_options", "product_suppliers", "products", "search", "shop_groups", "shop_urls", "shops", "specific_price_rules", "specific_prices", "states", "stock_availables", "stock_movement_reasons", "stock_movements", "stocks", "stores", "suppliers", "supply_order_details", "supply_order_histories", "supply_order_receipt_histories", "supply_order_states", "supply_orders", "tags", "tax_rule_groups", "tax_rules", "taxes", "translated_configurations", "warehouse_product_locations", "warehouses", "weight_ranges", "zones"]]></message> </error> </errors> </prestashop> Ma question est donc la suivante : Quote Comment puis-je créer un nouveau webservice dans ce dossier /api/ de Prestashop et y faire appel en Ajax pour appeler une API externe ? Merci d'avance. Cordialement, Guillaume BOUAUD Link to comment Share on other sites More sharing options...
GuillaumeB-AE Posted January 7, 2022 Author Share Posted January 7, 2022 Bonjour, Quelqu'un a déjà rencontré ce problème et trouvé une solution ? Merci d'avance. Cordialement, Guillaume BOUAUD Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now