Включает ли PayPal варианты интеграции платежей, которые не требуют показа пользователю PayPal? - PullRequest
3 голосов
/ 23 декабря 2009

Мы надеемся заменить использование Authorize.net. Я потратил много времени на изучение документации PayPal, но не могу найти четкий ответ на мой вопрос:

Используя тысячи десятков различных API PayPal, можно оформить заказ на нашем сайте, где мы собираем и обрабатываем информацию о кредитной карте от клиента, и клиент никогда не покидает наш сайт, и клиент никогда не должен видеть что-либо связанное с PayPal (таким образом, PayPal на 100% невидим).

Я смущен этой страницей документации PayPal : «Обратите внимание: API Direct Payment не является отдельным продуктом. Вы должны использовать API Direct Payment и Express Checkout вместе как часть решения Website Payments Pro». как экспресс-заказ требует, чтобы вы показывали логотипы PayPal и т. д.

И на этой странице достаточно ясно сказано, что для использования API прямых платежей вам нужно предложить фирменный вариант экспресс-оплаты.

Полагаю, я просто ищу подтверждение того, что в SO есть люди, которые используют PayPal таким образом, и у них не было проблем с сохранением 100% невидимости PayPal для клиента?

Ответы [ 6 ]

5 голосов
/ 23 декабря 2009

Да, вы можете .. Мы используем PayPal на нашем сайте, PerqWorks и разрешаем оплату только кредитной картой. Продукт PayPal - это платежи через веб-сайт Pro. Я сделал интеграцию, это было довольно легко, и стоимость была бы низкой, если ваши продажи не превышали $ 10K в месяц.

РЕДАКТИРОВАТЬ :: Мне нужно уточнить это - мы получили исключение от PayPal, чтобы мы не имели кнопки PayPal на нашем сайте. Я пропустил эту информацию, потому что кто-то еще в моем офисе на самом деле сделал это. Я советую вам обратиться к сотруднику учетной записи интеграции PayPal, который сделал для нас исключение.

3 голосов
/ 23 декабря 2009

Единственный известный мне способ полностью интегрировать и исключить брендинг PayPal из процесса - это использовать их Payflow Pro сервис шлюза. Я использовал его раньше, и это очень похоже на работу с любым другим платежным шлюзом (например, Authorize.net).

Однако это полностью зависит от вас, но я обнаружил, что все еще есть люди, которые предпочитают использовать свою учетную запись PayPal. Они могут бояться возможного отсутствия безопасности на небольших или неизвестных сайтах электронной коммерции. Или, возможно, они заказывают из другой страны, и в этом случае учетная запись PayPal предлагает богатые варианты финансирования и автоматическую конвертацию валюты. Так что приятно хотя бы предложить вариант стандартной процедуры оплаты PayPal или что-то подобное.

1 голос
/ 23 декабря 2009

Я не могу дать вам однозначного «нет», но я вполне уверен, что PayPal не допустит этого. Они зависят от дохода, получаемого от использования баланса PayPal или банковского счета покупателя для оплаты чего-либо и взимания с продавца процента. Процент продавца не намного больше, чем покрывает плату эмитента кредитной карты.

Если не ввести учетные данные пользователей PayPal на вашем сайте, они не смогут использовать другой источник финансирования, кроме кредитных карт. Проблема заключается в том, что это создаст огромную уязвимость для фишинговых атак, чтобы пользователи привыкли вводить свои данные для входа в систему PayPal на не-PayPal-сайтах.

В этот момент вы говорите о стандартном счете продавца кредитных карт.

0 голосов
/ 09 ноября 2011

Одно время я использовал Paypal Pro для этой цели. Просматривая вашу ссылку, кажется, что они требуют, чтобы вы использовали как PayPal Checkout, так и обычный Checkout.
Тем не менее, вы все еще можете достичь своей цели. Что происходит, так это то, что они могут оформить заказ и ничего не знать об этом через PayPal ИЛИ они могут нажать кнопку PayPal и покинуть ваш веб-сайт. После оплаты вы можете настроить страницу возврата «спасибо» обратно на свой сайт. Кроме этого, вы должны были бы заставить их утвердить исключение.

0 голосов
/ 23 декабря 2009

Я не могу рассказать вам об API Paypal, но у меня внутри что-то горит, читая вашу тему.

Для меня, как для пользователя, очень некрасиво видеть форму случайного сайта, который запрашивает мои платежные данные. Намек на то, куда на самом деле отправляются мои данные, намного лучше, но на самом деле это положительно, только если сайт отправляет меня в PayPal, где я могу предоставить свои платежные данные, сообщить мне о PayPal, проверить, что я отправляю мои данные для PayPal и т. д.

Это своего рода защита, которую вы берете у своих клиентов, если делаете все это за кулисами - даже если вы пишете им, что их платежные данные обрабатываются только PayPal, у них нет прозрачного способа проверить это.

Я бы воспользовался возможностью сделать опрос среди ваших клиентов на предмет того, что они предпочли бы, прежде чем внедрять что-то неясное.

0 голосов
/ 23 декабря 2009

Вы определенно можете использовать Paypal в качестве отдельной обработки кредитной карты. Счет PayPal должен быть настроен для PayPal Pro.

Вы можете скачать DLL API с сайта PayPal.

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
...