PayPal Express を使用するマーケットプレイス アプリケーションを構築しています。売り手が PayPal API 資格情報を入力するためのフォームを用意しましたが、PayPal に何らかの呼び出しを行うことによってそれらを検証する方法が必要です。
ActiveMerchant で PaypalExpressGateway を使用していますが、標準の購入コントロール以外には何も表示されません。使用できるヌル操作はありますか?
どんな助けでも大歓迎です!
PayPal Express を使用するマーケットプレイス アプリケーションを構築しています。売り手が PayPal API 資格情報を入力するためのフォームを用意しましたが、PayPal に何らかの呼び出しを行うことによってそれらを検証する方法が必要です。
ActiveMerchant で PaypalExpressGateway を使用していますが、標準の購入コントロール以外には何も表示されません。使用できるヌル操作はありますか?
どんな助けでも大歓迎です!
この目的でTransactionSearch操作を使用しています。これを指定するSTARTDATE=2100-01-01 00:00:00
と、基本的にノーオペレーションになります。
販売者からの追加の入力を必要とせずに、資格情報を検証します。
API には GetBalance の呼び出しもあります。 サンプルコード
最も簡単な (そして最も速い?) 方法のように見えます。
セキュリティ上の理由から、電子メールが有効なペイパル アカウントであるかどうかを確認する方法はありません。アカウントの有効性が本当に必要な場合は、いつでも少額の取引を行ってから無効にすることができます。
そうです、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})
よし、4時間後…
モジュール ActiveMerchant #:nodoc: モジュール課金 #:nodoc: クラス PaypalExpressGateway < ゲートウェイ def get_balance (オプション = {}) commit 'GetBalance', build_get_balance_request(オプション) 終わり プライベート def build_get_balance_request (オプション) xml = Builder::XmlMarkup.new :indent => 2 xml.tag! 'GetBalanceReq', 'xmlns' => PAYPAL_NAMESPACE do xml.tag! 'GetBalanceRequest', 'xmlns:n2' => EBAY_NAMESPACE do xml.tag! 「n2:バージョン」、API_VERSION xml.tag! 'n2:ReturnAllCurrencies', '1' 終わり 終わり xml.target! 終わり 終わり 終わり 終わり class SellerMerchantValidator < ActiveModel::Validator デフ検証(記録) paypal_attrs = ['paypal_api_username', 'paypal_api_password', 'paypal_api_signature'] もしrecord.paypal_merchant? && (record.changed - paypal_attrs).size < record.changed.size # paypal_attrs の 1 つが変更されました 応答 = record.gateway.get_balance response.params['balance'].present でない限り? record.errors[:base] << "PayPal の詳細を確認し、3 つすべてが正しく入力されていることを確認してください。" 終わり 終わり 終わり 終わり
TransactionSearch をチェックするアイデアを提供してくれた Neils に感謝します。
API フィールドのいずれかが変更されたかどうかを確認するより良い方法があれば教えてください。
個人的には答えがありません。しかし、Railscasts.com の Ryan Bates が最近、特に ActiveMerchant と Paypal に 6 つ (!) のエピソードを割いていることは知っています。railscasts.comでエピソード #141 から #146 をチェックしてください。
PayPal にはAddressVerify
API があります。指定された PayPal アカウント所有者の住所と郵便番号が一致するかどうかを確認します。実際、私は今、私たちのウェブサイトにそれを実装している最中です.
詳細については、
https ://www.x.com/docs/DOC-1162#id0862M0QH02L をご覧ください。