Envoyer le formulaire via cURL et rediriger le navigateur vers PayPal
Je suis le développement d'un site où les clients ont plusieurs options de paiement, y compris les Paiements par PayPal Standard. Depuis que je suis la collecte d'une quantité considérable de données sur le client, j'aimerais traiter le formulaire sur mon serveur avant l'envoi à l'utilisateur pour le serveur de PayPal. Une option consiste à concaténer les données dans une seule chaîne, affecter la chaîne de la custom
domaine, et de les traiter ensuite dans l'IPN de réponse, mais je trouve cela très peu élégante solution. Au lieu de cela, après la collecte des données de l'utilisateur, je suis d'essayer d'utiliser cURL pour soumettre une norme HTML PayPal formulaire. Comment puis-je rediriger l'utilisateur vers PayPal pour effectuer le processus de commande?
//Process PayPal payment
if ($method == 'PayPal') {
//Prepare POST data
$query = array();
$query['notify_url'] = 'http://example.com/ipn';
$query['cmd'] = '_cart';
$query['upload'] = '1';
$query['business'] = '[email protected]';
$query['address_override'] = '1';
$query['first_name'] = $first_name;
$query['last_name'] = $last_name;
$query['email'] = $email;
$query['address1'] = $ship_to_address;
$query['city'] = $ship_to_city;
$query['state'] = $ship_to_state;
$query['zip'] = $ship_to_zip;
$query['item_name_'.$i] = $item['description'];
$query['quantity_'.$i] = $item['quantity'];
$query['amount_'.$i] = $item['info']['price'];
//Prepare query string
$query_string = '';
foreach ($query as $key=>$value) {
$query_string .= $key.'='.urlencode($value).'&';
}
$query_string = rtrim($query_string, '&');
//Open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, 'https://www.paypal.com/cgi-bin/webscr');
curl_setopt($ch,CURLOPT_POST, count($query));
curl_setopt($ch,CURLOPT_POSTFIELDS, $query_string);
//Execute post
$result = curl_exec($ch);
//Close connection
curl_close($ch);
}
source d'informationauteur David Jones
Vous devez vous connecter pour publier un commentaire.
Vous devez rediriger l'utilisateur avec le php
header
fonction et envoyer le vars OBTENEZ pas le POSTE.Plutôt que d'essayer d'afficher toutes les données à PayPal et à l'arrière, vous devez conserver les données sur votre serveur et envoyer seulement un jeton d'identification. Toutes les données que vous envoyez sur le site PayPal (via le navigateur de l'utilisateur) peuvent être interceptées et modifiées. C'est un sérieux risque de sécurité.
Si vous n'envoyez que le jeton n'est pas l'occasion pour les manipulations.
Lire l'PayPal spec, il a des lignes directrices sur la façon de mettre en œuvre ces choses.
Vous doit utilisation IPN ou à un post-traitement parce que PayPal est le seul qui sait si un paiement a été effectué. Ne pas confiance à toutes les données que vous obtenez de l'utilisateur.
faire curl il fera à la fin des appels dans le backend côté , il ne reflète pas sur le frontend comportement .
vous avez à faire un formulaire avec un champ caché et javascript pour auto soumettez le formulaire, une fois la page chargée .