PayPal 是不是包含不需要向用户显示 PayPal 的支付集成选项?

Posted

技术标签:

【中文标题】PayPal 是不是包含不需要向用户显示 PayPal 的支付集成选项?【英文标题】:Does PayPal include payment integration options that do not require showing PayPal to the user?PayPal 是否包含不需要向用户显示 PayPal 的支付集成选项? 【发布时间】:2010-12-29 07:30:47 【问题描述】:

我们正在寻求替换我们对 Authorize.net 的使用。我花了很多时间查看 PayPal 文档,但找不到我的问题的明确答案:

使用 thousands 数十种不同的 PayPal API,我们可以在我们的网站上建立一个结帐流程,我们可以在其中捕获和处理来自客户的信用卡信息,而无需客户离开我们的网站,客户无需查看任何与 PayPal 相关的内容(因此 PayPal 是 100% 不可见的)。

我对@9​​87654321@ 感到困惑: “请注意:Direct Payment API 不是独立产品。作为 Website Payments Pro 解决方案的一部分,您需要同时使用 Direct Payment API 和 Express Checkout。”因为 Express Checkout 要求您显示 PayPal 徽标等。

this page 非常清楚地表明,您必须提供品牌的 Express 结帐选项才能使用 Direct Payments API。

我想我只是想确认一下 SO 上有人以这种方式使用 PayPal,并且在保持 PayPal 对客户 100% 不可见时没有遇到问题?

【问题讨论】:

【参考方案1】:

是的,您可以.. 我们在我们的网站上使用 PayPal,PerqWorks,并且只允许使用信用卡付款。 PayPal 产品是 Website Payments Pro。我做了集成,这很容易,而且如果您的销售额每月低于 1 万美元,成本也很低..

编辑:: 我需要澄清这一点——我们从 PayPal 收到了一个例外,允许我们在我们的网站上没有 PayPal 按钮。我错过了这个信息,因为我办公室的其他人实际上做了这个安排。我的建议是你问问你的 PayPal 集成账户的人,他们为我们做了例外..

【讨论】:

这个页面告诉我,你必须用 Express checkout 的东西显示 PayPal 品牌:paypal.com/us/cgi-bin/webscr?cmd=_wp-pro-feature-list -- ? 我同意,但我们询问了指定的 PayPal 客户代表,他澄清说不同意。如果您访问 Perq 网站,您会看到我们有一个没有 PayPal 标记的付款表单。 有趣,Paypal 不清楚。此页面明确指出“如果您使用 Website Payments Pro,则必须同时实现直接付款和快速结帐。”:cms.paypal.com/us/cgi-bin/…【参考方案2】:

我所知道的完全集成并将 PayPal 品牌排除在流程之外的唯一方法是使用他们的 Payflow Pro 网关服务。我以前用过它,它与处理任何其他支付网关(例如 Authorize.net)非常相似。

不过,这完全取决于您,但我发现仍有一些人更喜欢使用他们的 PayPal 帐户。他们可能担心小型或未知电子商务网站可能缺乏安全性。或者他们可能是从另一个国家订购的,在这种情况下,PayPal 帐户提供了丰富的资金选择和自动货币转换。因此,最好至少提供 PayPal 标准结账流程或类似的选项。

【讨论】:

【参考方案3】:

我不能给你一个明确的否定,但我相当肯定 PayPal 不会允许这样做。他们依赖于使用买家的 PayPal 余额或银行账户支付某些东西并向商家收取一定百分比的收入。商家的百分比仅用于支付信用卡发卡机构的费用。

如果没有在您的网站上输入用户的 PayPal 凭据,他们就不可能使用信用卡以外的资金来源。这样做的问题是,如果用户习惯于在非 PayPal 网站上输入他们的 PayPal 登录信息,则会造成网络钓鱼攻击的巨大漏洞。

此时您基本上是在谈论标准的信用卡商家帐户。

