Wirecard Custom Boon Payments
Activating the Voucher with required payment Info
Here, we need the level 2 token and client Id of the sender, and we pass these when activating the voucher
{
"type": "BOON",
"module": "CALLBACK",
"voucherInfo": {
"accessKey" : "292749827398472397293874 ",
"clientId" : "123456"
}
}
Android Example
Map<String, String> voucherInfo = new HashMap<>();
voucherInfo.put("accessKey", "292749827398472397293874 ");
voucherInfo.put("clientId", "123456");
PaymentInfoSource paymentInfoSource = PaymentInfoSource.callback("BOON", voucherInfo);
paymentInfoSource.setApproved(true);
Receiver Limit Errors in the Success Response
When getting the returned voucher for a successful call, but where the receiver has limits - inside voucher.paymentInfo.destInfo.voucherInfo, look for the following fields.
Max account limit exceeded, DE Receiver, non KYC3.
{
"paymentInfo" : {
"destInfo": {
"voucherInfo": {
"receiverLimitError": "LIMITED_UPGRADE"
}
}
}
}
Android example
voucher.getPaymentInfo().getPaymentDestInfo().getVoucherInfo().get("receiverLimitError")
Max account limit exceeded, non KYC3.
{
"paymentInfo" : {
"destInfo": {
"voucherInfo": {
"receiverLimitError": "LIMITED_UPGRADE_RESET"
}
}
}
}
Max account limit exceeded, KYC3 user.
{
"paymentInfo" : {
"destInfo": {
"voucherInfo": {
"receiverLimitError": "LIMITED_RESET"
}
}
}
}
Activate Error Handling:
Android Example
voucherManager.activateVoucher(voucherId, paymentSource)
.subscribe(new Subscriber<Voucher>() {
@Override
public void onError(Throwable e) {
if (e instanceof PaymentError) {
((PaymentError) e).getRawError().getErrorFields().get("accessKey").getErrorEnum();
}
}
});
Invalid Token
{
"error": {
"errorEnum": "PAYMENT_CREATOR_ERROR",
"httpStatus": "400",
"errorFields": [
{
"fieldKey": "accessKey",
"errorEnum": "INVALID_TOKEN"
}
]
}
}
Invalid Recipient (missing msisdn)
{
"error": {
"errorEnum": "PAYMENT_CREATOR_ERROR",
"httpStatus": "400",
"errorFields": [
{
"fieldKey": "recipient",
"errorEnum": "INVALID"
}
]
}
}
Debit Declined
{
"error": {
"errorEnum": "PAYMENT_CREATOR_ERROR",
"httpStatus": "400",
"errorFields": [
{
"fieldKey": "transfer",
"errorEnum": "DEBIT_DECLINED"
}
]
}
}
Claiming the Voucher with required Info
Here, we need the level 2 token and client Id of the receiver during the claim call. (Client update coming soon)
{
"type": "BOON",
"module": "CALLBACK",
"voucherInfo": {
"accessKey": "2394187193847983749732987",
"clientId": "123456"
}
}
Android Example
Create a custom PaymentOption
public class CallbackPaymentOption extends PaymentOption.Default {
@Override
public boolean handlesPaymentType(@NonNull String type, String module) {
return "BOON".equals(module);
}
@Override
public Observable<PaymentInfoDest> getPaymentInfoDest(@NonNull Voucher voucher, @NonNull LoadingBaseActivity activity) {
Map<String, String> voucherInfo = new HashMap<>();
voucherInfo.put("accessKey", "2394187193847983749732987 ");
voucherInfo.put("clientId", "123456");
return Observable.just(PaymentInfoDest.callback("BOON", voucherInfo));
}
}
Then add it to your Engine setup
Engine.Builder builder = new Engine.Builder(serverUrl, sdkId);
builder.addPaymentOption(new CallbackPaymentOption());
builder.build();
Claim Error Handling
Limits Exceeded
{
"error": {
"errorEnum": "PAYMENT_CLAIMER_ERROR",
"httpStatus": "400",
"errorFields": [
{
"fieldKey": "recipient",
"errorEnum": "LIMITS_EXCEEDED"
}
]
}
}
Invalid Token
{
"error": {
"errorEnum": "PAYMENT_CLAIMER_ERROR",
"httpStatus": "400",
"errorFields": [
{
"fieldKey": "accessKey",
"errorEnum": "INVALID_TOKEN"
}
]
}
}
Debit Declined
{
"error": {
"errorEnum": "PAYMENT_CREATOR_ERROR",
"httpStatus": "400",
"errorFields": [
{
"fieldKey": "transfer",
"errorEnum": "CREDIT_DECLINED"
}
]
}
}