Как создать зашифрованную кнопку PayNow «на лету» для сторонних клиентов, используя Paypal NVP API?

8

Мне нужно создать зашифрованные кнопки PayNow paypal на лету для веб-сайта.
Я прочитал всю документацию, которую я могу найти на веб-сайте paypal.
Я понял, что мне нужно использовать BMPreateButton ButtonManager NVP API.
Но мне не удалось найти какую-либо информацию или какой-либо достаточно простой и документированный образец кода, о том, как я должен назвать этот API.

Нужно ли поместить мой параметр в форму и разместить его на каком-то сервере?
Нужно ли мне поместить весь параметр на URL-адрес, вызвать этот URL-адрес, использовать результат?
Как проверить подлинность этой службы? Я собираюсь создать зашифрованную кнопку paynow для разных учетных записей Paypal.

Может кто-нибудь показать мне какой-то код VB.Net или С#, который на самом деле называется этим API-интерфейсом BMCreateButton NVP?
Чтобы я мог видеть:

  • как выполнить вызов
  • как выполнить аутентификацию службы
  • как форматировать/использовать параметры вызова API
  • как получить результаты

Различные ссылки на полезный ресурс
 - Благодаря этому ответу я смог найти полезный пример кода здесь и там о том, как вызвать API Paypal.
 - Здесь более полезная информация о том, как работает Paypal NVP API.
 - Здесь интересный веб-сайт, который генерирует URL-адрес API для API BMCreateButton
 - Здесь вы можете найти инструкцию для получения учетных данных API третьей стороны. (спасибо этот ответ)
 - Еще одна полезная информация здесь об интеграции API Paypal
 - Здесь вы можете найти текущий и последний номер версии API Paypal

Обновление 1
Теперь я создал некоторый код, который на самом деле что-то делает, но он дает мне ошибку. Этот код фактически создает зашифрованную кнопку paynow, используя API BMCreateButton. Кажется, он работает, но когда я нажимаю кнопку paynow, он показывает все параметры оплаты, но также показывает ошибку "Была проблема с расшифровкой вашего безопасного заказа. Обратитесь к вашему торговцу.

Вот код:

Public Shared Sub PaypalTest3web()

    Dim NVP As New Dictionary(Of String, String)

    Dim strUsername As String = "aso_1273063882_biz_api3.megatesto.it"
    Dim strPassword As String = "1273063582"
    Dim strSignature As String = "A22sd7623RGUsduDHDSFU57N7dfhfS23DUYVhdf85du8S6FJ6D5bfoh5"

    Dim strNVPSandboxServer As String = "https://api-3t.sandbox.paypal.com/nvp"


    NVP.Add("USER", strUsername)
    NVP.Add("PWD", strPassword)
    NVP.Add("SIGNATURE", strSignature)


    Dim bvCount As Integer
    bvCount = 0

    NVP.Add("METHOD", "BMCreateButton")
    NVP.Add("VERSION", "85.0")

    NVP.Add("BUTTONCODE", "ENCRYPTED")    ''CLEARTEXT / ENCRYPTED
    NVP.Add("BUTTONTYPE", "BUYNOW")
    NVP.Add("BUTTONSUBTYPE", "PRODUCTS")  ''Optional: PRODUCTS / SERVICES

    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "business=D64TG758HIWj2") ''Merchant ID

    'bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "cmd=_s-xclick")  ''DONT SPECIFY the cmd parameter, if specifien it will generate an error on the decription of the "secure order", I don't know why...
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "lc=IT")
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "button_subtype=PRODUCTS")
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "item_name=Test_product")
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "item_number=123456")
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "amount=12.00")
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "currency_code=EUR")
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "quantity=1")

    ''build the parameter string
    Dim paramBuilder As New StringBuilder
    For Each kv As KeyValuePair(Of String, String) In NVP
        Dim st As String
        st = kv.Key & "=" & HttpUtility.UrlEncode(kv.Value) & "&"
        paramBuilder.Append(st)
    Next

    Dim param As String
    param = paramBuilder.ToString
    param = param.Substring(0, param.Length - 1) 'remove the last '&'

    'Create web request and web response objects, make sure you using the correct server (sandbox/live)
    Dim wrWebRequest As HttpWebRequest = DirectCast(WebRequest.Create(strNVPSandboxServer), HttpWebRequest)
    wrWebRequest.Method = "POST"

    Dim requestWriter As New StreamWriter(wrWebRequest.GetRequestStream())
    requestWriter.Write(param)
    requestWriter.Close()

    '' Get the response.
    Dim responseReader As StreamReader
    responseReader = New StreamReader(wrWebRequest.GetResponse().GetResponseStream())

    ''and read the response
    Dim responseData As String
    responseData = responseReader.ReadToEnd()
    responseReader.Close()

    ''url-decode the results
    Dim result As String
    result = HttpUtility.UrlDecode(responseData)

    Dim formattedResult As String

    formattedResult = "Request on " & strNVPSandboxServer & vbCrLf &
                     HttpUtility.UrlDecode(param.Replace("&", vbCrLf & "  ")) & vbCrLf & vbCrLf &
                     "Result:" & vbCrLf & result & vbCrLf & vbCrLf &
                     "--------------------------------------" & vbCrLf



    ''show the results
    Trace.WriteLine(result)
    MessageBox.Show(result)