【讨论】:

【参考方案4】:

您绝对可以将 Paypal 用作独立的信用卡处理工具。必须为 paypal pro 设置 paypal 帐户。

您可以从 paypal 开发网站下载 API DLL。

paypal_base.dll
log4net.dll

这是一个关于如何将它用于 VB.NET 的示例函数,但您可以相对容易地转换为 C#:

Imports com.paypal.sdk.services
Imports com.paypal.soap.api
Imports com.paypal.sdk.profiles

  Private Function processCC() As Boolean


    Dim caller As New CallerServices
    Dim profile As IAPIProfile = ProfileFactory.createSignatureAPIProfile

    profile.APIUsername = AppSettings("APIUsername")
    profile.APIPassword = AppSettings("APIPassword")
    profile.APISignature = AppSettings("APISignature")
    profile.Environment = AppSettings("Environment")

    caller.APIProfile = profile

    Dim pp_Request As New DoDirectPaymentRequestType
    pp_Request.Version = "51.0"

    pp_Request.DoDirectPaymentRequestDetails = New DoDirectPaymentRequestDetailsType

    pp_Request.DoDirectPaymentRequestDetails.IPAddress = Request.ServerVariables("REMOTE_ADDR") 
    pp_Request.DoDirectPaymentRequestDetails.MerchantSessionId = Session.SessionID
    pp_Request.DoDirectPaymentRequestDetails.PaymentAction = PaymentActionCodeType.Sale

    pp_Request.DoDirectPaymentRequestDetails.CreditCard = New CreditCardDetailsType

    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CreditCardNumber = Request("ccNumber")

    Select Case Request("ccType")
        Case "visa"
            pp_Request.DoDirectPaymentRequestDetails.CreditCard.CreditCardType = CreditCardTypeType.Visa
        Case "mastercard"
            pp_Request.DoDirectPaymentRequestDetails.CreditCard.CreditCardType = CreditCardTypeType.MasterCard
        Case "amex"
            pp_Request.DoDirectPaymentRequestDetails.CreditCard.CreditCardType = CreditCardTypeType.Amex
        Case "discover"
            pp_Request.DoDirectPaymentRequestDetails.CreditCard.CreditCardType = CreditCardTypeType.Discover
    End Select



    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CVV2 = Request("CVV2")
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.ExpMonth = Request("expMonth")
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.ExpMonthSpecified = True
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.ExpYear = Request("expYear")
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.ExpYearSpecified = True



    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner = New PayerInfoType
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Payer = Request("email")
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.PayerID = ""
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.PayerStatus = PayPalUserStatusCodeType.unverified
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.PayerCountry = CountryCodeType.US

    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address = New AddressType()
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.Street1 = Request("address1")
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.Street2 = Request("address2")
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.CityName = Request("city")
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.StateOrProvince = Request("state")
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.PostalCode = Request("zipcode")
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.CountryName = "USA"
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.Country = CountryCodeType.US
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.CountrySpecified = True

    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.PayerName = New PersonNameType()
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.PayerName.FirstName = Request("firstname")
    pp_Request.DoDirectPaymentRequestDetails.CreditCard.CardOwner.PayerName.LastName = Request("lastname")
    pp_Request.DoDirectPaymentRequestDetails.PaymentDetails = New PaymentDetailsType()
    pp_Request.DoDirectPaymentRequestDetails.PaymentDetails.OrderTotal = New BasicAmountType()


    pp_Request.DoDirectPaymentRequestDetails.PaymentDetails.OrderTotal.currencyID = CurrencyCodeType.USD

    Dim myOrder As Order = CType(Session("currentOrder"), Order)
    pp_Request.DoDirectPaymentRequestDetails.PaymentDetails.OrderTotal.Value = FormatNumber(myOrder.grandTotal, 2)

    'pp_Request.DoDirectPaymentRequestDetails.PaymentDetails.ShippingTotal = New BasicAmountType()
    'pp_Request.DoDirectPaymentRequestDetails.PaymentDetails.ShippingTotal.currencyID = CurrencyCodeType.USD
    'pp_Request.DoDirectPaymentRequestDetails.PaymentDetails.ShippingTotal.Value = FormatNumber(myOrder.orderShippingTotal, 2)

    pp_Request.DoDirectPaymentRequestDetails.PaymentDetails.ItemTotal = New BasicAmountType()
    pp_Request.DoDirectPaymentRequestDetails.PaymentDetails.ItemTotal.currencyID = CurrencyCodeType.USD
    pp_Request.DoDirectPaymentRequestDetails.PaymentDetails.ItemTotal.Value = FormatNumber(myOrder.orderSubTotal, 2)


    '// Execute the API operation and obtain the response.
    Dim pp_response As New DoDirectPaymentResponseType()
    pp_response = CType(caller.Call("DoDirectPayment", pp_Request), DoDirectPaymentResponseType)

    Session("myResponse") = pp_response

    Dim rtn As Boolean = False

    Select Case pp_response.Ack
        Case AckCodeType.Failure
            rtn = False
        Case AckCodeType.FailureWithWarning
            rtn = False
        Case AckCodeType.Success
            Return True
        Case AckCodeType.SuccessWithWarning
            rtn = True
        Case AckCodeType.Warning
            rtn = False

    End Select

    Return rtn

