2015-05-04 11 views
22

Ich muss Paypal in meine Anwendung implementieren. Hier habe ich einige Produkte in den Warenkorb gelegt. Wenn ich auf den Einkaufswagen klicke, muss ich den Betrag mit Paypal bezahlen.Paypal Integration Problem in Titan

Wenn die Schaltfläche Paypal klicken, erhalte ich folgende Fehlermeldung:

Die für Artikelpreis, Steuern angegebenen Mengen und Versand Sie auf die Gesamtmenge nicht aufaddieren.

Warum bekomme ich diesen Fehler?

Ich verwende den folgenden Code ein:

$.paypalWindow.addEventListener('open', function(){ 
var Paypal = require('ti.paypal'); 
var u = Ti.Android != undefined ? 'dp' : 0; 
var status = Ti.UI.createLabel({ top: 20 + u, height: 50 + u, color: '#333', text: 'Loading, please wait...' }); 
$.paypalWindow.add(status); var price = totalamount; 
var invoiceitemslist = JSON.stringify(data); 

var button; function addButtonToWindow() { 
if (button) { $.paypalWindow.remove(button); button = null; } 
button = Paypal.createPaypalButton({ width: 194 + u, height: 37 + u, buttonStyle: Paypal.BUTTON_194x37, top: 20 + u, 

    language: 'en_US', 
    appID: 'APP-80W284485P519543T', 
    paypalEnvironment: Paypal.PAYPAL_ENV_SANDBOX, 
    feePaidByReceiver: false, 
    enableShipping: false, 
    payment: { 
     paymentType: Paypal.PAYMENT_TYPE_BUSINESS, 
     subtotal: price, 
     tax: 0.00, 
     shipping: 0.00, 
     currency: 'USD', 
     recipient: 'thaib[email protected]', 
     customID: 'anythingYouWant', 
     invoiceItems: 
    [{"name":"Bajaj 200 mm Ultima PT01 Personal Fan","totalPrice":2997,"itemPrice":999,"itemCount":3}, 
      ], 
     ipnUrl: 'http://www.appcelerator.com/', 
     merchantName: 'EYMOBINS Insurance', 
     memo: 'For the insurance with EYMOBINS!' 
      } 
     }); 

button.addEventListener('paymentCancelled', function (e) { 
    alert('Payment cancelled. Please try again!'); 
    addButtonToWindow(); 
}); 
button.addEventListener('paymentSuccess', function (e) { 
    alert('Payment successfull. Please get your Policy No.!'+" "+e.transactionID); 
    $.paypalWindow.remove(button); 
    //addButtonToWindow(); 
}); 
button.addEventListener('paymentError', function (e) { 
    alert('Payment Error. Please try again!'); 
    addButtonToWindow(); 
}); 

button.addEventListener('buttonDisplayed', function() { 
    $.paypalWindow.remove(status); 
    //alert('Please pay '+Ti.App.totalcost+'$ with Paypal!') 
}); 

button.addEventListener('buttonError', function() { 

}); 

$.paypalWindow.add(button); 
} 
addButtonToWindow();    
    }); 


$.paypalWindow.open(); 

Bitte überprüfen Sie den Code und geben Sie mir eine Idee, um das oben genannte Problem zu lösen.

EDIT:

Hier bin ich mit Blick auf ein Thema:

[{"name":"Bajaj 200 mm Ultima PT01 Personal Fan","totalPrice":999,"itemPrice":999,"itemCount":1},{"name":"Average2Excellent CBSE KG EVS MATHS ENG Educational CD ROMS","totalPrice":547,"itemPrice":547,"itemCount":1}] 

Hier die TotalAmount ist 1546. Hier habe ich die InvoiceItems in der Konsole ausgegeben haben, und ich bin die Daten immer wie oben .

invoiceItems:invoiceitems, 

Wie Mittel bin immer das Problem (die für Artikelpreis, Steuern angegebenen Mengen und Versand auf die Gesamtmenge addieren sich nicht):

So, dass ich wie angegeben.

Gleiche, was ich habe den Code wie geschrieben:

invoiceItems:[{"name":"Bajaj 200 mm Ultima PT01 Personal Fan","totalPrice":999,"itemPrice":999,"itemCount":1},{"name":"Average2Excellent CBSE KG EVS MATHS ENG Educational CD ROMS","totalPrice":547,"itemPrice":547,"itemCount":1}] 

es perfekt funktioniert hat.

Es funktioniert nicht dynamisch, wenn der Wert zugewiesen wird. Können Sie bitte den Code überprüfen und helfen?

EDIT:

Wenn ich versucht habe, diesen Code auf Android-Gerät laufen zu lassen, wie ich die Paypal-Button nichts happends klicken. Warum ist das Login-Formular im Android-Gerät nicht geöffnet?

+0

Können Sie die Korrelations-ID aus der PayPal-Antwort zurückgeben? – Eshan

+0

Ich habe die Korrelations-ID in meinem Code nirgendwo angegeben. Wo muss ich diese ID erstellen? Wenn Sie das Tutorial haben, geben Sie mir bitte das zum Lernen –

Antwort

5

Warum entgehen Sie den Anführungszeichen in diesem Code?

[{"name":"Bajaj 200 mm Ultima PT01 Personal Fan","totalPrice":2997,"itemPrice":999,"itemCount":3} 

Dies ist kein gültiger JSON (oder Javascript für diese Angelegenheit). Wird dies von Paypal verlangt? Ich denke, es sollte wie folgt aussehen:

[{"name":"Bajaj 200 mm Ultima PT01 Personal Fan","totalPrice":2997,"itemPrice":999,"itemCount":3} 

Edit:

ich einen genaueren Blick auf Ihrem Codebeispiel habe. Können Sie bestätigen, woher totatamount stammt? Wie das Codebeispiel steht, wird es undefined sein, die mit der Fehlermeldung übereinstimmt, die Sie beschrieben haben. Kannst du SOFORT bestätigen, dass es sich um den korrekten Wert handelt, bevor du diese Daten einreichst?

Die ti.paypal-Spezifikation hat ein nettes Codebeispiel in der README file, die ein gutes Beispiel für die Einrichtung createPaypalButton gibt. Ich würde empfehlen, das zu betrachten, wenn Sie es nicht bereits getan haben.

button = Paypal.createPaypalButton({ 
    // NOTE: height/width only determine the size of the view that the button is embedded in - the actual button size 
    // is determined by the buttonStyle property! 
    width: 194 + u, height: 37 + u, 
    buttonStyle: Paypal.BUTTON_194x37, // The style & size of the button 
    bottom: 50 + u, 

    language: 'en_US', 
    textStyle: Paypal.PAYPAL_TEXT_DONATE, // Causes the button's text to change from "Pay" to "Donate" 

    appID: '<<<YOUR APP ID HERE>>>', // The appID issued by Paypal for your application; for testing, feel free to delete this property entirely. 
    paypalEnvironment: Paypal.PAYPAL_ENV_SANDBOX, // Sandbox, None or Live 

    feePaidByReceiver: false, // This will only be applied when the transaction type is Personal 
    enableShipping: false, // Whether or not to select/send shipping information 

    advancedPayment: { // The payment itself 
     payments: [ 
      { 
       isPrimary: true, // Mark this as the primary vendor; this marks this as a chain payment. 
       merchantName: 'Primary Vendor', 
       paymentType: Paypal.PAYMENT_TYPE_SERVICE, // The type of payment 
       paymentSubtype: Paypal.PAYMENT_SUBTYPE_DONATIONS, // The subtype of the payment; you must be authorized for this by Paypal! 
       subtotal: 13, // The total cost of the order, excluding tax and shipping 
       tax: 0, 
       shipping: 0, 
       recipient: '<<<YOUR RECIPIENT HERE>>>', 
       customID: 'anythingYouWant', 
       invoiceItems: [ 
        { name: 'Shoes', totalPrice: 8, itemPrice: 2, itemCount: 4 }, 
        { name: 'Hats', totalPrice: 2, itemPrice: 0.5, itemCount: 4 }, 
        { name: 'Coats', totalPrice: 3, itemPrice: 1, itemCount: 3 } 
       ] 
      }, 
      { 
       merchantName: 'Vendor 1', 
       paymentType: Paypal.PAYMENT_TYPE_SERVICE, // The type of payment 
       paymentSubtype: Paypal.PAYMENT_SUBTYPE_DONATIONS, // The subtype of the payment; you must be authorized for this by Paypal! 
       subtotal: 10, // The total cost of the order, excluding tax and shipping 
       tax: 0, 
       shipping: 0, 
       recipient: '<<<YOUR RECIPIENT HERE>>>', 
       customID: 'anythingYouWant', 
       invoiceItems: [ 
        { name: 'Shoes', totalPrice: 8, itemPrice: 2, itemCount: 4 }, 
        { name: 'Hats', totalPrice: 2, itemPrice: 0.5, itemCount: 4 } 
       ] 
      }, 
      { 
       merchantName: 'Vendor 2', 
       paymentType: Paypal.PAYMENT_TYPE_SERVICE, // The type of payment 
       paymentSubtype: Paypal.PAYMENT_SUBTYPE_DONATIONS, // The subtype of the payment; you must be authorized for this by Paypal! 
       subtotal: 3, // The total cost of the order, excluding tax and shipping 
       tax: 0, 
       shipping: 0, 
       recipient: '<<<YOUR RECIPIENT HERE>>>', 
       customID: 'anythingYouWant', 
       invoiceItems: [ 
        { name: 'Coats', totalPrice: 3, itemPrice: 1, itemCount: 3 } 
       ] 
      } 
     ], 
     ipnUrl: 'http://www.appcelerator.com/', 
     currency: 'USD', 
     memo: 'For the orphans and widows in the world!' 
    } 
}); 
+0

ja ... jetzt habe ich updated.am bekommen das gleiche Problem nur –

+0

Bitte überprüfen Sie mein Update – garryp

+0

Wenn ich versucht habe, diesen Code auf Android-Gerät zu laufen, als bin das Klicken Paypal Button nichts passiert. Warum ist das Login-Formular im Android-Gerät nicht geöffnet? –