Frage

Ich baue eine Marktplatz-Anwendung, die PayPal Express verwendet. Ich habe für Verkäufer zur Eingabe eine Form bekam ihre PayPal-API-Anmeldeinformationen, aber ich brauche einen Weg, um sie zu validieren, indem eine Art Aufruf an PayPal zu machen.

Ich bin mit dem PaypalExpressGateway in ActiveMerchant, und ich weiß nicht, etwas anderes als die Standard-Kauf Kontrollen sehen. Gibt es irgendeine Art von null-Operation, die verwendet werden kann?

Jede Hilfe wäre sehr geschätzt werden!

War es hilfreich?

Lösung

Aus Sicherheitsgründen ist es nicht eine Möglichkeit zu überprüfen, ob die E-Mail ein gültiges PayPal-Konto ist. Sie können jederzeit eine kleine Transaktion machen und es dann nichtig, wenn Konto Gültigkeit wirklich erforderlich ist.

Andere Tipps

Ich bin mit dem Transaction Betrieb für diesen Zweck. Durch die Angabe STARTDATE=2100-01-01 00:00:00 es ergibt sich im Wesentlichen in einer No-op.

Es wird die Anmeldeinformationen für Sie, validieren, ohne zusätzliche Eingabe vom Verkäufer zu benötigen.

Ich habe die Antwort nicht persönlich. Aber ich weiß, Ryan Bates von Railscasts.com hat sechs kürzlich gewidmet (!) Episoden ActiveMerchant und Paypal im Besonderen. Check out Episoden # 141 bis # 146 unter railscasts.com .

Ok, nach 4 Stunden ...

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

Dank Neils für die Idee der Transaction zu überprüfen.

Bitte lassen Sie mich wissen, ob es einen besseren Weg, um zu überprüfen, ob einer der api Feld geändert.

Es gibt auch einen Aufruf zur getBalance in der API. Einige Beispielcode

Sieht aus wie die einfachste (und schnellste?) Weg.

PayPal hat eine AddressVerify API haben. Sie bestätigt, ob eine Postanschrift und Postleitzahl diejenigen des angegebenen PayPal Kontoinhaber übereinstimmen. Ich bin in dem Prozess es auf unserer Website jetzt in der Tat umzusetzen.

Sie können mehr darüber lesen Sie hier:
https://www.x.com/docs/DOC-1162#id0862M0QH02L

und hier:
https://cms.paypal.com/us / cgi-bin /? & cmd = _render-Gehalt & content_id = Entwickler / e_howto_api_nvp_r_AddressVerify

Richtig, also, wenn Sie ein Benutzeranmeldeinformationen ActiveMerchant testen möchten, verwenden Sie die transaction_search Methode auf dem Gateway

https: // GitHub. com / Shopify / active_merchant / Blob / cb72e0f9c58f57b1293e6e976229b26cfbfee6a8 / lib / active_merchant / Billing / Gateways / paypal / paypal_common_api.rb

In diesem Beispiel wird einen Erfolg zurückkehren (vergewissern Sie sich in Ihrer Testanmeldeinformation füllen)

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

gateway.transaction_search({start_date: DateTime.now})
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top