Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Generare id ordine con ajax in Express Checkout Paypal

    Buona sera, sto cercando di utilizzare l'express Checkout di Paypal ma, prima di inviare il pagamento, ho la necessità di creare l'ID ordine e inviarlo insieme al costo.
    Non sto riuscendo a venirne a capo. Di seguito il codice fino a questo momento.

    codice:
        paypal.Button.render({
            env: 'sandbox', // sandbox | production
            https://developer.paypal.com/developer/applications/create
            client: {
                sandbox:    '....................',
                production: '....................'
            },
    
    
            commit: true,
            payment: function(data, actions) {              
            jQuery.ajax({
               type: "POST",
               url: "form.php",
               data: $("#contact-form").serialize() + "&payby=paypal", // serializes the form's elements. sella | paypal
               success: function(data){
                   registrationId: data
               }
             });
    
    
                return actions.payment.create({
                    payment: {
                        transactions: [
                            {
                                amount: { total: '9.01', currency: 'EUR' },
                                item_list: {
                                    items: [
                                        {
                                        name: 'hat',
                                        description: 'Brown hat.',
                                        quantity: '1',
                                        price: '9.01',
                                        currency: 'EUR',
                                        sku: registrationId
                                        }
                                    ]
                                }
                            }
                        ]
                    }
                });
    
    
            },
    
    
            onAuthorize: function(data, actions) {
    
    
                return actions.payment.execute().then(function() {
                    window.alert('Payment Complete!');
                    location.href = '/shop/checkout/mode/4';
                });
            }
        }, '#paypal-button-container');
    ---------------------------
    danielix05

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    Ciao, se ti riferisci al registrationID basta che sposti tutto il blocco di return.payment all'interno del success di jquery ajax. Se questo dato è obbligatorio per continuare per forza di cose dovrai attendere la risposta positiva.
    Le chiamate in ajax sono asyncrone ovviamente e quindi il tempo di risposta non è come aspettato ma variabile. Il resto del codice che segue viene eseguito in parallelo senza l'attesa del risultato eseguito con ajax.

  3. #3

    grazie m4rko80

    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    Ciao, se ti riferisci al registrationID basta che sposti tutto il blocco di return.payment all'interno del success di jquery ajax. Se questo dato è obbligatorio per continuare per forza di cose dovrai attendere la risposta positiva.
    Le chiamate in ajax sono asyncrone ovviamente e quindi il tempo di risposta non è come aspettato ma variabile. Il resto del codice che segue viene eseguito in parallelo senza l'attesa del risultato eseguito con ajax.
    ma in questo modo sarà possibile passare a Paypal un id generato prima con ajax?
    Perché altrimenti non saprei come capire (alla risposta ipn) chi ha pagato cosa.
    ---------------------------
    danielix05

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    Non ho mai usato le api di Paypal, ma da quel che intuisco dal codice, al click del button viene richimata la funzione actions.payment.create() di paypal la quale deve ritornare ciò che è stato creato al suo interno.
    Come dicevo prima ser per ID intendi appunto quello che assegni al paramero "sku" negli items, come ho indicato dovrebbe funzionare (presumo tu posso vedere la chiamata o loggare i dati in console).
    Non conosco la libreria e non so se con una chimata ajax al suo interno qualcosa può non andare a buon fine.
    Così su due piedi le soluzioni sono quella che ti ho proposto, oppure mettere tutta la parte di Paypal all'interno della risposta della chiamata ajax.

  5. #5
    niente ancora, ho provato come consigliavi di mettere tutto nel blocco success ma il processo di pagamento non si avvia. resta bloccato in attesa.

    codice:
    			jQuery.ajax({
    			   type: "POST",
    			   url: "form.php",
    			   //data: data,
    			   data: $("#contact").serialize() + "&pagamento=paypal", // serializes the form's elements. sella | paypal
    			   success: function(data){
    
    
                    // Make a call to the REST api to create the payment
                    return actions.payment.create({
                        payment: {
                            transactions: [
                                {
    								amount: { total: '9.01', currency: 'EUR' },
    								item_list: {
    									items: [
    										{
    										name: 'hat',
    										description: 'Brown hat.',
    										quantity: '1',
    										price: '9.01',
    										currency: 'EUR',
    										sku: data
    										}
    									]
    								}
                                }
                            ]
                        }
                    });
    				
    				}
    			 });
    ---------------------------
    danielix05

  6. #6
    al momento sono arrivato a questo punto. Ottengo l'id generato dal file form.php ma non riesco a passare (sempre al file form.php) i parametri in post con il serialize per il form #contact-form


    codice:
                payment: function(data, actions) {
    
    
    return paypal.request({
    
    
    		   type: "POST",
    		   url: "form.php",
    		   data: $("#contact-form").serialize() + "&pagamento=paypal",
    			   success: function(data){
    				   alert(data);
    			   }
    
    
    }).then(function(response) {
                    return actions.payment.create({
                        payment: {
                            transactions: [
                                {
    								amount: { total: '<?php echo $totale; ?>', currency: 'EUR' },
    								item_list: {
    									items: [
    										{
    										name: 'nome prodotto',
    										description: 'descrizione prodotto',
    										quantity: '1',
    										price: '<?php echo $totale; ?>',
    										currency: 'EUR',
    										sku: response
    										}
    									]
    								}
                                }
                            ]
                        }
                    });
    })			 
    				
                },
    ---------------------------
    danielix05

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.