Мне нужно на лету создать зашифрованные кнопки PayPal PayPow для веб-сайта.
Я прочитал всю документацию, которую могу найти на сайте PayPal.
Я понял, что мне нужно использовать BMCreateButton ButtonManager NVPAPI.
Но я не смог найти ни информации, ни достаточно простого и документированного примера кода о том, КАК я должен называть эти API.
Нужно ли поместить свой параметр в форму и опубликовать его на каком-нибудь сервере?
Нужно ли поместить весь параметр в URL-адрес, вызвать этот URL-адрес и использовать результат?
Как мне пройти аутентификацию на этом сервисе?
Я собираюсь создать зашифрованную кнопку Paynow для другой бизнес-учетной записи PayPal.
Может кто-нибудь показать мне какой-нибудь код VB.Net или C #, который фактически вызывает этот BMCreateButtonAPI NVP?
Чтобы я мог видеть:
- как сделать вызов
- как пройти аутентификацию на сервисе
- как отформатировать / использоватьпараметры вызова API
- как получить результаты
Различные ссылки на полезный ресурс
- Спасибо этот ответ Мне удалось найти несколько полезных примеров кода здесь и там о том, как вызвать Paypal API.
- Здесь это более полезная информация о том, как работает PayPal NVP API.
- Здесь интересный сайт, который генерирует APЯ называю URL для API BMCreateButton
- Здесь вы можете найти инструкцию для получения учетных данных API "Третьего лица".(спасибо этот ответ )
- Еще немного полезной информации здесь об интеграции Paypal API
- Здесь вы можете найти текущую и последнюю версиюномер Paypal API
Обновление 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>
И вот ошибка, которую я получаю после нажатия на эту зашифрованную кнопку оплаты сейчас
Как видите, все параметры (название элемента, цена, item_id ...) являются правильными.Но я не могу понять, почему я получаю эту ошибку.
Если вы хотите попробовать этот код, вы должны заменить свой API пользователя / пароль / подпись.Сгенерированная кнопка PayNow работает только тогда, когда вы вошли в свою учетную запись PayPal.
Есть ли у вас какие-либо идеи о том, как решить эту ошибку?
Примечание: после решенияВ этом выпуске мне нужно понять, как создать зашифрованную кнопку для третьей бизнес-учетной записи PayPal (нам нужно создать зашифрованную кнопку для учетных записей PayPal наших клиентов).Использование наших учетных данных API, торгового кода клиента и настройка учетных данных API в учетной записи PayPal наших клиентов недопустимы ... Это говорит о том, что торговый код недействителен.Возможно, я что-то упустил ...
Обновление 2
Кажется, я нашел, как решить вышеупомянутую ошибку: просто удалите "Параметры cmd = _s-xclick / _xclick ".Если «cmd» не указан, кнопка paynow, похоже, не выдает никакой ошибки.Требуется дополнительное тестирование ... в любом случае, я прокомментировал строку кода в примере кода.
Теперь вернемся к делу.Давайте проведем некоторое тестирование, а затем найдем подходящий способ создания кнопки paynow для сторонних учетных записей PayPal.