1

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 に商品を追加しようとすると、「商品価格、税金、送料に指定された金額が合計金額に達しません」のようなアラートが表示されました。

ここで私が間違っていることを誰かに教えてもらえますか。

助けてくれてありがとう。

4

1 に答える 1

0

PayPal の例に従って、それを拡張して複数の項目を持つ場合は、配列PayPalInvoiceItem *に追加する項目ごとに必ず新しい を割り当ててください。invoiceItems割り当てをループ内に配置しないと、追加の各項目が上書きされ、請求書の合計が正しく表示されません。あなたは問題のコードを投稿していませんが、あなたが持っているのは 1 つだけだと思います

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];
}
于 2012-09-06T20:16:28.393 に答える