9

I had troubles with handling PayPal IPN messages on the web app I'm developing. I asked PayPal Merchant Technical Support for info about handling Reversed, Canceled_Reversed and Refunded IPN messages. This code below is what I found useful from their answers. I hope it will use others too:

Payment:

{
    "mc_gross":"5.00",
    "protection_eligibility":"Ineligible",
    "item_number1":"",
    "payer_id":"2LMAK5CCRFC7Y",
    "tax":"0.00",
    "payment_date":"15:51:55 May 02, 2014 PDT",
    "payment_status":"Completed",
    "charset":"windows-1252",
    "mc_shipping":"0.00",
    "mc_handling":"0.00",
    "first_name":"Roman",
    "mc_fee":"0.45",
    "notify_version":"3.8",
    "custom":"",
    "payer_status":"verified",
    "num_cart_items":"1",
    "mc_handling1":"0.00",
    "verify_sign":"AhKjPyUAFwaeM5vZHwjU.0caZhHtAV.H1ZruV63s-yLcAYfGQU8WYTEX",
    "payer_email":"XXXXXX",
    "mc_shipping1":"0.00",
    "tax1":"0.00",
    "txn_id":"64M28299HV0955007",
    "payment_type":"instant",
    "last_name":"Arora",
    "item_name1":"Air Pilots",
    "receiver_email":"XXXXXX",
    "payment_fee":"0.45",
    "quantity1":"1",
    "receiver_id":"XXXXXX",
    "txn_type":"cart",
    "mc_gross_1":"5.00",
    "mc_currency":"USD",
    "residence_country":"US",
    "transaction_subject":"Air Pilots",
    "payment_gross":"5.00",
    "ipn_track_id":"dfa90ecb35b46"
}

When a dispute is filed with paypal resolution center: This IPN has the same txn_id of the initial payment

{
    "txn_type":"new_case",
    "payment_date":"15:51:55 May 02, 2014 PDT",
    "case_id":"PP-003-125-383-356",
    "case_type":"dispute",
    "business":"XXXXXX",
    "verify_sign":"AbFfRIjxGf8ulMoIvA2Jhdo84gY5Ahewo.T-JjKYBzZxoAYuDLiZf5oK",
    "payer_email":"XXXXXX",
    "txn_id":"64M28299HV0955007",
    "case_creation_date":"14:46:47 May 05, 2014 PDT",
    "receiver_email":"XXXXXX",
    "payer_id":"2LMAK5CCRFC7Y",
    "receiver_id":"XXXXXX",
    "reason_code":"non_receipt",
    "custom":"","charset":"windows-1252",
    "notify_version":"3.8",
    "ipn_track_id":"6b3a7ef61a303"
}

Amount on hold(payment_status is Reversed): The txn_id of initial payment is the parent_txn_id. It has a new txn_id.

{
    "mc_gross":"-4.55",
    "protection_eligibility":"Ineligible",
    "item_number1":"",
    "payer_id":"2LMAK5CCRFC7Y",
    "payment_date":"14:47:45 May 05, 2014 PDT",
    "payment_status":"Reversed",
    "charset":"windows-1252",
    "mc_shipping":"0.00",
    "mc_handling":"0.00",
    "first_name":"Roman",
    "mc_fee":"-0.45",
    "notify_version":"3.8",
    "reason_code":"buyer_complaint",
    "custom":"",
    "business":"XXXXXX",
    "mc_handling1":"0.00",
    "verify_sign":"Aayt7rRv.9vczRke0KD5otSJgqTEA6ETzuIl3f7JWHiTh.q-Pp8Lh7QW",
    "payer_email":"XXXXXX",
    "mc_shipping1":"0.00",
    "tax1":"0.00",
    "parent_txn_id":"64M28299HV0955007",
    "txn_id":"4RW75981SW305352R",
    "payment_type":"instant",
    "last_name":"Arora",
    "item_name1":"Air Pilots",
    "receiver_email":"XXXXXX",
    "payment_fee":"-0.45",
    "quantity1":"1",
    "receiver_id":"XXXXXX",
    "mc_gross_1":"5.00",
    "mc_currency":"USD",
    "residence_country":"US",
    "transaction_subject":"Air Pilots",
    "payment_gross":"-4.55",
    "ipn_track_id":"ed496d8ef1d7d"
}

Amount released(payment_status is Canceled_Reversal) - Merchant won the dispute: The txn_id of initial payment is the parent_txn_id. It has same txn_id of the IPN - Amount on hold.

{
    "mc_gross":"4.55",
    "protection_eligibility":"Ineligible",
    "item_number1":"",
    "payer_id":"2LMAK5CCRFC7Y",
    "payment_date":"14:47:45 May 05, 2014 PDT",
    "payment_status":"Canceled_Reversal",
    "charset":"windows-1252",
    "mc_shipping":"0.00",
    "mc_handling":"0.00",
    "first_name":"Roman",
    "mc_fee":"0.45",
    "notify_version":"3.8",
    "reason_code":"buyer_complaint",
    "custom":"",
    "business":"XXXXXX",
    "mc_handling1":"0.00",
    "verify_sign":"Auodxl0Yf.7io9Qqvln7PODrgOvjAbuOsf7PTpgdLQyLHk1uoYabZCsl",
    "payer_email":"XXXXXX",
    "mc_shipping1":"0.00",
    "tax1":"0.00",
    "parent_txn_id":"64M28299HV0955007",
    "txn_id":"4RW75981SW305352R",
    "payment_type":"instant",
    "last_name":"Arora",
    "item_name1":"Air Pilots",
    "receiver_email":"XXXXXX",
    "payment_fee":"0.45",
    "quantity1":"1",
    "receiver_id":"XXXXXX",
    "mc_gross_1":"5.00",
    "mc_currency":"USD",
    "residence_country":"US",
    "transaction_subject":"Air Pilots",
    "payment_gross":"4.55",
    "ipn_track_id":"72b0067375b5f"
}

Reversal(payment_status is Refunded) - Merchant lost the dispute: The txn_id of initial payment is the parent_txn_id. It has new txn_id.

{
    "mc_gross":"-5.00",
    "protection_eligibility":"Ineligible",
    "item_number1":"",
    "payer_id":"2LMAK5CCRFC7Y",
    "payment_date":"10:45:49 May 06, 2014 PDT",
    "payment_status":"Refunded",
    "charset":"windows-1252",
    "mc_shipping":"0.00",
    "mc_handling":"0.00",
    "first_name":"Roman",
    "mc_fee":"-0.15",
    "notify_version":"3.8",
    "reason_code":"refund",
    "custom":"",
    "business":"XXXXXX",
    "mc_handling1":"0.00",
    "verify_sign":"AmmJ3Da6WMy0qcyvYpAIcfVWfBEgAJfGvFm8TK2MGOZV6Hc9Ll5axN.V",
    "payer_email":"XXXXXX",
    "mc_shipping1":"0.00",
    "tax1":"0.00",
    "parent_txn_id":"64M28299HV0955007",
    "txn_id":"4CG08179BW957404H",
    "payment_type":"instant",
    "last_name":"Arora",
    "item_name1":"Air Pilots",
    "receiver_email":"XXXXXX",
    "payment_fee":"-0.15",
    "quantity1":"1",
    "receiver_id":"XXXXXX",
    "mc_gross_1":"5.00",
    "mc_currency":"USD",
    "residence_country":"US",
    "transaction_subject":"Air Pilots",
    "payment_gross":"-5.00",
    "ipn_track_id":"54a6104f4cebb"
}
kiriz
  • 655
  • 1
  • 7
  • 24

0 Answers0