Testing Paypal subscription IPN

前端 未结 5 715
小蘑菇
小蘑菇 2020-12-07 17:38

I\'d like to test paypal subscription IPNs, both the ones received when a subscription is created, and the ones sent later with the next payment (such as monthly if the subs

5条回答
  •  眼角桃花
    2020-12-07 18:15

    PayPal's developer support and documentation is an embarrassment to them. But this particular limitation isn't as debilitating as it seems at first blush.

    For testing, define your recurring payment to not have a free trial. When you create a new subscription, your server will receive two IPN messages in quick succession, one to create the subscription and the second to apply a payment. That's basically all you need to test.

    If you have a free trial, you'll get basically the same pair of messages, just with a trial period between them. :)

    The first message ("create subscription") will look something like this. Note the 'txn_type' -- that's the key bit of information for disambiguating the two messages:

    {
      "txn_type"=>"subscr_signup",
      "subscr_id"=>"unique_id",
      "verify_sign"=>"random_gibberish",
    
      "item_number"=>"your_subscription_name"
      "subscr_date"=>"14:32:23 Feb 15, 2010 PST",
      "btn_id"=>"1111111",
      "item_name"=>"Your Subscription Description",
      "recurring"=>"1",
      "period1"=>"1 M",
    
      # This example is from a "free trial" IPN notification-- if you don't have a 
      # free trial defined, there will only be 'period1' fields, and they'll
      # have the data that appears here in the 'period3' fields.
      "amount1"=>"0.00",
      "mc_amount1"=>"0.00",
      "period3"=>"1 M",
      "amount3"=>"34.95",
      "mc_amount3"=>"34.95",
      "mc_currency"=>"USD",
    
      "payer_status"=>"verified",
      "payer_id"=>"payer_unique_id",
      "first_name"=>"Test",
      "last_name"=>"User",
      "payer_email"=>"test_xxxx@example.com",
      "residence_country"=>"US",
    
      "business"=>"seller_xxxxxxx@example.com",
      "receiver_email"=>"seller_xxxxxxx@example.com",
    
      "reattempt"=>"1",
    
      "charset"=>"windows-1252","notify_version"=>"2.9","test_ipn"=>"1",
    }
    

    The second message is the more interesting one in this case. It will essentially be the exact same message you'll get later when the recurring payment is applied. It looks something like this:

    {
      "txn_type"=>"subscr_payment",
      "subscr_id"=>"unique_id",
      "verify_sign"=>"random_gibberish",
    
      "txn_id"=>"payment_unique_id",
      "payment_status"=>"Completed",
      "payment_date"=>"12:45:33 Feb 16, 2010 PST",
    
      "item_number"=>"your_subscription_name"
      "subscr_date"=>"14:32:23 Feb 15, 2010 PST",
      "custom"=>"data-you-sent-in-a-custom-field",
    
      "id"=>"1",
      "payment_gross"=>"34.95",
      "mc_currency"=>"USD",
      "payment_type"=>"instant",
      "payment_fee"=>"1.31",
      "payer_status"=>"verified",
      "mc_fee"=>"1.31",
      "mc_gross"=>"34.95",
      "btn_id"=>"1111111",
    
      "payer_id"=>"payer_unique_id",
      "first_name"=>"Test",
      "last_name"=>"User",
      "payer_email"=>"test_xxxx@example.com",
      "residence_country"=>"US",
    
      "receiver_id"=>"your_merchant_id",
      "business"=>"seller_xxxxxxx@example.com",
      "receiver_email"=>"seller_xxxxxxx@example.com",
    
      "protection_eligibility"=>"Ineligible",
      "transaction_subject"=>"",
      "charset"=>"windows-1252","notify_version"=>"2.9","test_ipn"=>"1",
    }
    

    So you can do almost all of your testing without waiting a day. By the time you think you've got it nailed down, you'll be receiving lots of subscription IPN messages the next day.

    In addition, here is a link to PayPal's documentation for further reference.

提交回复
热议问题