Sur mon site Web, je soumets un formulaire html à un site de paiement (webmasterchecks.com) et le site me répond par une réponse XML. La réponse XML est affichée sur un lien externe (https://api.webmasterchecks.com/payments/add) après la soumission normale du formulaire (en cliquant sur le bouton Soumettre). Je veux lire la réponse XML et mettre à jour ma base de données. Mon langage de codage est PHP.Comment lire la réponse XML d'un autre site après la soumission d'un formulaire html
formulaire HTML:
<form name="payment_form" action="https://api.webmasterchecks.com/payments/add" method="post">
<input type="text" name="client_id" value="****"></input>
<input type="text" name="akey" value="**********"></input>
<input type="text" name="method_id" value="2"></input>
<input type="text" name="payee" value="ABCD EFGH"></input>
<input type="text" name="amount" value="1.00"></input>
<input type="text" name="postage_id" value="6"></input>
<input type="text" name="reference" value="Payment"></input>
<input type="text" name="street_addr" value="51 ABCD"></input>
<input type="text" name="city" value="XYZ"></input>
<input type="text" name="state" value="NJ"></input>
<input type="text" name="country" value="United States"></input>
<input type="text" name="zip" value="01544"></input>
<input type="submit" name="submit" value="submit"></input>
</form>
j'ai essayé de soumettre le formulaire à l'aide post jquery et obtenir les données JSON. Mais le formulaire n'est pas soumis (ne pas avoir d'erreur dans la console). Le code est donné ci-dessous. J'ai également essayé d'utiliser curl, mais n'y ai pas réussi.
$(function(){
$("form[name=payment_form]").submit(function(){
$.post($(this).attr("action"), $(this).serialize(), function(jsonData){
alert(jsonData);
}, "json");
return false;
});
});
Son affichage de la clé de l'API est invalide, car en utilisant le formulaire html ci-dessus, j'obtiens une réponse. Le code CURL est donné ci-dessous.
$client_id = "****";
$api_key = "*****************************";
$output_url = "https://api.webmasterchecks.com/payments/add";
$output_transaction = "client_id=$client_id&";
$output_transaction .= "akey=$api_key&";
$output_transaction .= "method_id=2&";
$output_transaction .= "payee=ABCD EFGH&";
$output_transaction .= "amount=1.00&";
$output_transaction .= "postage_id=6&";
$output_transaction .= "reference=Payment&";
$output_transaction .= "street_addr=FGHFHGFG&";
$output_transaction .= "city=JHGJHG&";
$output_transaction .= "state=NJ&";
$output_transaction .= "country=United States&";
$output_transaction .= "zip=54545454";
ob_start();
$ch = curl_init ($output_url);
curl_setopt ($ch, CURLOPT_VERBOSE, 1);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $output_transaction);
curl_exec ($ch);
curl_close ($ch);
$process_result = ob_get_contents();
ob_end_clean();
Comment puis-je mettre à jour ma base de données en utilisant la réponse XML?
Merci d'avance.
EDIT
Ma clé api contient peu plus "+" signe là-dessus. Un exemple de format de clé API est donné ci-dessous.
q5Un5ObLZs2ovY2COW + LvHzEVdUy0kR3u6dPwh/p + wzlbh80vONBbo + otLpBwPqnvP/VjhglfFos51sLFDpUHi + 6GnVbLtR3ATjSz9trGoKLFgrK/ostPUG4t9XV1EdS10JzVZFscIxUu2LVmJN9NVpCgaD9NaA
il me semble que vous définissez la mauvaise forme: valeur d'action, et essayer d'ajaxsubmit à un serveur distant (ce qui n'est pas autorisé) au lieu d'interroger votre script php curl – Valerij
Votre problème est-il l'envoi de la demande à l'API ou l'analyse XML réponse de l'API? – rlcabral
@ ricabral: Utilisation de la soumission de formulaire normal (En cliquant sur le bouton "Envoyer"), comment puis-je analyser la réponse XML d'un autre site Web? J'essaie de le faire. – Debashis