2012-07-26 2 views
1

Я интегрирую PayPal с моим приложением. Я смог обработать покупку одного элемента простым методом оплаты. Я немного смущен, какой метод следует принять по следующему сценарию:Обработка нескольких предметов с помощью PayPal

Добавление нескольких предметов в корзину. Количество предметов, добавленных в корзину, не может превышать единицы. В простом методе я смог создать объект PayPalPayment и присвоить значения свойствам PayPalPayment.

PayPalPayment *payment = [[[PayPalPayment alloc] init] autorelease]; 
payment.recipient = @"[email protected]";//@"[email protected]"; 
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, я получал некоторое предупреждение, как «Заданный для цены, налогов и доставки суммы не складываются в общую сумму».

Может ли кто-нибудь сообщить мне, что я делаю неправильно здесь.

Заранее благодарим за любую помощь.

+0

Привет, Может кто-нибудь помочь мне разобраться в этом вопросе. –

ответ

0

Если вы следуете примеру PayPal и расширяете его, чтобы иметь несколько позиций, убедитесь, что вы назначили новый PayPalInvoiceItem * для каждого элемента, добавляемого в массив invoiceItems. Если вы не разместите выделение внутри своего цикла, вы будете перезаписывать каждую дополнительную позицию, а общая сумма счета не выйдет правильно. Вы не отправлял код проблемы, но я буду держать пари, у вас есть только один

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

Вместо этого, Alloc и инициализировать дополнительный объект элемента для каждой линии элемента в счете-фактуре.

Например, предположим, что у вас есть коллекция LineItem объектов, которые вы хотите поместить в счет-фактуру PayPal. Ваш метод «оплаты» может выглядеть примерно так:

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

    payPal.shippingEnabled = TRUE; 

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

    payment.recipient = @"[email protected]"; 
    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]; 
} 
+0

Привет, Стив, Большое спасибо за вашу информацию. Я надеюсь, что проблема, о которой вы говорили, верна. Я сообщу вам об этом после обновления кода, как вы упомянули здесь. –

Смежные вопросы