3

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)

私はこれを達成するためのアプローチを見つけていないので、これはそれらの多くを助けるかもしれません...

これ以外のより良い解決策は最も高く評価されます

前もって感謝します

4

1 に答える 1

1

簡単に言えば、実際に試して購入する必要があるということです。さらに、これにより、購入者が最初から最後まで経験することができます. 1 つまたは 2 つのステップをスキップしようとしている特定の理由はありますか?

一部のマーチャントは、フローを 1 回だけ実行し、返された情報を取得してから、同じ文字列を使用してフォーム ページを作成し、それを使用して、テストのためにページに情報をポストします。そうすれば、フローを何度も通過する必要はありませんが、セットアップによっては機能する場合と機能しない場合があります。

ほとんどの場合、オプション A を使用し、最初から最後までフローを実行します。

于 2013-02-27T14:39:52.527 に答える