Paypal не отправляет количество товаров в корзине

#paypal #paypal-ipn

#paypal #paypal-ipn

Вопрос:

У меня есть простая кнопка покупки paypal. Пользователь перенаправляется на платежный шлюз paypal, где он может выбрать количество товаров, которые он хочет купить.

Моя проблема в том, что я не вижу количество товаров (введенных пользователями) в переменных IPN на моем сервере, переменная num_cart_items всегда равна 1.

Одним из способов решения моей проблемы было бы отключить эту возможность, чтобы пользователь мог выбирать количество товаров, которые он хочет купить, но я не уверен, что это возможно. Или вывести количество товаров из цены, но это скорее хак.


Редактировать

Вот объект, который я получаю на своем сервере django (используя django-paypal в сигнале payment_was_successful), как вы можете видеть query , свойство имеет quantity1 , но не сам объект:

 {'created_at': datetime.datetime(2014, 6, 27, 10, 7, 50, 798488, tzinfo=<UTC>), 
'last_name': u'LASTNAME', 
'shipping_method': u'', 
'query': u'mc_gross=3.00amp;protection_eligibility=Ineligibleamp;item_number1=amp;payer_id=Q6E6KSFDPM3U6amp;tax=0.00amp;payment_date=03:06:57 Jun 27, 2014 PDTamp;payment_status=Completedamp;charset=windows-1252amp;mc_shipping=0.00amp;mc_handling=0.00amp;first_name=FIRSTNAMEamp;mc_fee=0.35amp;notify_version=3.8amp;custom={"user":"username","location":{"x":202,"y":223}}amp;payer_status=verifiedamp;business=email-facilitator@gmail.comamp;num_cart_items=1amp;mc_handling1=0.00amp;verify_sign=SECRET_CODEamp;payer_email=email@gmail.comamp;mc_shipping1=0.00amp;tax1=0.00amp;btn_id1=2965595amp;txn_id=2KW31663CC752394Kamp;payment_type=instantamp;last_name=LASTNAMEamp;item_name1=Romanescoinsamp;receiver_email=email-facilitator@gmail.comamp;payment_fee=amp;quantity1=3amp;receiver_id=CUMWR6T2ARF36amp;txn_type=cartamp;mc_gross_1=3.00amp;mc_currency=EURamp;residence_country=FRamp;test_ipn=1amp;transaction_subject={"user":"username","location":{"x":202,"y":223}}amp;payment_gross=amp;ipn_track_id=a48170aadb705', 
'outstanding_balance': None, 
'subscr_id': u'', 
'auction_multi_item': None, 
'item_name': u'', 
'case_id': u'', 
'address_name': u'', 
'transaction_entity': u'', 
'from_view': u'', 
'auction_closing_date': None, 
'password': u'', 
'auction_buyer_id': u'', 
'address_country_code': u'', 
'address_city': u'', 
'address_status': u'', 
'auth_exp': u'', 
'payer_email': u'email@gmail.com', 
'mc_gross': Decimal('3.00'), 
'reattempt': u'', 
'handling_amount': None, 
'reason_code': u'', 
'remaining_settle': None, 
'invoice': u'', 
'address_state': u'', 
'num_cart_items': 1, 
'address_country': u'', 
'payer_business_name': u'', 
'first_name': u'FIRSTNAME', 
'mc_shipping': Decimal('0.00'), 
'flag_info': u'', 
'for_auction': None, 
'profile_status': u'', 
'item_number': u'', 
'business': u'email-facilitator@gmail.com', 
'settle_currency': u'', 
'shipping': None, 
'amount': None, 
'currency_code': u'', 
'txn_id': u'2KW31663CC752394K', 
'payment_status': u'Completed', 
'payment_gross': None, 
'retry_at': None, 
'exchange_rate': None, 
'residence_country': u'FR', 
'payer_status': u'verified', 
'address_street': u'', 
'initial_payment_amount': None, 
'auth_amount': None, 
'custom': u'{"user":"username","location":{"x":202,"y":223}}', 
'notify_version': Decimal('3.8'), 
'period_type': u'', 
'settle_amount': None, 
'recurring': u'', 
'pending_reason': u'', 
'username': u'', 
'tax': Decimal('0.00'), 
'memo': u'', 
'payer_id': u'Q6E6KSFDPM3U6', 
'flag': False, 
'mc_handling': Decimal('0.00'), 
'address_zip': u'', 
'mc_fee': Decimal('0.35'), 
'payment_type': u'instant', 
'amount1': None, 
'recurring_payment_id': u'', 
'protection_eligibility': u'Ineligible', 
'receiver_email': u'email-facilitator@gmail.com', 
'_state': <django.db.models.base.ModelState object at 0x2248550>, 
'updated_at': datetime.datetime(2014, 6, 27, 10, 7, 50, 798510, tzinfo=<UTC>), 
'time_created': None, 
'mc_currency': u'EUR', 
'option_name1': u'', 
'subscr_date': None, 
'option_name2': u'', 
'txn_type': u'cart', 
'recur_times': None, 
'auth_status': u'', 
'id': 90, 
'rp_invoice_id': u'', 
'payment_cycle': u'', 
'subscr_effective': None, 
'charset': u'windows-1252', 
'parent_txn_id': u'', 
'auth_id': u'', 
'transaction_subject': u'{"user":"username","location":{"x":202,"y":223}}', 
'contact_phone': u'', 
'product_name': u'', 
'test_ipn': True, 
'receiver_id': u'CUMWR6T2ARF36', 
'payment_date': datetime.datetime(2014, 6, 27, 3, 6, 57, tzinfo=<LocalTimezone>), 
'amount_per_cycle': None, 
'period2': u'', 
'period3': u'', 
'period1': u'', 
'verify_sign': u'SECRET_CODE', 
'flag_code': u'', 
'ipaddress': '127.0.0.1', 
'response': u'VERIFIED', 
'product_type': u'', 
'receipt_id': u'', 
'amount3': None, 
'amount2': None, 
'next_payment_date': None, 
'mc_amount3': None, 
'mc_amount2': None, 
'mc_amount1': None, 
'case_creation_date': None, 
'case_type': u'', 
'quantity': None}
  

Ответ №1:

num_cart_items количество отдельных товаров в корзине. Количество каждого товара указано в quantity1, quantity2 , и т. Д. Для транзакции корзины покупок, в противном случае в quantity .

Все это задокументировано.

Комментарии:

1. В переменных IPN я вижу сумму в необработанном запросе в количестве1. Но для этой суммы не задана переменная, для ‘quantity’ установлено значение None. Я мог бы проанализировать необработанный запрос, но мне он кажется не очень чистым.

2. Все находится «в необработанном запросе», включая quantity1, num_cart_items, item_name, … И доступно в качестве параметров запроса в любой используемой вами технологии.

3. Ну (извините, я не уверен, что понимаю) количество1 находится в запросе ray, но, по-видимому, не в «параметрах запроса». Я использую django-paypal, и его нет в параметре, заданном для сигнала payment_was_successful (он доступен только путем синтаксического анализа параметра. запрос).

4. Вы где-то допускаете ошибку. Все в необработанном запросе доступно как параметры запроса по определению.

5. Поэтому, как бы вы ни создавали этот объект, вы делаете это неправильно.