使用 PayPal 处理多件商品购买

Posted

技术标签:

【中文标题】使用 PayPal 处理多件商品购买【英文标题】:Processing multiple item purchase with PayPal 【发布时间】:2012-07-25 00:46:05 【问题描述】:

我正在将 PayPal 与我的应用程序集成。我能够通过简单的付款方式处理单件商品的购买。我有点困惑我应该在以下情况下采用哪种方法:

将多个商品添加到购物车。添加到购物车的每件商品可能不超过一个,也可能不超过一个。在简单的方法中,我能够创建一个 PayPalPayment 对象并将值分配给 PayPalPayment 的属性。

PayPalPayment *payment = [[[PayPalPayment alloc] init] autorelease];
payment.recipient = @"s_biz@gmail.com";//@"example-merchant-1@paypal.com";
payment.paymentCurrency = @"USD";
payment.description = @"Gift Purchase";//@"Teddy Bear";
payment.merchantName = @"Test Merchant";//@"Joe's Bear Emporium";

payment.subTotal = [NSDecimalNumber decimalNumberWithString:@"100"];

payment.invoiceData = [[[PayPalInvoiceData alloc] init] autorelease];
payment.invoiceData.totalShipping = [NSDecimalNumber decimalNumberWithString:@"2"];
payment.invoiceData.totalTax = [NSDecimalNumber decimalNumberWithString:@"0.35"];

payment.invoiceData.invoiceItems = [NSMutableArray array];
PayPalInvoiceItem *item = [[[PayPalInvoiceItem alloc] init] autorelease];
item.totalPrice = payment.subTotal;    
item.name = @"Flower";
[payment.invoiceData.invoiceItems addObject:item];    

[[PayPal getPayPalInst] checkoutWithPayment:payment];

当我尝试向 payment.invoiceData.invoiceItems 添加更多商品时,我收到了一些警告,例如“为商品价格、税金和运费指定的金额不等于总金额”。

谁能告诉我我在这里做错了什么。

提前感谢您的帮助。

【问题讨论】:

嗨,谁能帮我解决这个问题。 【参考方案1】:

如果您遵循 PayPal 示例并将其扩展为具有多个行项目,请确保为添加到 invoiceItems 数组的每个项目分配一个新的 PayPalInvoiceItem *。如果您不将分配放入循环中,您将覆盖每个额外的行项目,并且发票总额不会正确显示。你没有发布问题代码,但我敢打赌你只有一个

PayPalInvoiceItem *item = [[[PayPalInvoiceItem alloc] init] autorelease];

相反,为发票中的每个行项目分配并初始化一个附加项目对象。

例如,假设您有一组 LineItem 对象,您想将它们放入 PayPal 发票中。您的“支付”方法可能如下所示:

- (void)payViaPayPal 
    PayPal *payPal = [PayPal getPayPalInst];

    payPal.shippingEnabled = TRUE;

    PayPalPayment *payment = [[[PayPalPayment alloc] init] autorelease];

    payment.recipient = @"email@example.com";
    payment.paymentCurrency = @"USD";
    payment.description = @"Your order of example stuff";
    payment.merchantName = @"Company Name";

    //subtotal of all items, without tax and shipping
    payment.subTotal = [NSDecimalNumber zero];

    payment.invoiceData = [[[PayPalInvoiceData alloc] init] autorelease];

    // No shipping or sales tax in this example
    payment.invoiceData.totalShipping = [NSDecimalNumber zero];
    payment.invoiceData.totalTax = [NSDecimalNumber zero];
    payment.invoiceData.invoiceItems = [NSMutableArray array];

    for (LineItem *lineItem in self.lineItems) 
        PayPalInvoiceItem *item = [[[PayPalInvoiceItem alloc] init] autorelease];

        // If we want these items to show up on the PayPal invoice list, uncomment them.
        //
        // item.itemId = @"...";
        // item.itemCount = ...;
        // item.itemPrice = ...;

        item.name = lineItem.productTypeId.title;
        item.totalPrice = [lineItem.price
                           decimalNumberByMultiplyingBy:[
                                                         NSDecimalNumber
                                                         decimalNumberWithDecimal:[lineItem.quantity decimalValue]]];
        payment.subTotal = [payment.subTotal decimalNumberByAdding:item.totalPrice];

        [payment.invoiceData.invoiceItems addObject:item];
    

    [payPal checkoutWithPayment:payment];

【讨论】:

您好史蒂夫,非常感谢您提供的信息。我希望你提到的问题是正确的。更新代码后我会通知你。

以上是关于使用 PayPal 处理多件商品购买的主要内容,如果未能解决你的问题,请参考以下文章

php商城秒杀,可以购买多件商品,redis防高并发

处理两个人同时在网上商店购买一件独特商品

将购买的商品详细信息发送到 PayPal?

适用于 iOS 的 PayPal SDK:恢复购买的商品

是否可以在数据库中跟踪库存并更新使用 Paypal 进行的购买的商品数量?

如何在IOS SDK中集成多个卖家的paypal?