1. Go to this page and download the library: Download academe/omnipay-payone library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
academe / omnipay-payone example snippets
$lines[] = new \Omnipay\Payone\Extend\Item([
'id' => '{merchant-site-stock-ID}',
'name' => '{product-name}',
'quantity' => 2,
'price' => 123,
'vat' => 20, // Optional
// Used but optional for clearingType = \Omnipay\Payone\AbstractShopGateway::CLEARING_TYPE_WLT
// and walletType = \Omnipay\Payone\AbstractShopGateway::WALLET_TYPE_PPE
'itemType' => \Omnipay\Payone\Extend\ItemInterface::ITEM_TYPE_GOODS,
]);
$items = new \Omnipay\Common\ItemBag($lines);
$gateway = Omnipay\Omnipay::create('Payone_ShopServer');
// Merchant Account ID
$gateway->setMerchantId(12345);
// Merchant Portal ID
$gateway->setPortalId(1234567);
// Sub-Account ID
$gateway->setSubAccountId(56789);
// True to use test mode.
$gateway->setTestMode(true);
// Default language is "en" and determines the language of forms and error messages.
$gateway->setLanguage("de");
// Currency as ISO 4217 three-character code
$gateway->setCurrency('EUR');
$request = $gateway->authorize([
// Unique merchant site transaction ID
'transactionId' => 'ABC123',
// Amount as decimal.
'amount' => 0.00,
// Pre-shared secret key used for hashing and authentication.
'portalKey' => 'Ab12Cd34Ef56Gh78',
// Card and personal details.
'card' => $card,
// Optional card type override.
//'cardType' => 'V',
// The ItemBag/Cart
'items' => $items,
// Optional ecommerce mode declares risk
'ecommerceMode' => '3dsecure',
]);
[
...
// A pseudo-card number.
'number' => '4111111111111111',
// Other card details left as null.
'expiryYear' => null,
'expiryMonth' => null,
'cvv' => null,
];
'billingCountry' => 'US',
'billingCountry' => 'US',
'billingState' => 'AL',
// Return URL on successful authorisation.
'returnUrl' => '...',
// Return URL on failure to authorise the payment.
'errorUrl' => '...',
// Return URL if the user choses to cancel the authorisation.
'cancelUrl' => '...',
$response = $request->send();
if (!$response->isSuccessful()) {
echo $response->getMessage();
// e.g. "Expiry date invalid, incorrect or in the past"
echo $response->getCustomerMessage();
// e.g. "Invalid card expiry date. Please verify your card data."
}
$request = $gateway->purchase([...]);
$request = $gateway->capture([
// The reference for the original authorize transaction.
'transactionReference' => '123456789',
// Amount as decimal.
'amount' => 1.23,
// Pre-shared secret key used for authentication, if not already set on $gateway.
'portalKey' => 'Ab12Cd34Ef56Gh78',
]);
$lines[] = new \Omnipay\Payone\Extend\Item([
'id' => '{merchant-site-stock-ID}',
'name' => '{product-name}',
'itemType' => 'goods', // Available types: goods, shipping etc.
'quantity' => 2,
'price' => 123,
'vat' => 20, // Optional
]);
$items = new ItemBag($lines);
'items' => $items,
'sequenceNumber' => 1,
'settleAccount' => false,
'invoiceid' => 1,
'invoiceDeliveryMode' => 'P', // PDF, for others look into documentation
'invoiceDeliveryDate' => date('Ymd'),
'invoiceAppendix' => 'This is your invoice appendix'
$request = $gateway->void([
// The reference for the original authorize transaction.
'transactionReference' => '123456789',
// Amount as decimal.
'amount' => 1.23,
// Pre-shared secret key used for authentication, if not already set on $gateway.
'portalKey' => 'Ab12Cd34Ef56Gh78',
]);
$response = $request->send();
// The tokenised card:
$token = $response->getToken();
// e.g. 4100000227987220
// The truncated card number:
$response->getCardNumber()
// e.g. 401200XXXXXX1112
// Set up the Front End gateway.
$gateway = Omnipay\Omnipay::create('Payone_ShopFrontend');
$gateway = Omnipay\Omnipay::create('Payone_ShopFrontend');
// Merchant Portal ID
$gateway->setPortalId(1234567);
// Sub-Account ID
$gateway->setSubAccountId(56789);
// True to use test mode.
$gateway->setTestMode(true);
// Default language is "en" and determines the language of forms and error messages.
$gateway->setLanguage("de");
// Currency as ISO 4217 three-character code
$gateway->setCurrency('EUR');
// The pre-shared secret, used for hashing.
$gateway->setPortalKey('Ab12Cd34Ef56Gh78');
// The default for this gateway is HASH_MD5 for legacy applications, but the hash
// method recommended by PAYONE is HASH_SHA2_384,
$gateway->setHashMethod($gateway::HASH_SHA2_384);
$transactionId = {merchant-site-transaction-ID}
$request = $gateway->authorize([
'transactionId' => $transactionId,
'amount' => 3.99,
'accessMethod' => 'iframe',
'redirectMethod' => 'POST',
'items' => $items,
'card' => [
'firstName' => 'Firstname',
'billingAddress1' => 'Street Name',
...
],
// Any of these optional URLs can override those set in the account settings:
'returnUrl' => '...',
'errorUrl' => '...',
'cancelUrl' => '...',
]);
$response = $request->send();
// Get the URL.
$url = $response->getRedirectUrl();
// Just do the redirect using the methods in OmniPay core.
$response->redirect();
// This form needs JavaScript to auto-submit on page load.
echo '<form action="' . $response->getRedirectUrl() . '" method="POST" target="target-iframe">';
foreach($response->getRedirectData() as $name => $value) {
echo '<input type="hidden" name="'.$name.'" value="'.htmlspecialchars($value).'" />';
}
echo '</form>';
// The autp-submitted form, tagetting at this iframe, will generate the
// remote credit card payment form within this iframe.
echo '<iframe name="target-iframe" width="400" height="650"></iframe>';
// Set up the Client gateway.
$gateway = Omnipay\Omnipay::create('Payone_ShopClient');
$gateway = Omnipay\Omnipay::create('Payone_ShopClient');
$gateway->setSubAccountId(12345);
$gateway->setTestMode(true); // Or false for production.
$gateway->setMerchantId(67890);
$gateway->setPortalId(3456789);
$gateway->setPortalKey('Ab12Cd34Ef56Gh78');
$gateway->setHashMethod($gateway::HASH_SHA2_384);
$request = $gateway->creditCardCheck();
$response = $request->send();
// The endpoint used to check the card details - GET or POST can be used.
$endpoint = $response->getRedirectUrl();
// The additional data that must be
$gateway = Omnipay\Omnipay::create('Payone_ShopClient');
$gateway->setSubAccountId(12345);
$gateway->setTestMode(true); // Or false for production.
$gateway->setMerchantId(67890);
$gateway->setPortalId(3456789);
$gateway->setPortalKey('Ab12Cd34Ef56Gh78');
// The default for this gateway is HASH_MD5 for legacy applications, but the hash
// method recommended gby PAYONE is HASH_SHA2_384,
$gateway->setHashMethod($gateway::HASH_SHA2_384);
// Set up the response type - redirect the user or do an AJAX call.
$gateway->setResponseType($gateway::RETURN_TYPE_REDIRECT);
//$gateway->setResponseType($gateway::RETURN_TYPE_JSON);
$request = $gateway->authorize([
'transactionId' => $transactionId, // Merchant site ID (or a nonce for it)
'amount' => 9.99, // Major units
'currency' => 'EUR',
'3dSecure' => false, // or true
'items' => $items, // Array or ItemBag of Items or Exten\Items
// Where to send the user in authorisation suucess or falure.
'returnUrl' => $returnUrl,
'errorUrl' => $errorUrl,
// Where to send the user on cancellation in 3D Secure form.
'cancelUrl' => $cancelUrl,
]);
$response = $request->send();
// Array of name/value pairs
$params = $response->getRedirectData();
// The destination endpoint.
$endpoint = $response->getRedirectUrl();
// The raw data
$server_response->getData();
// The authorisation success state:
$server_response->isSuccessful();
// The redirect status and URL (we would not expect to see this for a REDIRECT response
// type as the redirect has already been processed on the client side:
$server_response->isRedirect();
$server_response->getRedirectUrl()
// If there are errors, then there will be a system message and a user-safe message:
$server_response->getMessage();
$server_response->getCustomerMessage();
$gateway = Omnipay\Omnipay::create('Payone_ShopServer');
// The portal key must be provided.
// This will be used to verify the hash sent with the transaction status notification.
// PAYONE will send an MD5 hash at all times. This is subject to change and will support
// the option to use a SHA2-384 hash eventually.
$gateway->setPortalKey('Ab12Cd34Ef56Gh78');
$server_request = $gateway->acceptNotification();
// The raw data sent is available:
$data = $server_request->getData();
// Provides the result of the hash verification.
// If the hash is not verified then the data cannot be trusted.
$server_request->isValid();
$server_response = $server_request->send();
// Your application will exit on the next command by default.
// You can prevent that by passiong in `false` as a single parameter, but
// do make sure no further stdout is issued.
$server_response->acknowledge(); // or $server_response->send()
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.