Railsの、ActiveMerchant、およびPayPalのエクスプレスゲートウェイ - ユーザーのAPIの資格情報を検証
-
21-08-2019 - |
質問
私は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
右、あなたがActiveMerchantを使用して、ユーザーの資格情報をテストしたい場合は、ゲートウェイ上transaction_searchメソッドを使用しますので、
この例では、成功(テストの資格情報を記入してください)を返します。
@username = ''
@password = ''
@signature = ''
gateway = ActiveMerchant::Billing::PaypalExpressGateway.new(
login: @username,
password: @password,
signature: @signature,
test: true
)
gateway.transaction_search({start_date: DateTime.now})