我正在构建一个使用 PayPal Express 的市场应用程序。我有一个表格供卖家输入他们的 PayPal API 凭据,但我需要一种方法来通过对 PayPal 进行某种调用来验证它们。
我在 ActiveMerchant 中使用 PaypalExpressGateway,除了标准的购买控制之外,我什么也没看到。是否可以使用任何类型的空操作?
任何帮助将不胜感激!
我正在构建一个使用 PayPal Express 的市场应用程序。我有一个表格供卖家输入他们的 PayPal API 凭据,但我需要一种方法来通过对 PayPal 进行某种调用来验证它们。
我在 ActiveMerchant 中使用 PaypalExpressGateway,除了标准的购买控制之外,我什么也没看到。是否可以使用任何类型的空操作?
任何帮助将不胜感激!
为此,我正在使用TransactionSearch操作。通过指定STARTDATE=2100-01-01 00:00:00
它基本上会导致无操作。
它将为您验证凭据,而无需卖家提供任何其他输入。
我个人没有答案。但我知道 Railscasts.com 的 Ryan Bates 最近专门为 ActiveMerchant 和 Paypal 投放了六集(!)。在railscasts.com查看第 141 到第 146集。
出于安全原因,无法检查电子邮件是否为有效的贝宝帐户。如果确实需要帐户有效性,您可以随时进行小额交易,然后将其作废。
好的,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 字段是否已更改。
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})
PayPal 确实有一个AddressVerify
API。它确认邮政地址和邮政编码是否与指定 PayPal 帐户持有人的邮政编码相符。事实上,我现在正在我们的网站上实施它。
您可以在此处阅读更多相关信息:
https ://www.x.com/docs/DOC-1162#id0862M0QH02L