Ejegg has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/366976 )

Change subject: WIP Tag refunds with correct paypal gateway
......................................................................

WIP Tag refunds with correct paypal gateway

Wow, these are crappy ways to tell the difference! Really should have
put the gateway code in one of those tracking fields.

Bug: T171351
Change-Id: I49da156eb72933d44bb299d92072c551c02798ad
---
M PaymentProviders/PayPal/RefundMessage.php
M PaymentProviders/PayPal/Tests/Data/chargeback_settlement.json
A PaymentProviders/PayPal/Tests/Data/chargeback_settlement_ec.json
A PaymentProviders/PayPal/Tests/Data/chargeback_settlement_ec_transformed.json
A PaymentProviders/PayPal/Tests/Data/chargeback_settlement_transformed.json
M PaymentProviders/PayPal/Tests/phpunit/CaptureIncomingMessageTest.php
6 files changed, 73 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/SmashPig 
refs/changes/76/366976/1

diff --git a/PaymentProviders/PayPal/RefundMessage.php 
b/PaymentProviders/PayPal/RefundMessage.php
index 98227a6..6ce11e2 100644
--- a/PaymentProviders/PayPal/RefundMessage.php
+++ b/PaymentProviders/PayPal/RefundMessage.php
@@ -14,12 +14,21 @@
                        $message['type'] = 'refund';
                }
 
-               // Express checkout puts a description in transaction_subject, 
Legacy puts a contribution
-               // tracking ID there. Chargebacks don't set the field at all.
-               if ( isset( $ipnMessage['transaction_subject'] ) && 
!is_numeric( $ipnMessage['transaction_subject'] ) ) {
-                       $message['gateway'] = 'paypal_ec';
+               if ( $message['type'] === 'refund' ) {
+                       // For refunds, express checkout puts a description in 
transaction_subject,
+                       // but legacy puts a contribution tracking ID there.
+                       if ( isset( $ipnMessage['transaction_subject'] ) && 
!is_numeric( $ipnMessage['transaction_subject'] ) ) {
+                               $message['gateway'] = 'paypal_ec';
+                       } else {
+                               $message['gateway'] = 'paypal';
+                       }
                } else {
-                       $message['gateway'] = 'paypal';
+                       // For chargebacks, express checkout sets the 'invoice' 
field
+                       if ( isset( $ipnMessage['invoice'] ) ) {
+                               $message['gateway'] = 'paypal_ec';
+                       } else {
+                               $message['gateway'] = 'paypal';
+                       }
                }
 
        }
diff --git a/PaymentProviders/PayPal/Tests/Data/chargeback_settlement.json 
b/PaymentProviders/PayPal/Tests/Data/chargeback_settlement.json
index d96bde3..bfdbb40 100644
--- a/PaymentProviders/PayPal/Tests/Data/chargeback_settlement.json
+++ b/PaymentProviders/PayPal/Tests/Data/chargeback_settlement.json
@@ -1,22 +1,18 @@
 {
-       "payment_date": "11:55:22 Sep 28, 2016 PDT",
+       "payment_date": "05:32:08 Jun 30, 2017 PDT",
+       "txn_id": "91N12345TB8654321",
        "payment_status": "Completed",
-       "txn_type": "adjustment",
-       "parent_txn_id": "XXXXXXXXXXXXXXXXX",
-       "txn_id": "YYYYYYYYYYYYYYYYY",
        "mc_currency": "USD",
-       "reason_code": "chargeback_settlement",
-       "email": "a...@wikimedia.org",
-       "mc_gross": "-10.00",
-       "gateway": "paypal",
-       "notify_version": "3.8",
-       "payment_gross": "-10.00",
+       "parent_txn_id": "2JP12345X654321V",
+       "notify_version": 3.8,
+       "custom": 47470083,
+       "txn_type": "adjustment",
+       "charset": "UTF-8",
+       "mc_gross": -1.00,
+       "payment_gross": -1.00,
+       "payer_email": "recipi...@wikimedia.org",
+       "verify_sign": 
"AZfnGop49sf6bIkvk-UIIwAT3vE6AqUlokuReG4Znr85ICxgRDn1rO8s",
+       "payer_id": "AA987ASDFGHUW8",
        "payer_status": "verified",
-       "payment_fee": "-20.00",
-       "source_name": "SmashPig",
-       "source_type": "listener",
-       "source_host": "secrethost",
-       "source_run_id": "12423",
-       "source_version": "9999999999999999999999999999999999999999",
-       "source_enqueued_time": "1476796977"
+       "ipn_track_id": "28eec9b3c7857"
 }