End Function

【讨论】:

此页面向我显示,您必须在 Express Checkout 中显示 PayPal 品牌:paypal.com/us/cgi-bin/webscr?cmd=_wp-pro-feature-list -- ?【参考方案5】:

有一次,我为此目的使用了 Paypal Pro。在查看您的链接时,他们似乎确实要求您同时使用贝宝结帐和常规结帐。 但是,您仍然可以实现您的目的。发生的情况是,他们可以通过贝宝结帐,但对它一无所知,或者他们可以单击贝宝按钮并离开您的网站。付款后,您可以将“谢谢”返回页面设置回您的网站。 除此之外,您必须让他们批准例外。

【讨论】:

【参考方案6】:

我不能告诉你有关 Paypal 的 API,但我内心有一些东西正在燃烧,阅读你的主题。

对于作为用户的我来说,仅仅看到一个声称我的付款数据的随机网站形式是非常难看的。提示我的数据实际去向要好得多,但只有当网站将我发送到贝宝时,我才可以让我的支付数据,通知我有关贝宝的信息,验证我正在发送我的数据到贝宝等。

如果您在幕后进行所有操作,这是您从客户那里获得的一种安全保障 - 即使您写信给他们,他们的付款数据仅由 paypal 处理,他们没有透明的方式来检查这一点。

在实施一些晦涩难懂的东西之前,我会借此机会在您的客户下进行民意调查,了解他们更喜欢什么。

【讨论】:

虽然我明白你的意思,但不同的品牌可能会被认为是不专业的,这是预算执行的结果,而不是良心决定让用户了解情况。 有些支付 API 不需要托管页面,但允许客户验证其支付数据传输。 Braintree 的透明重定向 API 就是其中之一:bit.ly/braintree-api。商家构建了一个直接提交到 Braintree 的表单,因此如果他们的客户担心,他们可以验证该表单是否已提交到 Braintree URL。 Braintree 只是重定向回商家网站,因此如果您不寻找它,Braintree 就不是很明显。披露:我为 Braintree 工作。

以上是关于PayPal 是不是包含不需要向用户显示 PayPal 的支付集成选项?的主要内容,如果未能解决你的问题,请参考以下文章

使用 PayPal 进行试用申请

paypal IPN 获取买家交易ID

PayPal REST API 未返回 payment_info

不使用沙盒的 PayPal 测试

我是不是需要 PayPal Preapproval 才能自动向用户付款?

使用 PayPal 向用户付款 [关闭]