End Sub

Вот ответ HTML

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
">
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynow_LG.gif" border="0" name="submit" alt="PayPal - Il sistema di pagamento online più facile e sicuro!">
<img alt="" border="0" src="https://www.sandbox.paypal.com/it_IT/i/scr/pixel.gif" width="1" height="1">
</form>

И вот ошибка, которую я получаю после нажатия на эту зашифрованную кнопку "платить сейчас"

Изображение 86659

Как вы можете видеть, все параметры (имя элемента, цена, item_id...) верны. Но я не могу понять, почему я получаю эту ошибку.

Если вы хотите попробовать этот код, вы должны заменить своего пользователя API/пароль/подпись. Сгенерированная кнопка PayNow работает только тогда, когда вы вошли в свою учетную запись в виде песочницы paypal.

Есть ли у вас какие-либо идеи о том, как решить эту ошибку?

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

Обновление 2
Кажется, что я нашел, как решить вышеупомянутую ошибку: просто удалите параметры "cmd = _s-xclick/_xclick". Если "cmd" не указан, кнопка paynow, похоже, не генерирует никаких ошибок. Необходимо больше тестирования... в любом случае я прокомментировал строку кода в примере кода.

Теперь вернемся к делу. Позвольте сделать некоторое тестирование, а затем найти правильный способ создания кнопки paynow для сторонних учетных записей PayPal.

  • 0
    Привет, Макс, следуя из другого ТАК вопроса, я расскажу тебе об этом позже сегодня, если этого не сделал никто другой.
  • 0
    @lethalMango: Большое спасибо, любая помощь очень ценится
Показать ещё 3 комментария
Теги:
paypal

1 ответ

9
Лучший ответ

Хорошо, наконец, я понял!: -)

Моя цель - создать зашифрованные кнопки PayNow "на лету" для некоторых наших клиентов. Ниже приведено краткое описание того, как API PayPal работает с сторонним доступом.

  • Создайте учетную запись Paypal Sandbox (здесь)
  • В этой учетной записи sandbox создайте 2 новых бизнес-счета
    вы должны подключить этот бизнес-аккаунт к кредитной карте. Это будет означать, что эта учетная запись "проверена", если она не будет работать
    • Первая учетная запись (учетная запись A) будет представлять нашу компанию.
    • Вторая учетная запись (учетная запись B) будет представлять собой одного из наших клиентов.
  • войдите в учетную запись A и запросите учетные данные API (инструкции здесь)
  • войдите в учетную запись B и предоставите API-разрешение для учетной записи A (здесь) проверьте параграф "Сторонняя аутентификация: укажите свою корзину" соответствующие разрешения проверки подлинности API ")
  • захватить учетные данные Api учетной записи A и поместить их в исходный код
  • захватить идентификатор торговца и адрес электронной почты продавца учетной записи B и поместить их в исходный код
  • запустите код
  • захватить возвращенный html, поместить его на веб-страницу и протестировать его, он должен работать (вам нужно войти в свою учетную запись в виде песочницы paypal, или сгенерированная кнопка не будет работать)

