3

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

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

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

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

我想我只是在寻找确认 SO 上有人以这种方式使用 PayPal 并且没有遇到让 PayPal 100% 对客户不可见的问题吗?

4

6 回答 6

5

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

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

于 2009-12-22T22:56:21.800 回答
3

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

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

于 2009-12-22T22:45:28.393 回答
1

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

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

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

于 2009-12-22T22:47:40.497 回答
0

您绝对可以将 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
于 2009-12-22T22:57:17.783 回答
0

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

于 2011-11-09T04:08:19.287 回答
-2

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

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

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

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

于 2009-12-22T22:59:32.350 回答