5

我正在构建一个使用 PayPal Express 的市场应用程序。我有一个表格供卖家输入他们的 PayPal API 凭据,但我需要一种方法来通过对 PayPal 进行某种调用来验证它们。

我在 ActiveMerchant 中使用 PaypalExpressGateway,除了标准的购买控制之外,我什么也没看到。是否可以使用任何类型的空操作?

任何帮助将不胜感激!

4

7 回答 7

2

为此,我正在使用TransactionSearch操作。通过指定STARTDATE=2100-01-01 00:00:00它基本上会导致无操作。

它将为您验证凭据,而无需卖家提供任何其他输入。

于 2011-01-20T09:41:28.800 回答
1

我个人没有答案。但我知道 Railscasts.com 的 Ryan Bates 最近专门为 ActiveMerchant 和 Paypal 投放了六集(!)。在railscasts.com查看第 141 到第 146集。

于 2009-02-11T08:49:10.963 回答
1

出于安全原因,无法检查电子邮件是否为有效的贝宝帐户。如果确实需要帐户有效性,您可以随时进行小额交易,然后将其作废。

于 2009-12-17T08:12:54.670 回答
1

好的,4小时后...

模块 ActiveMerchant #:nodoc:
  模块计费#:nodoc:
    类 PaypalExpressGateway < 网关

      def get_balance(options = {})
        提交'GetBalance',build_get_balance_request(选项)
      结尾

    私人的
      def build_get_balance_request(选项)
        xml = Builder::XmlMarkup.new :indent => 2
        xml.tag!'GetBalanceReq', 'xmlns' => PAYPAL_NAMESPACE 做
          xml.tag!'GetBalanceRequest', 'xmlns:n2' => EBAY_NAMESPACE 做
            xml.tag!'n2:版本',API_VERSION
            xml.tag!'n2:ReturnAllCurrencies', '1'
          结尾
        结尾

        xml.target!
      结尾
    结尾
  结尾
结尾

类 SellerMerchantValidator < ActiveModel::Validator
  def 验证(记录)
    paypal_attrs = ['paypal_api_username', 'paypal_api_password', 'paypal_api_signature']
    如果记录.paypal_merchant?&& (record.changed - paypal_attrs).size < record.changed.size #paypal_attrs 之一已更改
      响应 = record.gateway.get_balance
      除非 response.params['balance'].present?
        record.errors[:base] << "请检查 PayPal 详细信息并确保所有三个都正确输入。"
      结尾
    结尾
  结尾
结尾

感谢 Neils 检查 TransactionSearch 的想法。

请让我知道是否有更好的方法来检查任何 api 字段是否已更改。

于 2011-01-23T04:26:43.990 回答
1

API 中还有对 GetBalance 的调用。 一些示例代码

看起来是最简单(也是最快?)的方法。

于 2011-02-06T00:28:18.980 回答
1

对,所以如果您想使用 ActiveMerchant 测试用户的凭据,请使用网关上的 transaction_search 方法

https://github.com/Shopify/active_merchant/blob/cb72e0f9c58f57b1293e6e976229b26cfbfee6a8/lib/active_merchant/billing/gateways/paypal/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})
于 2014-05-13T13:56:31.217 回答
0

PayPal 确实有一个AddressVerifyAPI。它确认邮政地址和邮政编码是否与指定 PayPal 帐户持有人的邮政编码相符。事实上,我现在正在我们的网站上实施它。

您可以在此处阅读更多相关信息:
https ://www.x.com/docs/DOC-1162#id0862M0QH02L

在这里:
https ://cms.paypal.com/us/cgi-bin/?&cmd=_render-content&content_ID=developer/e_howto_api_nvp_r_AddressVerify

于 2010-01-26T01:16:36.643 回答