diff --git a/PaymentProviders/PayPal/Tests/Data/chargeback_settlement_ec.json 
b/PaymentProviders/PayPal/Tests/Data/chargeback_settlement_ec.json
new file mode 100644
index 0000000..daef6ad
--- /dev/null
+++ b/PaymentProviders/PayPal/Tests/Data/chargeback_settlement_ec.json
@@ -0,0 +1,19 @@
+{
+       "txn_type" : "adjustment",
+       "payment_date" : "06:25:22 Jul 10, 2017 PDT",
+       "payment_gross" : -5.00,
+       "mc_currency" : "USD",
+       "verify_sign" : 
"A21kmBLyRcQpDSjYvmswlm3ckjahAZ-SbzbHuzDA0wERKwHSrBlTr9cY",
+       "payer_status" : "verified",
+       "payer_email" : "recipi...@wikimedia.org",
+       "txn_id" : "91N12345TB8654321",
+       "parent_txn_id" : "2JP12345X654321V",
+       "payer_id" : "AA987ASDFGHUW8",
+       "invoice" : 47896777.0,
+       "payment_status" : "Completed",
+       "mc_gross" : -5.00,
+       "custom" : 47896777,
+       "charset" : "UTF-8",
+       "notify_version" : 3.8,
+       "ipn_track_id" : "f008d5768b47c"
+}
diff --git 
a/PaymentProviders/PayPal/Tests/Data/chargeback_settlement_ec_transformed.json 
b/PaymentProviders/PayPal/Tests/Data/chargeback_settlement_ec_transformed.json
new file mode 100644
index 0000000..d3061ba
--- /dev/null
+++ 
b/PaymentProviders/PayPal/Tests/Data/chargeback_settlement_ec_transformed.json
@@ -0,0 +1,13 @@
+{
+       "date": 1499693122,
+       "gateway_parent_id": "2JP12345X654321V",
+       "gateway_txn_id": "91N12345TB8654321",
+       "currency": "USD",
+       "type": "chargeback",
+       "contribution_tracking_id": 47896777,
+       "gross": -5,
+       "order_id": 47896777,
+       "gateway_refund_id": "91N12345TB8654321",
+       "gross_currency": "USD",
+       "gateway": "paypal_ec"
+}
diff --git 
a/PaymentProviders/PayPal/Tests/Data/chargeback_settlement_transformed.json 
b/PaymentProviders/PayPal/Tests/Data/chargeback_settlement_transformed.json
new file mode 100644
index 0000000..c44130e
--- /dev/null
+++ b/PaymentProviders/PayPal/Tests/Data/chargeback_settlement_transformed.json
@@ -0,0 +1,13 @@
+{
+       "date": 1498825928,
+       "gateway_parent_id": "2JP12345X654321V",
+       "gateway_txn_id": "91N12345TB8654321",
+       "currency": "USD",
+       "type": "chargeback",
+       "contribution_tracking_id": 47470083,
+       "gross": -1,
+       "order_id": 47470083,
+       "gateway_refund_id": "91N12345TB8654321",
+       "gross_currency": "USD",
+       "gateway": "paypal"
+}
diff --git 
a/PaymentProviders/PayPal/Tests/phpunit/CaptureIncomingMessageTest.php 
b/PaymentProviders/PayPal/Tests/phpunit/CaptureIncomingMessageTest.php
index 2b08ef4..4a0df91 100644
--- a/PaymentProviders/PayPal/Tests/phpunit/CaptureIncomingMessageTest.php
+++ b/PaymentProviders/PayPal/Tests/phpunit/CaptureIncomingMessageTest.php
@@ -36,6 +36,7 @@
                'refund_ec.json' => 'refund',
                'refund_recurring_ec.json' => 'refund',
                'chargeback_settlement.json' => 'refund',
+               'chargeback_settlement_ec.json' => 'refund',
                // this should not actually get written to
                // TODO 'new_case.json' => 'no-op',
        );

-- 
To view, visit https://gerrit.wikimedia.org/r/366976
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I49da156eb72933d44bb299d92072c551c02798ad
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/fundraising/SmashPig
Gerrit-Branch: master
Gerrit-Owner: Ejegg <ej...@ejegg.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to