Ir para o conteúdo

Performs the pending resolution process QR Code - Specific Payment


This method must be called to perform the QR Code - Specific Payment issue resolution. To use it, at least one payment identifier must be provided, either the qrId or the appTransactionId.

Methods

Signature Description
void resolveQRCodePendencyV2(QRCodePendencyRequestV2 request, PaymentCallback paymentCallback) Performs the QR Code pending resolution process for a specific payment.

Parameters

Name Type Mandatory Description
request QRCodePendencyRequestV2 Yes Data transfer object that will contain the information of the request for the resolution of pending issues for specific payment QR Code.
callback PaymentCallback Yes Interface that will be executed for notifications of success or error of the pending resolution process for specific payment QR Code.

Parameter details request (QRCodePendencyRequestV2)

Name Type Mandatory Description
applicationId Credentials Yes Identification of the application that is requesting the query.
secretToken Credentials Yes Access token of the application requesting the query.
softwareVersion String Yes Version of the application that is requesting the query.
date Date Yes Payment date/time.
qrId String No QrCode identifier generated by the capture terminal.
appTransactionId String No Integrated transaction identifier.

response (QRCodePendencyResponse)

Name Type Description
status QRCodeIntentStatus Indicates transaction status with QR.
type QRCodeIntentType QR type (sale, cancellation, return).
payment PaymentV2 Object representing payment data.
reversePayment ReversePayment Object representing chargeback data.
QRCodeIntentStatus
Name Id Description
CREATED 1 Transaction created.
PENDING 2 Pending transaction.
WAITING 3 Transaction on hold.
PROCESSING 4 Transaction in process.
PROCESSED 5 Transaction processed.
CONFIRMED 6 Request confirmed.
CANCELED 7 Transaction cancelled.
REVERSED 8 Transaction reversed.
DENIED 9 Transaction Denied.
EXPIRED 10 Transaction expired.
UNREACHABLE 11 Transaction inaccessible.
QRCodeIntentType
Name Id Description
PAYMENT 0 Indicates that the QR type is a payment.
REVERSAL 1 Indicates that the QR type is a chargeback.
DEVOLUTION 2 Indicates that the QR type is a bounce.
Example
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.jakewharton.threetenabp.AndroidThreeTen;

import java.math.BigDecimal;

import java.text.SimpleDateFormat;
import java.util.Arrays;

import java.util.Date;
import java.util.List;
import java.util.TimeZone;

import br.com.phoebus.android.payments.api.ApplicationInfo;
import br.com.phoebus.android.payments.api.Credentials;

import br.com.phoebus.android.payments.api.Payment;
import br.com.phoebus.android.payments.api.PaymentClient;
import br.com.phoebus.android.payments.api.PaymentStatus;
import br.com.phoebus.android.payments.api.provider.PaymentContract;
import br.com.phoebus.android.payments.api.provider.PaymentProviderApi;
import br.com.phoebus.android.payments.api.provider.PaymentProviderRequest;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    Button bt_start;
    private PaymentClient paymentClient;
    public static final String TEST_APPLICATION_ID = "0";
    public static final String TEST_SECRET_TOKEN = "000000000000000000000000";
    public static final String TAG = "TAG_DEMO";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt_start = (Button) this.findViewById(R.id.button);
        bt_start.setOnClickListener(this);
        paymentClient = new PaymentClient();
        AndroidThreeTen.init(getApplication());
        paymentClient.bind(this);
    }


    @Override
    public void onClick(View view) {
        doExecute();
    }


    public void doExecute() {
        //definindo as credenciais
        Credentials credentials = new Credentials();
        credentials.setApplicationId(TEST_APPLICATION_ID);
        credentials.setSecretToken(TEST_SECRET_TOKEN);

        ApplicationInfo applicationInfo = new ApplicationInfo();
        applicationInfo.setCredentials(credentials);
        applicationInfo.setSoftwareVersion("1.0");

        //criando objeto de request para o payment
        QRCodePendencyRequestV2 request = createRequest(applicationInfo);

        paymentClient.resolveQRCodePendencyV2(request, new PaymentClient.PaymentCallback<QRCodePendencyResponse>() {
            @Override
            public void onSuccess(QRCodePendencyResponse response) {
                Log.d("Pendencia resolvida");
            }

            @Override
            public void onError(ErrorData errorData) {
                Log.d("Algo deu errado!");
            }
        }

    }

    private QRCodePendencyRequestV2 createRequest(ApplicationInfo appInfo) {

        QRCodePendencyRequestV2 request = new QRCodePendencyRequestV2();
        request.setApplicationInfo(appInfo);

        request.setSecretToken(appInfo.getCredentials());
        request.setApplicationId(appInfo.getCredentials());
        request.setSoftwareVersion(appInfo.getSoftwareVersion());
        request.setAppTransactionId("123456");

        SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
        isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

        try {
            Date date = isoFormat.parse("2021-07-27T00:00:00.000");
            request.setDate(date);

        } catch (Exception e) {
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
            Log.e(TAG, e.getMessage(), e);

        }

        return request;
    }
}