PaypalExpressGateway の購入を偽装する方法はありますか
PayPal の支払い処理に 2 つのアクションを使用しました。最初のアクションでは、ユーザーを PayPal サンドボックスにログインさせ、支払い確認のためにアプリケーションにリダイレクトします。
しかし、PAYPAL_GATEWAY.purchase
メソッドは成功せず、エラー メッセージが返されますPayment has not been authorized by the user.
これは、ユーザーによる購入を承認するためのステップがスキップされたためだと思います
PayPal を偽装または偽装して取引を受け入れる方法はありますか?
ActionController::TestCase
アクションをテストするには、これらのアクションを次のproducts#initiate_payment
products#confirm_payment
ように呼び出します
post :initiate_payment, initiate_payment_action_params(@product)
get :confirm_payment, confirm_action_params(@product, product_purchased, paypal_token)
Paypal コールバック応答を設定するには、paypal ログインにリダイレクトします
@setup_response = PAYPAL_GATEWAY.setup_purchase(amount, ip: request.remote_ip,
items: [{name: @product.name, quantity: 1, description: @product.description, amount: amount}],
currency: 'USD',
return_url: url_for(action: 'confirm_payment',
product_purchased: @product_purchased.id,
only_path: false),
cancel_return_url: url_for(action: 'index',
product_purchased: @product_purchased.id,
only_path: false))
redirect_to PAYPAL_GATEWAY.redirect_url_for(@setup_response.token)
アクションで購入トランザクションを処理しましproducts#confirm_payment
た。confirm_paymentのパラメーターを次のようにモックしました
{"product_purchased"=>"10", "token"=>"EC-91J25480XA799581U", "PayerID"=>"4QBC9Y658K6MA", "id"=>"55", "controller"=>"products", "action"=>"confirm_payment"}
get :confirm_payment, confirm_action_params(@product, product_purchased, paypal_token)
PAYPAL_GATEWAY の設定
PAYPAL_GATEWAY ||= ActiveMerchant::Billing::PaypalExpressGateway.new(paypal_options)
私はこれを達成するためのアプローチを見つけていないので、これはそれらの多くを助けるかもしれません...
これ以外のより良い解決策は最も高く評価されます
前もって感謝します