#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. Поэтому, как бы вы ни создавали этот объект, вы делаете это неправильно.