Почему эти простые и сжатые знания тайно разбросаны по бесчисленному количеству страниц справки PayPal, руководствам по PayPal PDF и сообщению в блоге третьих лиц, не поддается пониманию:-) В любом случае...

Вот рабочий код в VB.Net

Public Shared Sub PaypalThirdPartyPayNowButtonTest()
    Dim bvCount As Integer = 0  ''L_BUTTONVAR counter
    Dim NVP As New Dictionary(Of String, String)  ''Api Name-Value-Pair parameters

    ''define paypal SANDBOX server
    Dim paypalApiServerUrl As String = "https://api-3t.sandbox.paypal.com/nvp"

    ''define Api credentials of YOUR business paypal account 
    Dim yourApiUsername As String = "aso_1273063882_biz_api3.megatesto.it"
    Dim yourApiPassword As String = "1273063582"
    Dim yourApiSignature As String = "A22sd7623RGUsduDHDSFU57N7dfhfS23DUYVhdf85du8S6FJ6D5bfoh5"

    ''define Your CUSTOMER identification data
    Dim customerEmailID As String = "[email protected]"
    Dim customerMerchantID As String = "3S4EF7BI96YHS"


    ''use YOUR identification data
    NVP.Add("USER", yourApiUsername)
    NVP.Add("PWD", yourApiPassword)
    NVP.Add("SIGNATURE", yourApiSignature)

    ''use your CUSTOMER identification data
    NVP.Add("SUBJECT", customerEmailID)
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "business=" & customerMerchantID) ''Merchant ID


    ''Api method name and version
    NVP.Add("METHOD", "BMCreateButton")
    NVP.Add("VERSION", "85.0")

    ''method specific parameters
    NVP.Add("BUTTONCODE", "ENCRYPTED")
    NVP.Add("BUTTONTYPE", "BUYNOW")
    NVP.Add("BUTTONSUBTYPE", "PRODUCTS")

    ''Buynow button specific parameters
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "lc=IT")
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "button_subtype=PRODUCTS")
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "item_name=Test_product")
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "item_number=123456")
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "amount=12.00")
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "currency_code=EUR")
    bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "quantity=1")
    ''bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "cmd=_s-xclick")  'DONT' specify the cmd parameter, if you specify it, it wont work, paypal will give you an error

    ''build the parameter string
    Dim paramBuilder As New StringBuilder
    For Each kv As KeyValuePair(Of String, String) In NVP
        Dim st As String
        st = kv.Key & "=" & HttpUtility.UrlEncode(kv.Value) & "&"
        paramBuilder.Append(st)
    Next

    Dim param As String
    param = paramBuilder.ToString
    param = param.Substring(0, param.Length - 1) ''remove the last '&'


    ''Create web request and web response objects, make sure you using the correct server (sandbox/live)
    Dim wrWebRequest As HttpWebRequest = DirectCast(WebRequest.Create(paypalApiServerUrl), HttpWebRequest)
    wrWebRequest.Method = "POST"


    Dim requestWriter As New StreamWriter(wrWebRequest.GetRequestStream())
    requestWriter.Write(param)
    requestWriter.Close()

    '' Get the responseReader
    Dim responseReader As StreamReader
    responseReader = New StreamReader(wrWebRequest.GetResponse().GetResponseStream())

    ''read the response
    Dim responseData As String
    responseData = responseReader.ReadToEnd()
    responseReader.Close()


    ''url-decode the results
    Dim result As String
    result = HttpUtility.UrlDecode(responseData)

    Dim formattedResult As String

    formattedResult = "Request on " & paypalApiServerUrl & vbCrLf &
                     HttpUtility.UrlDecode(param.Replace("&", vbCrLf & "  ")) & vbCrLf & vbCrLf &
                     "Result:" & vbCrLf & HttpUtility.UrlDecode(responseData.Replace("&", vbCrLf & "  ")) & vbCrLf & vbCrLf &
                     "--------------------------------------" & vbCrLf

    ''show the results
    Trace.WriteLine(formattedResult)
    MessageBox.Show(formattedResult)
End Sub

И вот тот же код в С#

