【问题标题】:Paypal integration issue in titanium钛的Paypal集成问题
【发布时间】:2015-07-13 19:12:56
【问题描述】:

我必须在我的应用程序中实施 Paypal。在这里,我已将一些产品添加到购物车中。如果我点击购物车,我必须使用 Paypal 支付金额。

单击 Paypal 按钮时,我收到以下错误:

为商品价格、税金和运费指定的金额不等于总金额。

为什么会出现这个错误?

我正在使用以下代码:

$.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: 'thaibusiness@gmail.com',
        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();

请检查代码并告诉我解决上述问题的想法。

编辑:

这里我面临一个问题:

[{"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}]

这里的总金额是 1546。这里我在控制台中打印了 invoiceitems,我得到的数据如上。

所以我给出了这样的:

invoiceItems:invoiceitems,

点赞表示收到问题(为商品价格、税金和运费指定的金额不等于总金额)。

和我写的代码一样:

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}]

效果很好。

分配值时它不会动态工作。你能检查一下代码和帮助吗?

编辑:

如果我尝试在 android 设备上运行此代码,就像单击 paypal 按钮一样,没有任何反应。为什么登录表单在安卓设备中打不开。

【问题讨论】:

  • 您能否提供从 PayPal 响应返回的关联 ID?
  • 我没有在任何地方的代码中提供相关 ID。我必须在哪里创建该 ID?如果你有教程,请给我学习

标签: javascript android ios paypal titanium


【解决方案1】:

为什么要转义这段代码中的引号?

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

这不是有效的 JSON(或 Javascript)。这是 Paypal 要求的吗?我认为它应该是这样的:

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

编辑:

我仔细查看了您的代码示例。你能确认totatamount 来自哪里吗?就代码示例而言,它将是undefined,这与您描述的错误消息一致。您能否在提交此数据之前立即确认它绝对是正确的值?

ti.paypal 规范在README file 中有一个很好的代码示例,它为如何设置createPaypalButton 提供了一个很好的示例。如果你还没有,我建议你看看这个。

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!'
    }
});

【讨论】:

  • 是的......现在我已经更新了。我只遇到同样的问题
  • 如果我尝试在 android 设备上运行此代码,就像单击 paypal 按钮一样,没有任何反应。为什么登录表单在安卓设备中打不开。
  • 只有安卓吗?
  • 是的,只有我在 android 中遇到过这些问题...iphone 它正在重定向到 paypal 登录表单
  • 此模块是否适用于 Ti SDK。 5.2.2 与 Android API 22 及以上?
猜你喜欢
  • 2016-04-17
  • 2012-04-08
  • 2013-02-06
  • 1970-01-01
  • 2016-05-23
  • 2015-09-10
  • 2012-06-28
  • 2015-10-15
  • 2014-11-01
相关资源
最近更新 更多