Send payment authentication code

Verify API supports Strong Customer Authentication for payments. To begin the process, supply the customer's telephone number (in E.164 format ), the payee that will receive the payment, and the amount (in Euro) of the transaction, to the PSD2 endpoint.

The Verify API returns a request_id. Use this to identify a specific verification request in subsequent calls to the API, such as when making a check request to see if the user provided the correct code.

Replace the following variables in the sample code with your own values:

Name Description
VONAGE_API_KEY Your Vonage API key
VONAGE_API_SECRET Your Vonage API secret
RECIPIENT_NUMBER The phone number to verify
PAYEE Included in the message to describe the payment recipient
AMOUNT How much the payment is for (always in Euro)

Write the code

Add the following to send-psd2-code.sh:

Copy to Clipboard
curl -X POST "https://api.nexmo.com/verify/psd2/json" -d api_key=$VONAGE_API_KEY -d api_secret=$VONAGE_API_SECRET -d number=$RECIPIENT_NUMBER -d payee="$PAYEE" -d amount=$AMOUNT

View full source

Run your code

Save this file to your machine and run it:

sh send-psd2-code.sh

Prerequisites

npm install @vonage/server-sdk

Create a file named psd2.js and add the following code:

Copy to Clipboard
const Vonage = require('@vonage/server-sdk');
const vonage = new Vonage({
  apiKey: VONAGE_API_KEY,
  apiSecret: VONAGE_API_SECRET
});

View full source

Write the code

Add the following to psd2.js:

Copy to Clipboard
vonage.verify.psd2({
  number: RECIPIENT_NUMBER,
  payee: PAYEE,
  amount: AMOUNT
}, (err, result) => {
  if (err) {
    console.error(err);
  } else {
    const verifyRequestId = result.request_id;
    console.log('request_id', verifyRequestId);
  }
});

View full source

Run your code

Save this file to your machine and run it:

node psd2.js

Prerequisites

Add the following to `build.gradle`:

compile 'com.vonage:client:5.5.0'

Create a class named StartPsd2Verification and add the following code to the main method:

Copy to Clipboard
VonageClient client = VonageClient.builder().apiKey(VONAGE_API_KEY).apiSecret(VONAGE_API_SECRET).build();

View full source

Write the code

Add the following to the main method of the StartPsd2Verification class:

Copy to Clipboard
VerifyResponse response = client.getVerifyClient().psd2Verify(RECIPIENT_NUMBER, AMOUNT, PAYEE);

if (response.getStatus() == VerifyStatus.OK) {
    System.out.printf("Request ID: %s", response.getRequestId());
} else {
    System.out.printf("Error: %s: %s", response.getStatus(), response.getErrorText());
}

View full source

Run your code

We can use the application plugin for Gradle to simplify the running of our application. Update your build.gradle with the following:

Copy to Clipboard
  apply plugin: 'application'
  mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Run the following gradle command to execute your application, replacing com.vonage.quickstart.verify with the package containing StartPsd2Verification:

gradle run -Pmain=com.vonage.quickstart.verify.StartPsd2Verification

Prerequisites

Install-Package Vonage

Create a file named SendPsd2.cs and add the following code:

Copy to Clipboard
using Vonage;
using Vonage.Request;
using Vonage.Verify;

View full source

Add the following to SendPsd2.cs:

Copy to Clipboard
var creds = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
var client = new VonageClient(creds);

View full source

Write the code

Add the following to SendPsd2.cs:

Copy to Clipboard
var request = new Psd2Request { Amount = AMOUNT, Payee = PAYEE, Number = RECIPIENT_NUMBER };
var response = client.VerifyClient.VerifyRequestWithPSD2(request);

View full source

Prerequisites

gem install vonage

Create a file named send_psd2_code.rb and add the following code:

Copy to Clipboard
client = Vonage::Client.new(
  api_key: VONAGE_API_KEY,
  api_secret: VONAGE_API_SECRET
)

View full source

Write the code

Add the following to send_psd2_code.rb:

Copy to Clipboard
response = client.verify.psd2(
  number: TO_NUMBER,
  payee: 'AcmeInc',
  amount: 12.34
)

if response
  # display the Verify PSD2 `request_id`
  puts response.request_id
end

View full source

Run your code

Save this file to your machine and run it:

ruby send_psd2_code.rb