public static void PaypalThirdPartyPayNowButtonTest()
{
    int bvCount = 0; //L_BUTTONVAR counter
    Dictionary<string, string> NVP = new Dictionary<string, string>(); //Api Name-Value-Pair parameters

    //paypal SANDBOX server
    string paypalApiServerUrl = "https://api-3t.sandbox.paypal.com/nvp";

    //Api credentials of YOUR business paypal account 
    string yourApiUsername = "aso_1273063882_biz_api3.megatesto.it";
    string yourApiPassword = "1273063582";
    string yourApiSignature = "A22sd7623RGUsduDHDSFU57N7dfhfS23DUYVhdf85du8S6FJ6D5bfoh5";

    //Your CUSTOMER identification data
    string customerEmailID = "[email protected]";
    string customerMerchantID = "3S4EF7BI96YHS";

    //use YOUR identification data
    NVP.Add("USER", yourApiUsername);
    NVP.Add("PWD", yourApiPassword);
    NVP.Add("SIGNATURE", yourApiSignature);

    //use your CUSTOMER identification data
    NVP.Add("SUBJECT", customerEmailID);
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "business=" + customerMerchantID);

    //Api method name and version
    NVP.Add("METHOD", "BMCreateButton");
    NVP.Add("VERSION", "85.0");

    //method specific parameters
    NVP.Add("BUTTONCODE", "ENCRYPTED");
    NVP.Add("BUTTONTYPE", "BUYNOW");
    NVP.Add("BUTTONSUBTYPE", "PRODUCTS");

    //Buynow button specific parameters
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "lc=IT");
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "button_subtype=PRODUCTS");
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "item_name=Test_product");
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "item_number=123456");
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "amount=12.00");
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "currency_code=EUR");
    bvCount++; NVP.Add("L_BUTTONVAR" + bvCount.ToString() , "quantity=1");
    //bvCount = bvCount + 1 : NVP.Add("L_BUTTONVAR" & bvCount, "cmd=_s-xclick")  //DON'T specify the cmd parameter, if you specify it, it wont work, paypal will give you an error


    //build the parameter string
    StringBuilder paramBuilder = new StringBuilder();
    foreach (KeyValuePair<string, string> kv in NVP)
    {
        string st = kv.Key + "=" + System.Web.HttpUtility.UrlEncode(kv.Value) + "&";
        paramBuilder.Append(st);
    }

    string param = paramBuilder.ToString();
    param = param.Substring(0, param.Length - 1); //remove the last '&'


    //Create web request and web response objects, make sure you using the correct server (sandbox/live)
    System.Net.HttpWebRequest wrWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(paypalApiServerUrl);
    wrWebRequest.Method = "POST";

    System.IO.StreamWriter requestWriter = new System.IO.StreamWriter(wrWebRequest.GetRequestStream());
    requestWriter.Write(param);
    requestWriter.Close();


    //Get the responseReader
    System.IO.StreamReader responseReader = new System.IO.StreamReader(wrWebRequest.GetResponse().GetResponseStream());
    string responseData = responseReader.ReadToEnd();
    responseReader.Close();

    //url-decode the results
    string result = System.Web.HttpUtility.UrlDecode(responseData);

    string formattedResult = "Request on " + paypalApiServerUrl + "\r\n" + System.Web.HttpUtility.UrlDecode(param.Replace("&", "\r\n  ")) + "\r\n\r\nResult:\r\n" + System.Web.HttpUtility.UrlDecode(responseData.Replace("&", "\r\n  ")) + "\r\n\r\n--------------------------------------\r\n";

    //show the results
    System.Diagnostics.Trace.WriteLine(formattedResult);
    System.Windows.Forms.MessageBox.Show(formattedResult);
}

Желаю всем счастливой интеграции PayPal: -)

Обновление (для PHP-кодера)
@Style запрашивает рабочий пример PHP... Я не знаю PHP, но я нашел некоторые ссылки, которые могут содержать полезную информацию для PHP-кодера: вы можете искать BMCreateButton api внутри этих исходных файлов:

  • 0
    Пример кода, который вы мне предоставили, почти сработал - мне пришлось изменить версию с 85 на 65.2, чтобы она заработала.
  • 0
    @79IT 79 Это приятно знать. Спасибо за совет :-)
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню