:: Visual Foxpro, Foxpro for DOS
СБП Райффайзен
hvh2007
Автор

Сообщений: 7
Дата регистрации: 25.03.2013
Добрый день!
Возникла проблема организовать генерацию QR-кода для оплаты черех приложение на VFP9. Пример API: pay.raif.ru
Накидал код:
SET ECHO ON
SUSPEND
Local http as "WinHttp.WinHttpRequest"
http = Createobject("WinHttp.WinHttpRequest.5.1")
Timeout = 0 && milliseconds
http.SetTimeouts(Timeout, Timeout, Timeout, Timeout)
Http.Option(0)="http_requester/0.1"
Http.Option(4)=13056
Http.Option(6)=.t.
Http.Option(12)=.t.
**********************************************
http.Open("POST", 'https://test.ecom.raiffeisen.ru/api/sbp/v2/qrs',.f.)
Http.SetRequestHeader( "Content-type", "Content-Type: application/json")
Request='{'
Request=Request+'"additionalInfo": "This is test create QR-code",'
Request=Request+'"amount": 1,'
Request=Request+'"currency": "RUB",'
Request=Request+'"order": "4-779-417",'
Request=Request+'"paymentDetails": "the first qr-code",'
Request=Request+'"qrType": "QRDynamic",'
Request=Request+'"sbpMerchantId": "MA347182"'
Request=Request+'}'
Request=[']+request+[']
****************************
SUSPEND
http.Send(request)
ResulStatus=http.status
ResponseText=http.ResponseText
Получил:
ResulStatus=415
ResponseText={"timestamp":"2022-05-16T07:45:50.578+00:00","status":415,"error":"Unsupported Media Type","path":"/external/v2/qrs"}

Если кто нибудь имеет опыт подобных работ, не сочтите за труд, подскажите в какую сторону копать.
Ratings: 0 negative/0 positive
Re: СБП Райффайзен
hvh2007
Автор

Сообщений: 7
Дата регистрации: 25.03.2013
Спасибо Каратаеву! forum.foxclub.ru

Этот код сработал:

Set Echo On
Suspend
tcurl="https://test.ecom.raiffeisen.ru/api/sbp/v2/qrs"
TEXT TO tcxml
{
"additionalInfo": "This is test create QR-code",
"amount": 1,
"currency": "RUB",
"order": "4-779-417",
"paymentDetails": "the first qr-code",
"qrType": "QRDynamic",
"sbpMerchantId": "MA347182"
}
ENDTEXT
tcXml = Strconv(tcXml,9)
oHTTP = Createobject("MSXML2.XMLHTTP")
oHTTP.Open("POST", tcurl)
oHTTP.setRequestHeader("Content-Type", "application/json")
oHTTP.Send(0h+tcXml)
ltStart = Datetime()
Do While m.oHTTP.readyState <> 4
DoEvents Force
Enddo
Local lcResponse
Suspend
lcResponse = ""
Do Case
Case m.oHTTP.readyState <> 4
* Не дождались ответа
lcResponse = "Нет ответа от сервера"
Case !Between(m.oHTTP.Status, 200, 299)
lcResponse = m.oHTTP.responseText
Messagebox(lcResponse)
Otherwise
lcResponse = m.oHTTP.responseText
Endcase
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 21 (Гостей: 21)

© 2000-2024 Fox Club 
Яндекс.Метрика