Capture a Transaction

Endpoints

HTTP Method API URL API Version
POST https://paiement.payzone.ma/transaction/{transactionID}/capture >= 002.60

This call permits to a merchant to capture a previous authorize transaction.The capture call must be done only for the transaction operation than can be captured: authorize. Note that the transactionID that uniquely identifies the transaction is part of the URL (the string {transactionID} in the URL must be replaced by the transactionID returned in the initial payment status). The information for the payment are serialized in JSON format and are transmitted in the body of the request.

Accepted parameters

Name Type Value Required API Version
apiVersion String(8) API version to be used (default 002.60) yes >= 002.60
amount Integer(32bits) The amount for the capture in cents (for 1€ => 100) yes >= 002.60

Response

The body of the response to a transaction information request is in JSON format. It is the structure described here.


Name Type Description API Version
code String(3) API response code (see API response codes in annexe for possible values) >= 002.60
message String(255) Human readable message associated with the code >= 002.60
transactionID String(20) The unique identifier of the transaction >= 002.60
operation String(32) The effective operation done for the operation >= 002.60

Code samples

       
    use PayXpert\Connect2Pay\Connect2PayClient;

    $url = "https://paiement.payzone.ma";
    // This will be provided once your account is approved
    $originator  = "000000";
    $password    = "Gr3atPassw0rd!";
    $transactionId = "example";

    $c2pClient = new Connect2PayClient($url, $originator, $password);

    $transaction = $c2pClient->getTransactionInfo($transactionId);

    if ($transaction != null && $transaction->getResultCode() != null) {
        echo "Payment ID: " . $transaction->getPaymentID() . "\n";
        echo "Payment Merchant Token: " . $transaction->getPaymentMerchantToken() . "\n";
        echo "Transaction ID: " . $transaction->getTransactionID() . "\n";
        if ($transaction->getRefTransactionID()) {
        echo "Referral transaction ID: " . $transaction->getRefTransactionID() . "\n";
        }
        echo "Provider transaction ID: " . $transaction->getProviderTransactionID() . "\n";
        echo "Payment method: " . $transaction->getPaymentMethod() . "\n";
        if ($transaction->getPaymentNetwork()) {
        echo "Payment network: " . $transaction->getPaymentNetwork() . "\n";
        }
        echo "Operation: " . $transaction->getOperation() . "\n";
        echo "Amount: " . number_format($transaction->getAmount() / 100, 2) . " " . 
        $transaction->getCurrency() . "\n";
        echo "Refunded amount: " . number_format($transaction->getRefundedAmount() / 100, 2) . " " . 
        $transaction->getCurrency() . "\n";
        echo "Result code: " . $transaction->getResultCode() . "\n";
        echo "Result message: " . $transaction->getResultMessage() . "\n";

        $transactionDate = $transaction->getDateAsDateTime();
        if ($transactionDate !== null) {
        echo "Transaction date: " . $transactionDate->format("Y-m-d H:i:s T") . "\n";
        }

        if ($transaction->getSubscriptionID()) {
        echo "Subscription ID: " . $transaction->getSubscriptionID() . "\n";
        }
        $paymentMeanInfo = $transaction->getPaymentMeanInfo();
        if ($paymentMeanInfo !== null) {
        switch ($transaction->getPaymentMethod()) {
            case Connect2PayClient::PAYMENT_METHOD_CREDITCARD:
            if (!empty($paymentMeanInfo->getCardNumber())) {
                echo "Payment Mean Information:\n";
                echo "* Card Holder Name: " . $paymentMeanInfo->getCardHolderName() . "\n";
                echo "* Card Number: " . $paymentMeanInfo->getCardNumber() . "\n";
                echo "* Card Expiration: " . $paymentMeanInfo->getCardExpireMonth() . "/" . 
                $paymentMeanInfo->getCardExpireYear() . "\n";
                echo "* Card Brand: " . $paymentMeanInfo->getCardBrand() . "\n";

                if (!empty($paymentMeanInfo->getCardLevel())) {
                echo "* Card Level/subtype: " . $paymentMeanInfo->getCardLevel() . "/" . 
                $paymentMeanInfo->getCardSubType() . "\n";
                echo "* Card country code: " . $paymentMeanInfo->getIinCountry() . "\n";
                echo "* Card bank name: " . $paymentMeanInfo->getIinBankName() . "\n";
                }
            }

            break;
            case Connect2PayClient::PAYMENT_METHOD_TODITOCASH:
            if (!empty($paymentMeanInfo->getCardNumber())) {
                echo "Payment Mean Information:\n";
                echo "* Card Number: " . $paymentMeanInfo->getCardNumber() . "\n";
            }

            break;
            case Connect2PayClient::PAYMENT_METHOD_BANKTRANSFER:
            $sender = $paymentMeanInfo->getSender();
            $recipient = $paymentMeanInfo->getRecipient();

            if ($sender !== null) {
                echo "Payment Mean Information:\n";
                echo "* Sender Account:\n";
                echo ">> Holder Name: " . $sender->getHolderName() . "\n";
                echo ">> Bank Name: " . $sender->getBankName() . "\n";
                echo ">> IBAN: " . $sender->getIban() . "\n";
                echo ">> BIC: " . $sender->getBic() . "\n";
                echo ">> Country code: " . $sender->getCountryCode() . "\n";
            }

            if ($recipient !== null) {
                echo "* Recipient Account:\n";
                echo ">> Holder Name: " . $recipient->getHolderName() . "\n";
                echo ">> Bank Name: " . $recipient->getBankName() . "\n";
                echo ">> IBAN: " . $recipient->getIban() . "\n";
                echo ">> BIC: " . $recipient->getBic() . "\n";
                echo ">> Country code: " . $recipient->getCountryCode() . "\n";
            }

            break;
            case Connect2PayClient::PAYMENT_METHOD_DIRECTDEBIT:
            $account = $paymentMeanInfo->getBankAccount();

            if ($account !== null) {
                echo "Payment Mean Information:\n";
                echo "* Statement descriptor: " . $paymentMeanInfo->getStatementDescriptor() . "\n";

                $collectedAt = $paymentMeanInfo->getCollectedAtAsDateTime();
                if ($collectedAt != null) {
                echo "* Collected At: " . $collectedAt->format("Y-m-d H:i:s T") . "\n";
                }

                echo "* Bank Account:\n";
                echo ">> Holder Name: " . $account->getHolderName() . "\n";
                echo ">> Bank Name: " . $account->getBankName() . "\n";
                echo ">> IBAN: " . $account->getIban() . "\n";
                echo ">> BIC: " . $account->getBic() . "\n";
                echo ">> Country code: " . $account->getCountryCode() . "\n";

                $sepaMandate = $account->getSepaMandate();

                if ($sepaMandate != null) {
                echo "* SEPA mandate:\n";
                echo ">> Description: " . $sepaMandate->getDescription() . "\n";
                echo ">> Status: " . $sepaMandate->getStatus() . "\n";
                echo ">> Type: " . $sepaMandate->getType() . "\n";
                echo ">> Scheme: " . $sepaMandate->getScheme() . "\n";
                echo ">> Signature type: " . $sepaMandate->getSignatureType() . "\n";
                echo ">> Phone number: " . $sepaMandate->getPhoneNumber() . "\n";

                $signedAt = $sepaMandate->getSignedAtAsDateTime();
                if ($signedAt != null) {
                    echo ">> Signed at: " . $signedAt->format("Y-m-d H:i:s T") . "\n";
                }

                $createdAt = $sepaMandate->getSignedAtAsDateTime();
                if ($createdAt != null) {
                    echo ">> Created at: " . $createdAt->format("Y-m-d H:i:s T") . "\n";
                }

                $lastUsedAt = $sepaMandate->getLastUsedAtAsDateTime();
                if ($lastUsedAt != null) {
                    echo ">> Last used at: " . $lastUsedAt->format("Y-m-d H:i:s T") . "\n";
                }

                echo ">> Download URL: " . $sepaMandate->getDownloadUrl() . "\n";
                }
            }

            break;
        }
        }

        $shopper = $transaction->getShopper();
        if ($shopper !== null) {
        echo "Shopper info:\n";
        echo "* Name: " . $shopper->getName() . "\n";
        echo "* Address: " . $shopper->getAddress() . " - " . $shopper->getZipcode() . " " . 
        $shopper->getCity() . " - " .
            $shopper->getCountryCode() . "\n";
        echo "* Email: " . $shopper->getEmail() . "\n";

        if (!empty($shopper->getBirthDate())) {
            echo "* Birth date: " . $shopper->getBirthDate() . "\n";
        }

        if (!empty($shopper->getIdNumber())) {
            echo "* ID Number: " . $shopper->getIdNumber() . "\n";
        }

        if (!empty($shopper->getIpAddress())) {
            echo "* IP Address: " . $shopper->getIpAddress() . "\n";
        }
        }
    } else {
        echo "Error: " . $c2pClient->getClientErrorMessage() . "\n";
    }
                    
   
    // Instantiate the client and send the transaction information request
    // Second argument is the originator ID, third one is the associated API key
    Connect2payClient c2p = new Connect2payClient("https://paiement.payzone.ma", "123456", 
    "GreatP4ssw0rd");

    TransactionInfoRequest  request  = new TransactionInfoRequest();
    TransactionInfoResponse response = null;

    request.setTransactionId("example");

    try {
        response = c2p.getTransactionInfo(request);
        
        TransactionAttempt transaction = response.getTransactionInfo();
        System.out.println(transaction.getPaymentMethod());
        System.out.println(transaction.getAmount());
        System.out.println(response.getResultCode());
        // ...
    } catch (Exception e) {
        logger.error("Ooops, an error occurred getting transaction information: " + e.getMessage());
        // Handle the error...
    }
                      
   
    const paymentPage = require("payxpert")("123456", "GreatP4ssw0rd").connect2pay;

    const responseTransactionInformation = await paymentPage.transactionInformation(transactionID);

    // Process responseTransactionInformation here
                        
                        
   
    var client = new Connect2PayClient(OriginatorConfig.ORIGINATOR_ID, 
    OriginatorConfig.ORIGINATOR_PASSWORD);
    var request = client.NewRequestTransactionInfo(TransactionID);
    var response = await request.Send();

    if (response == null)
    {
        Console.WriteLine("Failure");
    } else {
        Console.WriteLine("Transaction operation: " + response.operation);
    }

                        

© Payzone | 2023