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 . | ![](/img/vgs-layout-config.png) |
---|
<?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.
| ![](/img/vgs-field-setup-state.gif) |
---|
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)
}
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.
| ![](/img/vgs-field-states.gif) |
---|
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) {
}
})
val view = findViewById<VGSCardNumberEditText>(R.id.cardNumberField)
view?.setOnFieldStateChangeListener(
object : OnFieldStateChangeListener {
override fun onStateChange(state: FieldState) {
}
})
vgsForm.bindView(cardNumberField)
}
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 . | ![](/img/vgs-response-state.gif) |
---|
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)
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
}
}
}
})
}
|