1

いくつかのスタックオーバーフローの投稿を集めたところ、ユーザーがペイパルの定期支払いをキャンセルすると、IPN 設定で設定された指定の URL に即時支払い通知が送信されます。しかし、私が収集できないのは、クエリ文字列でこの URL に送信されるデータです。私はこのリンクに出くわしました:

https://www.paypal.com/cgi-bin/webscr?cmd=p/acc/ipn-subscriptions-outside

IPN設定で指定されたURLで送信されるクエリ文字列の一部として送信されると私が想定する変数のリストを提供します。これが true の場合、txn_type の値が「subscr_cancel」になるため、この通知がキャンセル通知であることがわかります。

ただし、どの定期プランが実際にキャンセルされているかを知る必要があります。したがって、クエリ文字列の変数としてアクセスするには、定期的なプロファイル トークンを知る必要があります。

ここで何をしようとしているのかを理解していただくために、サンプル コードをいくつか示します。

def notify_url
if params[:txn_type] == "subscr_cancel"
  item_id = Order.where(paypal_recurring_profile_token: params[:recurring_profile_token]).unit_id_for_plan
  agent_host = CONFIG["agent_#{Rails.env}"]["host"]
  agent_port = CONFIG["agent_#{Rails.env}"]["port"]

 url = "http://#{agent_host}:#{agent_port}/home/deactivate?item_id=#{item_id}"
 begin
    resp = Net::HTTP.get(URI.parse(url))
    resp = JSON.parse(resp)
    puts "resp is: #{resp}"
    true
  rescue => error
    raise "Error: #{error}"
  end  

  if resp["status"] == "success"
    true
  end

end    
end

私が知る必要があるのは、定期請求のキャンセルの通知が送信されたときに txn_type が subscr_cancel と等しいかどうかだけですか? @PP_MTS_Chad は recurring_payment_id が含まれていることを確認済みです。txn_type も含まれているかどうかを知る必要があります。

4

1 に答える 1

2

プロファイルがキャンセルされると、IPN POST で、recurring_payment_idキャンセルされたプロファイルのプロファイルを持つ変数が返されます。

Array
(
    [amount3] => 69.95
    [address_status] => confirmed
    [recur_times] => 5
    [subscr_date] => 07:31:10 May 17, 2013 PDT
    [payer_id] => EW4KQ9CQX45F6
    [address_street] => 1 Main St
    [mc_amount3] => 69.95
    [charset] => KOI8-R
    [address_zip] => 95131
    [first_name] => MTS
    [reattempt] => 1
    [address_country_code] => US
    [address_name] => MTS Testing
    [notify_version] => 3.7
    [subscr_id] => I-628HEBW1V99M
    [payer_status] => verified
    [business] => chad@x.com
    [address_country] => United States
    [address_city] => San Jose
    [verify_sign] => AQ3T0Omh4bXNzomBbYUO2LL1dphyAiWU5Sa7wpw8spAU-Pb1YFnm-mig
    [payer_email] => mts_us_per@ccaples.com
    [last_name] => Testing
    [address_state] => CA
    [receiver_email] => chad@x.com
    [recurring] => 1
    [txn_type] => subscr_cancel
    [item_name] => Alice's Weekly Digest
    [mc_currency] => USD
    [item_number] => DIG Weekly
    [residence_country] => US
    [test_ipn] => 1
    [period3] => 6 M
    [ipn_track_id] => 54b49fde502a4
)
于 2013-05-16T20:15:45.837 に答える