Скип на основной контент

Песочница и тестирование

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


Песочница vs Производство​

ПесочницаПроизводство
База URLhttps://sandbox.4pay.online/api/v1https://4pay.online/api/v1
Страница оплатыhttps://pay.sandbox.4pay.onlinehttps://pay.4pay.online
ПолномочияОтдельный ключ и организационный идентификаторОтдельный ключ и организационный идентификатор
Реальные обвиненияНикогда⁇ Реальные деньги
УэбхукиОтправлено в терминал notify_urlОтправлено в терминал notify_url
Разные хосты, а не разные ключи

Окружающая среда является Отдельные развертывания на отдельных именах хостови верительные грамоты не несут поперек: ключ песочницы бессмыслен в производстве и наоборот. Ключи не имеют приставки Это отличает их друг от друга — держите их в отдельной конфигурации.

Внутри хозяина, env в запросе орган выбирает среду самой сделки, и он is необходимый. A ?env=test параметр запроса только объемы поиска: создание, несущее только то, что производит производство Сделка. Транзакции.


Получение учетных данных песочницы​

Спросите оператора вашей платформы. Они создают партнерскую учетную запись для вас в организации песочницы и Совместим две ценности – API Ключ и организационный идентификатор. Оба необходимы на каждом Запрос.


Проведение тестовой транзакции​

curl -X POST https://sandbox.4pay.online/api/v1/transactions \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_SANDBOX_KEY" \
-H "x-organization-id: YOUR_SANDBOX_ORGANIZATION_ID" \
-d '{
"params": {
"type": "payment",
"amount": "1000",
"currency": "USD",
"txid": "sandbox-test-001",
"env": "test",
"hosted": true,
"returnUrl": "https://yoursite.com/success",
"failUrl": "https://yoursite.com/fail"
}
}'

Возвращайся. widget_urlОткройте его в браузере, чтобы увидеть размещенную форму оплаты и оплатить Одна из карточек ниже.


Тестовые карточки​

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

Номер карточкиCVVдержатель карточкиистекатьРезультат
2201382000000013283IVAN IVANOV12 / 20⁇ Поселения — chargingТогда charged Примерно через минуту
2201382000000021749IVAN IVANOV12 / 20❌ rejected Поставщиком
2201382000000047480IVAN IVANOV12 / 20↑ Settles, Then Returns (недоступная ссылка)
2201382000000039572IVAN IVANOV12 / 20❌ failed
2201382000000054111IVAN IVANOV12 / 20Выплата застряла в payout_suspended

Все остальное, включая номера тестов Visa и Mastercard, используемые другими шлюзами, заканчивается как rejected с unexpected card.

"money_storage": {
"cardnumber": "2201382000000013",
"cvv": "PROVIDER_TEST_CVV",
"cardholder": "IVAN IVANOV",
"exp_year": "20",
"exp_month": "12"
}

Замечание exp_year - это две цифры, а держатель карты - верхний регистр. SDK экспортировать их в виде констант;sandbox.CARD_CHARGE И друзья, и вы Не перепечатывайте их.

Выплаты​

Полное полеценностьРезультат
bank_id200000000001Выплата оседает
bank_id200000000002Выплата отказа
customer (SBP)John DoeСети; любое другое имя отказано.

Зарядка без браузера​

Для автоматизированных тестов пропустите страницу оплаты и зарядите карту сервер-сервер:

curl -X POST https://sandbox.4pay.online/api/v1/transactions \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_SANDBOX_KEY" \
-H "x-organization-id: YOUR_SANDBOX_ORGANIZATION_ID" \
-d '{
"params": {
"type": "payment",
"amount": "1000",
"currency": "USD",
"txid": "sandbox-test-002",
"env": "test",
"show_widget": false,
"money_storage": {
"cardnumber": "2201382000000013",
"cvv": "PROVIDER_TEST_CVV",
"cardholder": "IVAN IVANOV",
"exp_year": "20",
"exp_month": "12"
},
"returnUrl": "https://yoursite.com/success",
"failUrl": "https://yoursite.com/fail"
}
}'

Он возвращается charging и достигает charged самостоятельно в течение минуты. Оба перенаправляют URL-адреса здесь требуется — без них создается и сразу же отклоняется оплата сервера серверу.

Данные карты помещают вас в PCI DSS область применения

Пропуск реального номера карты через собственный сервер означает, что среда данных карты принадлежит вам. В песочнице это удобство для испытаний; в производстве используйте размещенный Поток, если вы уже не держите PCI DSS Аттестация.


Тестирование webhooks​

Выберите локальный сервер с помощью туннеля:

ngrok http 3000
# → Forwarding: https://abc123.ngrok.io → localhost:3000

Попросите вашего оператора установить https://abc123.ngrok.io/webhooks/payment как notify_url на твоем терминал песочницы, С помощью Webhook Secret Без одной платформы не будет подписи, а вы не может отличить подлинную доставку от поддельной. Уэбхуки.


Что не моделируется​

Поведение конкретного поставщикаЖелезнодорожные причуды - варианты 3DS, перенаправления местных кошельков, время отключения банков - появляются только в производстве.
Сроки урегулированияПлатежи в песочнице оседают в считанные секунды; реальные рельсы занимают от нескольких минут до нескольких дней.
СборыРасчет платы работает, но с любыми ставками, настроенными организацией песочницы.

Идти вживую​

  1. Получите производственные учетные данные от вашего оператора — новый ключ и идентификатор организации.
  2. Изменить хозяина на https://4pay.online.
  3. Изменения env В органе по запросу на "prod".
  4. Точка notify_url В вашей конечной точке производства, со своей тайной.
  5. Запустите один реальный платеж за небольшую сумму и верните его.

Шаги 2 и 3 Хозяин сам решает, с какой платформой вы разговариваете. env Решает, на какой стороне этой платформы находится транзакция. Ошибка, которая производит «тестовую» оплату на живом рельсе.