pscb-dev 78ee78b1df | ||
---|---|---|
gradle/wrapper | ||
library | ||
sample | ||
.gitignore | ||
README.md | ||
build.gradle | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
settings.gradle |
README.md
ПСКБ Платежи Java/Kotlin
Библиотека является дополнением к API системы интернет-эквайринга ПСКБ "Платежи" и позволяет подключить приём платежей по картам в приложениях на JVM (Java/Kotlin/Groovy) с минимальными усилиями.
Возможности
На текущий момент библиотека поддерживает:
- Оплата картами
- Google Pay
Подключение зависимостей
Gradle
maven {
name "pscb"
url "https://nxs.pscb.ru/repository/pscb-releases/"
}
dependencies {
implementation "ru.pscb:online-java:1.0.0"
}
Maven
Прописать репозиторий:
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<name>pscb</name>
<url>https://nxs.pscb.ru/repository/pscb-releases/</url>
</repository>
</repositories>
Добавить зависимость:
<dependencies>
<dependency>
<groupId>ru.pscb</groupId>
<artifactId>online-java</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
Интеграция
Оплата картами
- Создайте экземпляр
PSCBOnlineClient
с вашими настройками:
val apiClient = DefaultPSCBOnlineClient(
environment = BackendEnvironment.SANDBOX, // или PRODUCTION
marketPlaceId = 123456, /* <-- Your MarketPlace ID */
signingKey = "Your Signing Key"
)
// или
val sandboxApi = PSCBOnlineClient.sandbox(/* Your MarketPlace ID */, "Your Signing Key")
val productionApi = PSCBOnlineClient.production(/* Your MarketPlace ID */, "Your Signing Key")
environment
- окружение, в рамках которого библиотека взаимодействует с сервисом.SANDBOX
- тестовое окружение;PRODUCTION
- продуктовое.Your MarketPlace ID
- ваш идентификатор в системе ПСКБ-Онлайн.Your Signing Key
- ваш ключ подписи запросов к системе.
- Создайте экземпляр
Payment
val payment = Payment(amount = BigDecimal(1000.00), orderId = "Order-ID")
amount
- сумма в рублях. (На текущий момент другая валюта не поддерживается.)orderId
- уникальный идентификатор заказа в рамках магазина.
Для детальной информации, какие параметры присутствуют, смотрите документацию Payment
.
- Для приёма оплаты картами создайте экземпляр класса
CardData
.
val card = CardData(
"4761349750010326",
expiryDate = YearMonth.of(2022, 12),
cvCode = "851"
)
- Создайте токен запроса, используя экземпляр
PSCBOnlineClient
, созданный ранее.
val request = client.makeRequestWithCardData(card, payment)
- Отправьте токен запроса на сервер ПСКБ-Онлайн.
// Send request to backend
client.send(request) { response ->
println("Error ${response.error}")
println("Status ${response.status}")
println("Response ${response.response}")
}
В случае успешного выполнения запроса,
response
будет содержать информацию о принятом платеже, его ID, состояние и прочие данные.
Полный пример на Kotlin
object App {
private val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd-HHmmss")
@JvmStatic
fun main(vararg args: String) {
val client = PSCBOnlineClient.sandbox(marketPlaceId = 1234567890, signingKey = "111111")
val card = CardData("4761120010000491", YearMonth.of(2022, 2), "500")
val payment = Payment(BigDecimal(100), "APP-" + LocalDateTime.now().format(formatter))
val request = client.makeRequestWithCardData(card, payment)
val future = client.send(request) { error, response ->
println("Error $error")
println("Response $response")
}
future.join()
}
}
Google Pay
-
Получите свой Google Merchant ID
-
В своём
Activity
создайте экземплярcom.google.android.gms.wallet.PaymentsClient
paymentsClient = PSCBAPI.createPaymentClient(this, WalletConstants.ENVIRONMENT_TEST)
-
Также там создайте экземпляр
ru.pscb.library.client.PSCBOnlineClient
apiClient = DefaultPSCBOnlineClient(
environment = BackendEnvironment.SANDBOX, // или PRODUCTION
marketPlaceId = 123456, /* <-- Your MarketPlace ID */
signingKey = "Your Signing Key"
)
- Обработайте намерие оплаты пользователя
val request = PSCBAPI.makePaymentRequest("<Your Google Merchant ID>", price)
AutoResolveHelper.resolveTask(
paymentsClient.loadPaymentData(request), this, LOAD_PAYMENT_DATA_REQUEST_CODE
)
- Обработайте авторизацию пользователя и отправьте данные на бэкенд сервер
val payment = Payment(price, Date().toString())
val request = apiClient.makeRequestWithTokenData(paymentData, payment)
val toast = Toast(this)
apiClient.send(request) { throwable, response ->
if (throwable != null) {
toast.setText("Rawr")
Log.d("HandlePaymentSuccess", "Failed to init a payment", throwable)
}
if (response != null) {
toast.setText("Meow")
Log.d("HandlePaymentSuccess", "Backend response $response")
}
toast.show()
}