Paypal вычесть два раза оплату за тип подписки продукта - PullRequest
0 голосов
/ 31 января 2019

Я создал виртуальный (по подписке) тип продуктов в Magento 2.2.5 CE .

И когда я пытался купить продукт по подписке ( тип повторяющихся платежей ) PayPal возвращает три IPN.Я использовал это в качестве справки Обработка повторяющихся платежей (я знаю, что это устарело, но мы скоро обновим)

Когда я размещаю заказ с помощью Paypal express, PayPal вычитает двараз столько же .Я думаю, что PayPal сначала обрабатывает мой заказ как simple sale order, а затем после создания recurring profile и вычитает повторяющийся платеж.Я пришел к этому из-за следующей отладки журналов и IPN сообщений


типов сообщений IPN

  • 'txn_type'= корзина / (иногда экспресс-выход)
  • ' txn_type '= recurring_payment_profile_created
  • ' txn_type '= recurring_payment

Журналы

    [2019-01-31 07:24:01] main.DEBUG: array (
      'url' => 'https://api-3t.sandbox.paypal.com/nvp',
      'SetExpressCheckout' => 
      array (
        'PAYMENTACTION' => 'Sale',
        'AMT' => '49.99',
        'CURRENCYCODE' => 'USD',
        'RETURNURL' => 'https://recurring_products.com/paypal/express/return/',
        'CANCELURL' => 'https://recurring_products.com/paypal/express/cancel/',
        'INVNUM' => '1000049131',
        'SOLUTIONTYPE' => 'Mark',
        'NOSHIPPING' => 1,
        'GIROPAYCANCELURL' => 'https://recurring_products.com/paypal/express/cancel/',
        'GIROPAYSUCCESSURL' => 'https://recurring_products.com/checkout/onepage/success/',
        'BANKTXNPENDINGURL' => 'https://recurring_products.com/checkout/onepage/success/',
        'SHIPPINGAMT' => '0.00',
        'ITEMAMT' => '49.99',
        'TAXAMT' => '0.00',
        'L_NUMBER0' => NULL,
        'L_NAME0' => 'Monthly',
        'L_QTY0' => 1,
        'L_AMT0' => '49.99',
        'L_BILLINGTYPE0' => 'RecurringPayments',
        'L_PAYMENTREQUEST_0_ITEMCATEGORY0' => 'Digital',
        'L_BILLINGAGREEMENTDESCRIPTION0' => 'Monthly Subscription',
        'METHOD' => 'SetExpressCheckout',
        'VERSION' => '72.0',
        'USER' => '****',
        'PWD' => '****',
        'SIGNATURE' => '****',
        'BUTTONSOURCE' => 'Magento_Cart_Community',
      ),
      'response' => 
      array (
        'TOKEN' => 'EC-xxxxxxxxxxxxxxxxx',
        'TIMESTAMP' => '2019-01-31T07:24:01Z',
        'CORRELATIONID' => 'xxxxxxxxxxxx',
        'ACK' => 'Success',
        'VERSION' => '72.0',
        'BUILD' => '88888888',
      ),
    ) [] []
    [2019-01-31 07:24:36] main.DEBUG: array (
      'url' => 'https://api-3t.sandbox.paypal.com/nvp',
      'GetExpressCheckoutDetails' => 
      array (
        'TOKEN' => 'EC-xxxxxxxxxxxxxxxxx',
        'METHOD' => 'GetExpressCheckoutDetails',
        'VERSION' => '72.0',
        'USER' => '****',
        'PWD' => '****',
        'SIGNATURE' => '****',
        'BUTTONSOURCE' => 'Magento_Cart_Community',
      ),
      'response' => 
      array (
        'TOKEN' => 'EC-xxxxxxxxxxxxxxxxx',
        'BILLINGAGREEMENTACCEPTEDSTATUS' => '1',
        'CHECKOUTSTATUS' => 'PaymentActionNotInitiated',
        'TIMESTAMP' => '2019-01-31T07:24:36Z',
        'CORRELATIONID' => '633419f321d4a',
        'ACK' => 'Success',
        'VERSION' => '72.0',
        'BUILD' => '88888888',
        'EMAIL' => 'sample.user@example.com',
        'PAYERID' => 'zzzzzzzzzzzzzzz',
        'PAYERSTATUS' => 'verified',
        'FIRSTNAME' => 'test',
        'LASTNAME' => 'buyer',
        'COUNTRYCODE' => 'US',
        'ADDRESSSTATUS' => 'Confirmed',
        'CURRENCYCODE' => 'USD',
        'AMT' => '49.99',
        'ITEMAMT' => '49.99',
        'SHIPPINGAMT' => '0.00',
        'HANDLINGAMT' => '0.00',
        'TAXAMT' => '0.00',
        'INVNUM' => '1000049131',
        'NOTIFYURL' => 'http://recurring_products.com/paypal/ipn',
        'INSURANCEAMT' => '0.00',
        'SHIPDISCAMT' => '0.00',
        'INSURANCEOPTIONOFFERED' => 'false',
        'L_NAME0' => 'Monthly',
        'L_QTY0' => '1',
        'L_TAXAMT0' => '0.00',
        'L_AMT0' => '49.99',
        'PAYMENTREQUEST_0_CURRENCYCODE' => 'USD',
        'PAYMENTREQUEST_0_AMT' => '49.99',
        'PAYMENTREQUEST_0_ITEMAMT' => '49.99',
        'PAYMENTREQUEST_0_SHIPPINGAMT' => '0.00',
        'PAYMENTREQUEST_0_HANDLINGAMT' => '0.00',
        'PAYMENTREQUEST_0_TAXAMT' => '0.00',
        'PAYMENTREQUEST_0_INVNUM' => '1000049131',
        'PAYMENTREQUEST_0_NOTIFYURL' => 'http://recurring_products.com/paypal/ipn',
        'PAYMENTREQUEST_0_INSURANCEAMT' => '0.00',
        'PAYMENTREQUEST_0_SHIPDISCAMT' => '0.00',
        'PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID' => 'business.paypal@example.com',
        'PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED' => 'false',
        'L_PAYMENTREQUEST_0_NAME0' => 'Monthly',
        'L_PAYMENTREQUEST_0_QTY0' => '1',
        'L_PAYMENTREQUEST_0_TAXAMT0' => '0.00',
        'L_PAYMENTREQUEST_0_AMT0' => '49.99',
        'PAYMENTREQUESTINFO_0_ERRORCODE' => '0',
      ),
    ) [] []
    [2019-01-31 07:24:38] main.DEBUG: array (
      'url' => 'https://api-3t.sandbox.paypal.com/nvp',
      'CreateRecurringPaymentsProfile' => 
      array (
        'TOKEN' => 'EC-xxxxxxxxxxxxxxxxx',
        'PROFILESTARTDATE' => '2019-01-30 23:24:36',
        'PROFILEREFERENCE' => '44-ddddddddddddddddddddddddddddddd',
        'DESC' => 'Monthly Subscription',
        'AUTOBILLAMT' => 'AddToNextBilling',
        'BILLINGPERIOD' => 'Month',
        'BILLINGFREQUENCY' => '1',
        'AMT' => '49.99',
        'CURRENCYCODE' => 'USD',
        'METHOD' => 'CreateRecurringPaymentsProfile',
        'VERSION' => '72.0',
        'USER' => '****',
        'PWD' => '****',
        'SIGNATURE' => '****',
        'BUTTONSOURCE' => 'Magento_Cart_Community',
      ),
      'response' => 
      array (
        'PROFILEID' => 'I-WWWWWWWW',
        'PROFILESTATUS' => 'ActiveProfile',
        'TIMESTAMP' => '2019-01-31T07:24:38Z',
        'CORRELATIONID' => '666666666666',
        'ACK' => 'Success',
        'VERSION' => '72.0',
        'BUILD' => '44444444',
      ),
    ) [] []
    [2019-01-31 07:24:41] main.DEBUG: array (
      'url' => 'https://api-3t.sandbox.paypal.com/nvp',
      'DoExpressCheckoutPayment' => 
      array (
        'TOKEN' => 'EC-xxxxxxxxxxxxxxxxx',
        'PAYERID' => 'zzzzzzzzzzzzzzz',
        'PAYMENTACTION' => 'Sale',
        'AMT' => '49.99',
        'CURRENCYCODE' => 'USD',
        'BUTTONSOURCE' => 'Magento_Cart_Community',
        'NOTIFYURL' => 'https://recurring_products.com/paypal/ipn/',
        'RETURNFMFDETAILS' => 1,
        'SHIPPINGAMT' => '0.00',
        'ITEMAMT' => '49.99',
        'TAXAMT' => '0.00',
        'L_NUMBER0' => NULL,
        'L_NAME0' => 'Monthly',
        'L_QTY0' => 1,
        'L_AMT0' => '49.99',
        'BUSINESS' => NULL,
        'EMAIL' => 'sample.user@example.com',
        'FIRSTNAME' => 'test',
        'LASTNAME' => 'buyer',
        'MIDDLENAME' => NULL,
        'SALUTATION' => NULL,
        'SUFFIX' => NULL,
        'COUNTRYCODE' => 'US',
        'STATE' => NULL,
        'CITY' => NULL,
        'STREET' => '',
        'ZIP' => NULL,
        'PHONENUM' => NULL,
        'ADDROVERRIDE' => 1,
        'METHOD' => 'DoExpressCheckoutPayment',
        'VERSION' => '72.0',
        'USER' => '****',
        'PWD' => '****',
        'SIGNATURE' => '****',
      ),
      'response' => 
      array (
        'TOKEN' => 'EC-xxxxxxxxxxxxxxxxx',
        'SUCCESSPAGEREDIRECTREQUESTED' => 'false',
        'TIMESTAMP' => '2019-01-31T07:24:41Z',
        'CORRELATIONID' => '5555555555555',
        'ACK' => 'Success',
        'VERSION' => '72.0',
        'BUILD' => '88888888',
        'TRANSACTIONID' => '00000000000000000',
        'TRANSACTIONTYPE' => 'cart',
        'PAYMENTTYPE' => 'instant',
        'ORDERTIME' => '2019-01-31T07:24:41Z',
        'AMT' => '49.99',
        'FEEAMT' => '1.75',
        'TAXAMT' => '0.00',
        'CURRENCYCODE' => 'USD',
        'PAYMENTSTATUS' => 'Completed',
        'PENDINGREASON' => 'None',
        'REASONCODE' => 'None',
        'PROTECTIONELIGIBILITY' => 'Eligible',
        'INSURANCEOPTIONSELECTED' => 'false',
        'SHIPPINGOPTIONISDEFAULT' => 'false',
        'PAYMENTINFO_0_TRANSACTIONID' => '00000000000000000',
        'PAYMENTINFO_0_TRANSACTIONTYPE' => 'cart',
        'PAYMENTINFO_0_PAYMENTTYPE' => 'instant',
        'PAYMENTINFO_0_ORDERTIME' => '2019-01-31T07:24:41Z',
        'PAYMENTINFO_0_AMT' => '49.99',
        'PAYMENTINFO_0_FEEAMT' => '1.75',
        'PAYMENTINFO_0_TAXAMT' => '0.00',
        'PAYMENTINFO_0_CURRENCYCODE' => 'USD',
        'PAYMENTINFO_0_PAYMENTSTATUS' => 'Completed',
        'PAYMENTINFO_0_PENDINGREASON' => 'None',
        'PAYMENTINFO_0_REASONCODE' => 'None',
        'PAYMENTINFO_0_PROTECTIONELIGIBILITY' => 'Eligible',
        'PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE' => 'ItemNotReceivedEligible,UnauthorizedPaymentEligible',
        'PAYMENTINFO_0_SELLERPAYPALACCOUNTID' => 'business.paypal@example.com',
        'PAYMENTINFO_0_SECUREMERCHANTACCOUNTID' => '2222222222222',
        'PAYMENTINFO_0_ERRORCODE' => '0',
        'PAYMENTINFO_0_ACK' => 'Success',
      ),
    ) [] []

Обновление

Я зарегистрировался в Paypal, также получен двойной платеж.Снимок экрана справочной страницы Paypal

enter image description here

...