Railsの、ActiveMerchant、およびPayPalのエクスプレスゲートウェイ - ユーザーのAPIの資格情報を検証

StackOverflow https://stackoverflow.com/questions/509021

質問

私はPayPalのExpressを使用して、市場のアプリケーションを構築しています。私は入力に自分のPayPal APIの資格情報を売り手のためのフォームを持っているが、私はペイパルへの呼び出しのいくつかの並べ替えを行うことで、それらを検証する方法が必要になります。

私はActiveMerchantでPaypalExpressGatewayを使用している、と私は、標準的な購入のコントロール以外に何も表示されません。使用することができ、ヌル操作の任意の並べ替えがありますか?

すべてのヘルプをいただければ幸いです!

役に立ちましたか?

解決

セキュリティ上の理由から、メールが有効なPayPalアカウントであるかどうかを確認する方法はありません。あなたはいつも小さな取引を行い、その後、アカウントの有効性が本当に必要とされている場合、それを無効にすることができます。

他のヒント

私は TransactionSearchするこの目的のために操作。 STARTDATE=2100-01-01 00:00:00を指定することにより、基本的にはノーオペレーションになります。

これは、販売者からの追加の入力を必要とせずに、あなたのための資格情報を検証します。

私は個人的に答えを持っていません。しかし、私はRailscasts.comのライアンベイツは、最近6を注いできました(!)特にActiveMerchantとペイパルへのエピソードを知っています。 railscasts.com ので#146を介してのエピソード#141をチェックします。

[OK]を、4時間後に...

module ActiveMerchant #:nodoc:
  module Billing #:nodoc:
    class PaypalExpressGateway < Gateway

      def get_balance(options = {})
        commit 'GetBalance', build_get_balance_request(options)
      end

    private
      def build_get_balance_request(options)
        xml = Builder::XmlMarkup.new :indent => 2
        xml.tag! 'GetBalanceReq', 'xmlns' => PAYPAL_NAMESPACE do
          xml.tag! 'GetBalanceRequest', 'xmlns:n2' => EBAY_NAMESPACE do
            xml.tag! 'n2:Version', API_VERSION
            xml.tag! 'n2:ReturnAllCurrencies', '1'
          end
        end

        xml.target!
      end
    end
  end
end

class SellerMerchantValidator < ActiveModel::Validator
  def validate(record)
    paypal_attrs = ['paypal_api_username', 'paypal_api_password', 'paypal_api_signature']
    if record.paypal_merchant? && (record.changed - paypal_attrs).size < record.changed.size # one of paypal_attrs changed
      response = record.gateway.get_balance
      unless response.params['balance'].present?
        record.errors[:base] << "Please check the PayPal details and make sure all three are entered correctly."
      end
    end
  end
end

TransactionSearchをチェックするという考えのためのニールスに感謝します。

APIフィールドのいずれかが変更されているかどうかを確認するためのより良い方法がある場合は私に知らせてくださいます。

APIでGetBalanceのためのコールもあります。 いくつかのサンプルコード

最も簡単なように見えます(そして最速?)道ます。

PayPalはAddressVerifyのAPIを持っています。これは、住所と郵便番号が指定されたPayPalアカウントの所有者のものと一致するかどうかを確認します。私は実際には、今私たちのウェブサイト上でそれを実装するプロセスにいるよ。

あなたはここでそれについての詳細を読むことができます。
https://www.x.com/docs/DOC-1162#id0862M0QH02L

、ここで:
https://cms.paypal.com/us / CGI-binに/?&CMD = _render-コンテンツ&CONTENT_ID =開発者/ e_howto_api_nvp_r_AddressVerifyする

右、あなたがActiveMerchantを使用して、ユーザーの資格情報をテストしたい場合は、ゲートウェイ上transaction_searchメソッドを使用しますので、

ます。https:// githubの。 COM / Shopify / active_merchant /ブロブ/ cb72e0f9c58f57b1293e6e976229b26cfbfee6a8 / libに/ active_merchant /請求/ゲートウェイ/ペイパル/ paypal_common_api.rbする

この例では、成功(テストの資格情報を記入してください)を返します。

@username = ''
@password = ''
@signature = ''
gateway = ActiveMerchant::Billing::PaypalExpressGateway.new(
  login:      @username,
  password:   @password,
  signature:  @signature,
  test:       true
)

gateway.transaction_search({start_date: DateTime.now})
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top