Sprawdzanie transakcji

Sprawdzanie ręczne

Sprawdź status transakcji wywołując metodę getSaleInfo.
Teraz możesz sprawdzić, czy dana transakcja się powiodła. Wystarczy, że wywołasz metodę isSuccess czy sprawdzisz dodatkowe informacje lub ewentualne dane o błędach.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
try {
    $status = $client->getSaleInfo(array('id_sale' => $id_sale));
}
catch (Exception $e) {
    // handle exceptions here
}

if ($client->isSuccess()) {
    if ('CLEARED' === $status['status']) {
        echo "Success, transaction completed, id_sale: {$id_sale}";
    }
} else {
    die("Error ID: {$status['error']['id_error']}, \n".
        "Error number: {$status['error']['error_number']}, \n".
        "Error description: {$status['error']['error_description']}");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
begin
    status = client.get_sale_info({"id_sale" => id_sale})
rescue PayLane::ClientError => e
    # handle exceptions here
end

if client.success?
    puts "Success, transaction completed, id_sale: #{id_sale}" if status['status'] == 'CLEARED'
else
    puts "Error ID: #{status["error"]["id_error"]}, \n"\
         "Error number: #{status["error"]["error_number"]}, \n"\
         "Error description: #{status["error"]["error_description"]}"
    exit
end
1
2
3
4
5
6
7
8
9
10
11
12
try:
    status = client.get_sale_info({'id_sale': id_sale})
except Exception, e:
    # handle exceptions here

if client.is_success():
    if status['status'] == 'CLEARED':
        print 'Success, transaction completed, id_sale: %s' % id_sale
else:
    sys.exit('Error ID: ' + str(status["error"]["id_error"]) + '\n' \
             'Error number: ' + str(status["error"]["error_number"]) + '\n' \
             'Error description: ' + str(status["error"]["error_description"]))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
api.saleInfo(idSale, new Callback<SaleInfoResult>() {

    @Override
    public void onFinish(SaleInfoResult result) {
        // success
    }

    @HandleException
    public void onProtocolError(ProtocolException e) {
        // invoke if not success
        // e.getCode() - error code
        // e.getMessage() - error message
    }

    @Override
    public void onError(Exception e) {
        // connection error etc.
    }
});

Sprawdzanie automatyczne

Zamiast sprawdzać statusy transakcji ręcznie, możesz po prostu skorzystać z mechanizmu powiadamiania o transakcjach. Nasze systemy same wyślą Ci stosowne informacje z użyciem POST – nie musisz wywoływać żadnych funkcji ani wysyłać żądań.

Oto przykład jak możesz sprawdzić komunikację i odebrać powiadomienie:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// check communication
if (empty($_POST['communication_id'])) {
    die('Empty communication id');
}

// check if token correct
if ('YOUR_TOKEN' !== $_POST['token']) {
    die('Wrong token');
}

foreach ($_POST['content'] as $notification) {
    if ($notification['type'] === 'S') { // sale created
        // transaction completed, do something useful with id_sale
        $id_sale = $notification['id_sale'];
    }
}

// return communication_id
die($_POST['communication_id']);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# check communication
if params['communication_id'].blank?
    puts "Empty communication id"
    exit
end

# check if token is correct
unless 'YOUR_TOKEN' == params['token']
    puts "Wrong token"
    exit
end

@content = params['content']
# You can do something useful in Rails view later on

@content.each do |notification|
    @id_sale = notification['id_sale'] if notification['type'] == 'S'
end

# render :text => params['communication_id']
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# check communication
communication_id = get_request_param('communication_id')
if not communication_id:
    sys.exit('Empty communication id')

# check if token correct
token = get_request_param('token')
if token != 'YOUR_TOKEN':
    sys.exit('Wrong token')

#content = get_request_param('content')
content = [{'type': 'S', 'id_sale': 123456789}]
for notification in content:
    if notification['type'] == 'S':  # sale created
        # transaction completed, do something useful with id_sale
        id_sale = notification['id_sale']

# print communication_id
1
// Nie dotyczy...
Uwaga dot. Pythona:
Funkcja get_request_param ma za zadanie pobrać wartości GET. Użyj odpowiednich funkcji oferowanych przez framework, z którego korzystasz, lub napisz własną funkcję.

W przypadku Django możesz użyć:
1
param_from_get = request.GET.get('param_name')
W przypadku Pylons możesz użyć:
1
2
from pylons import request
param_from_get = request.GET.get('param_name')