私のアプリでPaymentNotificationsController
に入っているPaypal IPNがあります。しかし、いくつかの変数はカート内のアイテムの数に依存するので、PaymentNotificationを作成する前にそれらを抽出したいと思います。トリガーレールコントローラ機能 - Paypal Website標準IPN
これまでのところ、私が持っている:
class PaymentNotificationsController < ApplicationController
protect_from_forgery except: [:create]
def create
PaymentNotification.create!(params: params,
item_number: params[:item_number], item_name: params[:item_name], quantity: params[:quantity]
render nothing: true
end
end
通知がペイパルから来るときしかし、それはそうでitem_name1, item_number1, quantity1, item_name2, item_number2, quantity2
との形式で提供されます。 ただ1つの項目であっても、item_name1, item_number1, quantity1, option1
などとなります。
私は変数を抽出しようとするこの機能を持っていますが、私はどのように機能をトリガーするのか分かりません。私はコントローラの上部にbefore_action
を使ってみましたが、動作しませんでした。 wrong number of arguments(0 for 1)
を返しました:
ITEM_PARAM_PREFIXES = ["item_name", "item_number", "quantity"]
def extract_ipn_items_params(params)
item_params = []
loop do
item_num_to_test = item_params.length + 1
item_num_suffix = item_num_to_test.to_s
possible_param_name = ITEM_PARAM_PREFIXES[0] + item_num_suffix
if params.include?(possible_param_name)
this_item_params = {}
ITEM_PARAM_PREFIXES.each do |prefix|
this_item_params[prefix] = params[prefix + item_num_suffix]
end
item_params.push this_item_params
else
return item_params
end
end
end
だから、私は、変数を抽出してのparamsにそれらを配置する機能をトリガーんか、聞いてるのよ[:ITEM_NUMBER]、のparams [:ITEM_NAME]、のparams:各項目の[数量]カート内に2つのアイテムがある場合、2つの個別の支払通知が作成されますか?
注:両方のメソッドが同じPaymentNotificationsController
です。
ご協力いただければ幸いです。前もって感謝します!
あなたの答えをありがとう。だから、 'create'アクションの前にこれを追加すれば、createを実行する前にアイテムを抽出するでしょうか?これは、ファイルの外観です。>> [https://www.dropbox.com/s/2f508296wb378wc/sublime.png?dl=0](https://www.dropbox.com/s/2f508296wb378wc/sublime.png ?dl = 0) –
データはpaypalから 'PaymentNotificationsController'に送られます。 –
いいえ、作成する前にこれを実行しても、必要な属性を抽出するだけで、パラメータの状態は変更されないため、パラメータATMには影響しません。この場合は、item_name、item_number、およびquantityです。これらのレコードをdbに挿入するには、いくつかの方法があります。あなたの 'PaymentNotificationsController'を示すGithub Gistを作成できますか?レコードを挿入するループを使用する別のアプローチで私の答えを更新することができました – oreoluwa