1. Go to this page and download the library: Download hypercharge/hypercharge-php 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/ */
try {
// create the WPF payment session
$payment = Hypercharge\Payment::wpf(array(
'currency' => 'EUR'
,'amount' => 1000 // in cents
,'transaction_id' => 'YOUR-GENERATED-UNIQUE-ID' // TODO replace with your e.g. order id
,'description' => 'Appears as intro text in the WPF form'
,'usage' => 'Appears in the customers bank statement'
// TODO: set your PaymentNotification handler url here
,'notification_url' => 'https://your-server.com/hypercharge-wpf-notifications.php'
// TODO: set your return pages for the user here. These are the pages he is shown after leaving the WPF
,'return_success_url' => 'http://your-server.com/payment-return-page.php?status=success'
,'return_failure_url' => 'http://your-server.com/payment-return-page.php?status=failure'
,'return_cancel_url' => 'http://your-server.com/payment-return-page.php?status=cancel'
,'billing_address' => array(
'first_name' =>'Max',
'last_name' =>'Mustermann',
'address1' =>'Muster Str. 12',
'zip_code' =>'10178',
'city' =>'Berlin',
'country' =>'DE'
)
));
if($payment->shouldRedirect()) {
// ok, WPF session created.
// TODO: pseudocode, comment or replace with your own business logic!
store_hypercharge_payment_unique_id_to_your_order( $payment->unique_id );
// redirect user to WPF
header('Location: '. $payment->getRedirectUrl());
// handle errors...
} elseif($payment->isPersistentInHypercharge()) {
// payment has been created in hypercharge but something went wrong.
// TODO: pseudocode, comment or replace with your own business logic!
store_hypercharge_payment_unique_id_to_your_order( $payment->unique_id );
// 1.) check $payment->error (a subclass of Hypercharge\Errors\Error)
// and show error message to customer
// 2.) manually login to hypercharge merchant backend.
// Go to "Payments", search by unique_id and analize the log messages.
} else {
// TODO handle error
// authentication error? check $login, $password
// inputdata error? check your php code for missing or misspelled fields.
}
} catch(Hypercharge\Errors\ValidationError $e) {
// no payment created in hypercharge because of local pre-validation errors
// show validation errors to customer
// $e->errors is an Array of Hash, format: [ { "property": String , "message" : String }, ... ]
} catch(Exception $e) {
// severe error
// log $e
// display apologies to customer
}
// $notification is an instance of Hypercharge\PaymentNotification
$notification = Hypercharge\Payment::notification($_POST);
if($notification->isVerified()) {
$payment = $notification->getPayment();
if($notification->isApproved()) {
////////////////////////////////////////
// payment successfull
// implement your business logic here
////////////////////////////////////////
} else {
////////////////////////////////////////
// payment NOT successfull
// check $payment->status
// implement your business logic here
////////////////////////////////////////
}
// http response.
// Tell hypercharge the notification has been successfully processed
// and ensure output ends here
die( $notification->ack() );
} else {
// signature invalid or message does not come from hypercharge.
// check your configuration or notificatoin request origin
}
$notification = Hypercharge\Payment::notification($_POST);
if($notification->isVerified()) {
$payment = $notification->getPayment();
if($notification->isApproved()) {
////////////////////////////////////////
// payment successfull
// implement your business logic here
// example as pseudocode, replace with your own code...
// store notification status to your database
// Notice: to be 100% racecondition proof update status to 'payment_approved' has to be done atomically
$updatedRows = update_order(array(
'set' => array('status'=> 'payment_approved'),
'where' => array('status'=> 'waiting_for_payment_approval'
,'hypercharge_unique_id' => $payment->unique_id
)
));
if($updatedRows == 1) {
// ok, start shipping
$order = find_order_where(array('status' => 'payment_approved'
,'hypercharge_unique_id' => $payment->unique_id
));
$order->ship_goods_to_customer();
} else {
// hypercharge notification already received! ignore duplicate notification.
}
//
// END of your business logic
////////////////////////////////////////
} else {
////////////////////////////////////////
// payment NOT successfull
// check $payment->status and handle it
// ...
// END of your business logic here
////////////////////////////////////////
}
// Tell hypercharge the notification has been successfully processed
// and ensure output ends here
die( $notification->ack() );
} else {
// signature invalid or message does not come from hypercharge.
// check your configuration or notificatoin request origin
}
try {
// create the mobile payment session
$payment = Hypercharge\Payment::mobile(array(
'currency' => 'EUR'
,'amount' => 1000 // in cents
,'transaction_id' => 'YOUR-GENERATED-UNIQUE-ID'
,'usage' => 'Appears in the customers bank statement'
,'notification_url' => 'https://your-server.com/hypercharge-wpf-notifications.php'
));
if($payment->shouldContinueInMobileApp()) {
// ok, mobile payment session created.
save_payment_unique_id_to_order($payment->unique_id);
// tell your mobile device where to
// a) submit credit card xml data to (submit_url)
// b) cancel the payment if user presses 'cancel' in your mobile app (cancel_url)
// see example below.
die(json_encode($payment));
} else {
// TODO handle error
// vaildation
// authentication error -> check $login, $password
// inputdata error -> check your php code for missing
// or misspelled fields in $paymentData
}
} catch(Hypercharge\Errors\Error $e) {
// no payment created in hypercharge because of local pre-validation errors
// check your php code
// display apologies to customer "Sorry, no payment possible at the moment."
}
sh
$ php composer.phar show --installed
hypercharge/hypercharge-php 1.25.5 Hypercharge PHP Library / SDK
hypercharge/hypercharge-schema 1.25.2 Hypercharge API JSON Schema
hypercharge/json-schema-php 1.3.3 A library to validate a json schema.
sh
cd hypercharge-php
sh
php composer.phar update --dev
sh
php test/all.php
sh
php test/remote.php
sh
DEBUG=1 CREDENTIALS=development php test/remote.php
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.