This assumes that all developers’ GitHub usernames have been added to our repo and that they can access GitHub from their machines using an SSH key without providing a password (i.e. by using ssh-agent).
If your company is using GitHub Enterprise, the security settings might not allow your account to log into public-facing GitHub. We are working to adjust the plugin to work around this, but for the time being you may either manually integrate or use a separate GitHub account.
In the project-level build.gradle
add the Dyneti Maven repository (credentials provided during integration):
allprojects {repositories {// Other repositories are heremaven {credentials {username = "nexusUsername"password = "nexusPassword"}url "https://nexus.dyneti.com/repository/maven-releases/"authentication {basic(BasicAuthentication)}}}}
In the app-level build.gradle
add these dependencies:
dependencies {// Other dependencies are hereimplementation 'com.dyneti.android.dyscan:dyscan:1.1.0'implementation 'androidx.legacy:legacy-support-v13:1.0.0'}
dependencies {// Other dependencies are hereimplementation 'com.dyneti.android.dyscan:dyscan:1.1.0'implementation 'com.android.support:support-v13:28.0.0'}
If you would rather integrate without using the plugin, see Manually Importing the Library.
In your Application
class add the following line to init DyScan
.
public class DyScanApplication extends Application {​//...​@Overridepublic void onCreate() {super.onCreate();//...DyScan.init(this, "{YOUR_API_KEY}");//...}}
If your app already has card.io, see the migrating from card.io guide.
Import the following DyScan classes in your Activity that will launch DyScan:
import com.dyneti.android.dyscan.DyScanActivity;import com.dyneti.android.dyscan.CreditCard;
This example assumes that you're going to launch the scanner from a button, and that you've set the button's onClick
handler in the layout XML via android:onClick="onScanPress"
. (If not, the process is analogous, just use the code inside this function). onScanPress
is implemented as
public void onScanPress(View v) {Intent scanIntent = new Intent(this, DyScanActivity.class);​// for version lower than 1.1.0scanIntent.putExtra(DyScanActivity.EXTRA_API_KEY, "{api_key_string}");// MY_SCAN_REQUEST_CODE (e.g., 1337) is arbitrary and is only used within this activity.startActivityForResult(scanIntent, MY_SCAN_REQUEST_CODE);}
Next, override onActivityResult()
to get the scan result.
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);​if (requestCode == MY_SCAN_REQUEST_CODE) {if (data != null && data.hasExtra(DyScanActivity.EXTRA_SCAN_RESULT)) {CreditCard scanResult = data.getParcelableExtra(DyScanActivity.EXTRA_SCAN_RESULT);// Do stuff with results in scanResult}}}
If you are using Stripe, see this guide for how to implement these functions.
The CreditCard
class contains fields String cardNumber
, int expiryMonth
, int expiryYear
, and boolean isFraud
. Note that isFraud
is currently always set to false, and expiryYear
is the full four-digit year.
The DyScanActivity can be customized by passing EXTRAs along with the intent. This allows you to modify both the appearance and behavior of the Activity.
EXTRA | Description | Default Value |
| What to text to display to the user to guide them in scanning their card. It is highly recommended that you set this value; otherwise we will try to provide this text based on | Dependent on |
| The color to use to display the helper text. |
|
| The size of the helper text in |
|
| The font family name of the helper text. The font needs to be placed in assets first. | Default font |
| Whether to show the helper text on screen. |
|
| Whether to show the scan area outline |
|
| How thick to make the lines outlining the scan area, indicating to the user where to place their credit card. Input as a float. |
|
| The color to use in drawing the outline of the scan region when nothing of interest is detected. |
|
| The color to use in drawing the outline of the scan region when corners are detected. |
|
| The color to use in drawing the outline of the scan region when we have successfully scanned a card. |
|
| The color to use to obscure everything outside the scan region in order to draw the user’s attention to the scan region. |
|
| The opacity to use when obscuring everything outside the scan region, as an integer ranging from 0 (transparent) to 255 (opaque). |
|
| Whether to show the button which allows the user to rotate the scan region by 90 degrees, facilitating the scanning of vertical cards. |
|
| Whether to show a button at the bottom of the screen allowing the user to choose to exit the scanning Activity. |
|
| The String to display on the manual entry button if shown. This should be set if you are showing the manual entry button. | ​ |
| Whether to briefly show the scanned card number (and date, if present) as an overlay over the screen after a successful scan. |
|
| Whether to display number on completion horizontally in fixed position. |
|
| Whether to show a dark blue Dyneti logo and wordmark above the scan region. |
|
| Whether to show the overlay displaying a sample card number and expiration date hinting at the user to place their card in the scan region. |
|
| If | The default locale's language according to the device |
| Whether the phone will turn on the flashlight if multiple frames have appeared to be too dark. |
|
| Whether the device will vibrate once it has successfully extracted the credit card data from the images provided by the camera. |
|
| Whether DyScanActivity is being used as a fraud check. This is currently only used for logging purposes, but in the future may impact behavior. |
|
| Whether to print out some additional logging that may be helpful for debugging issues in an app. Errors are always printed regardless of this value. |
|
​
If you want to have more control over the experience than DyScanActivity provides, we also offer a DyScanView.
​