2011-08-09 28 views
7

Có trang web thương mại điện tử đang chạy ZNode. Chúng tôi gửi thuế, giao hàng, tổng đơn đặt hàng, v.v. Mọi thứ hoạt động tốt cho đến khi giảm giá cấp đơn đặt hàng được áp dụng (giả sử 50%). Chúng tôi nhận được phản hồi từ PayPal có nội dung sau:Paypal Express Checkout: Áp dụng giảm giá đơn đặt hàng

Tổng số tiền trong giỏ hàng không khớp với số lượng đơn đặt hàng.

Tôi đang duyệt qua API và tôi không thể tìm thấy bất kỳ điều gì để áp dụng giảm giá cấp đơn đặt hàng. FWIW, người dùng đang áp dụng mã giảm giá trên trang web của chúng tôi và sau đó đang được chuyển sang PayPal.

Trả lời

18

Tôi nghĩ vấn đề của bạn không phải là API PayPal. Bạn đã kiểm tra xem mọi thứ có hoạt động hoàn hảo với thông số của bạn được chuyển đến paypal trong trường hợp giảm giá 50% này không?

Sau tài liệu PayPal, bạn nên cung cấp giá trị âm để phản ánh chiết khấu trên đơn hàng. Vì vậy, tất cả mọi thứ thêm lên đến tổng số tiền.

Nguồn: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECCustomizing

Cập nhật với mã: (Nick)

Tôi có một dịch vụ paypal mà làm tất cả các loại công cụ, nhưng các mã sau đây sẽ cho bạn một ý tưởng về cách thức giảm giá hoạt động. Giảm giá không phải là một loại đặc biệt, nó là một sản phẩm giống như bất kỳ loại nào khác ngoại trừ nó được ngụy trang bằng cách đặt tên nó giống như giảm giá và đặt giá thành một số âm.

  List<PaymentDetailsItemType> items = paymentDetails.PaymentDetailsItem; 

     foreach (ShoppingCartItem item in cart.ShoppingCartItems) 
     { 
      items.Add(new PaymentDetailsItemType 
          { 
           Name = item.Book.Title, 
           Quantity = item.Quantity, 
           Number = item.BookId.ToString(), 
           Amount = 
            new BasicAmountType 
             {currencyID = CurrencyCodeType.USD, 
             value = (item.Book.Price).To2Places()} 
          }); 
     } 
     if (cartTotals.Discount > 0) 
     { 
      items.Add(new PaymentDetailsItemType 
          { 
           Name = "Promo Code Discount", 
           Quantity = 1, 
           Number = "PromoCode", 
           Amount = 
            new BasicAmountType 
             { 
              currencyID = CurrencyCodeType.USD, 
              value = (cartTotals.Discount*-1).To2Places() 
             } 
          }); 
     } 
+0

Tôi đã đặt TaxTotal, ShippingTotal, ItemTotal và OrderTotal. Tất cả các công việc này ngoại trừ khi mã giảm giá được đặt, vì mặt hàng + phí vận chuyển + sẽ không cộng thêm vào OrderTotal vì OrderTotal có số tiền được lấy ra khỏi nó. Không có nơi nào tôi có thể tìm thấy để đặt số tiền giảm giá. Bất kỳ ý tưởng? – StephenPAdams

+0

@look câu trả lời cập nhật – Skomski

+4

Bạn có nói rằng tôi cần phải tạo một mục và đặt giá trị thành âm? Và sau đó cập nhật ItemTotal để phản ánh tất cả các mục cũng như mục phủ định mà tôi đã thêm vào tài khoản để được giảm giá? – StephenPAdams

1

Một tùy chọn khác cho việc gửi chiết khấu qua API PayPal sử dụng PAYMENTREQUEST_n_SHIPDISCAMT

Mà thực chất là giảm giá vận chuyển, nhưng chỉ hoạt động tốt, và là một dòng một.

Nhưng nó nói rằng giảm giá vận chuyển ở cuối PalPal.

Các vấn đề liên quan