VGS Collect - is a product suite that allows customers to collect information securely without possession of it. VGS Collect Android SDK allows you to securely collect data from your users via forms without having to have that data pass through your systems. The form fields behave like traditional input fields while securing access to the unsecured data.
- VGSCollect SDK - provides an API for interacting with the VGS Vault
- Card Scanner - This module is for adapting blinkcard-android SDK with VGS Collect Android SDK.
- app - sample application to act as the host app for testing the SDK during development
For integration you need to install the Android Studio and a JDK on your machine.
Integrate the VGS Collect SDK to your project. If you are using Maven, add the following to your build.gradle file.
|
|
dependencies {
implementation "androidx.appcompat:appcompat:<version>"
implementation "com.google.android.material:material:<version>"
implementation "com.verygoodsecurity:vgscollect:<latest-version>"
} |
|
Add input fields to R.layout.activity_main layout file . |
|
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.verygoodsecurity.vgscollect.widget.VGSTextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hint="Card number"
app:boxCornerRadius="8dp"
app:boxBackgroundModes="outline">
<com.verygoodsecurity.vgscollect.widget.VGSCardNumberEditText
android:id="@+id/cardNumberField"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"
app:fieldName="cardNumber"
app:numberDivider="-"
app:cardBrandIconGravity="end"/>
</com.verygoodsecurity.vgscollect.widget.VGSTextInputLayout>
//Other fields..
</LinearLayout> |
|
To initialize VGSCollect you have to set your vault id and Environment type. You can find more information at the following section. |
|
import com.verygoodsecurity.vgscollect.core.Environment
import com.verygoodsecurity.vgscollect.core.VGSCollect
class MainActivity : AppCompatActivity() {
private lateinit var vgsForm:VGSCollect
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
vgsForm = VGSCollect(this, "<vauilt_id>", Environment.SANDBOX)
val view = findViewById<VGSCardNumberEditText>(R.id.cardNumberField)
vgsForm.bindView(view)
// Bind other fields
}
override fun onDestroy() {
vgsForm.onDestroy()
super.onDestroy()
}
} |
|
Fields state tracking. When an object of this type is attached to a VGS secure field, its methods will be called when the text or focus is changed. |
|
import com.verygoodsecurity.vgscollect.core.Environment
import com.verygoodsecurity.vgscollect.core.VGSCollect
class MainActivity : AppCompatActivity() {
private lateinit var vgsForm:VGSCollect
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
vgsForm = VGSCollect(this, "<vauilt_id>", Environment.SANDBOX)
vgsForm.addOnFieldStateChangeListener(
object : OnFieldStateChangeListener {
override fun onStateChange(state: FieldState) {
// Handle input fields states
}
})
val view = findViewById<VGSCardNumberEditText>(R.id.cardNumberField)
view?.setOnFieldStateChangeListener(
object : OnFieldStateChangeListener {
override fun onStateChange(state: FieldState) {
// Handle single field states
}
})
vgsForm.bindView(cardNumberField)
// Bind other fields
}
override fun onDestroy() {
vgsForm.onDestroy()
super.onDestroy()
}
} |
|
Send a simple request. Receive responses. Call asyncSubmit to execute and send data on VGS Server. To retrieve response you need to implement VgsCollectResponseListener . |
|
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
vgsForm = VGSCollect(this, "<vauilt_id>", Environment.SANDBOX)
val submitBtn = findViewById<Button>(R.id.submitBtn)
submitBtn?.setOnClickListener {
submitData()
}
val view = findViewById<VGSCardNumberEditText>(R.id.cardNumberField)
view.bindView(cardNumberField)
// Bind other fields
val submitBtn = findViewById<Button>(R.id.submitBtn)
submitBtn?.setOnClickListener {
vgsForm.asyncSubmit("/post", HTTPMethod.POST)
}
vgsForm.addOnResponseListeners(
object : VgsCollectResponseListener {
override fun onResponse(response: VGSResponse?) {
when(response) {
is VGSResponse.SuccessResponse -> {
val successCode = response.successCode
val rawResponse = response.rawResponse
}
is VGSResponse.ErrorResponse -> {
val errorCode = response.errorCode
val localizeMessage = response.localizeMessage
}
}
}
})
} |
Check out documentation guides:
For a quick start, try our Demo application.
VGSCollect Android SDK is released under the MIT license. See LICENSE for details.