This is a simple unofficial PayOn XML API client implementation in PHP. These classes will make easier to execute API commands on PayOn server and Query data from it.
User Registration Example
require_once'vendor/autoload.php';
useDatingVIP\Payment\PayOn\TransactionParams;
useDatingVIP\Payment\PayOn\QueryParams;
useDatingVIP\Payment\PayOn\XmlApi;
// config - replace to your values$config = [
'sender' => 'PAYON_SERVER_ID',
'channel' => 'PAYON_CHANNEL',
'userid' => 'PAYON_USER_ID',
'password' => 'PAYON_PASSWORD'
];
// init api class$po_api = newXmlApi(
$config['sender'],
$config['channel'],
$config['userid'],
$config['password'],
true );
// init and build transaction params$po_req = newTransactionParams();
// register user for CC payment$po_req->setAccountNumber('4111111111111111');
$po_req->setAccountExpYear('2015');
$po_req->setAccountExpMonth('12');
$po_req->setAccountHolder('John Smith');
$po_req->setAccountVerif('123');
$po_req->setCustNameFamily('Smith');
$po_req->setCustNameGiven('John');
$po_req->setCustAddrZip('12345');
$po_req->setCustAddrStreet('Main Street');
$po_req->setCustAddrCountry('US');
$po_req->setCustAddrCity('New York');
$po_req->setCustAddrState('New York');
$po_req->setCustContIp($_SERVER['REMOTE_ADDR']);
$po_req->setCustContEmail('customer@example.com');
$po_req->setAccountBrand('VISA');
$po_req->setPaymentMethod('CC.RG');
// execute request$res = $po_api->executeTransaction($po_req);
if (empty($res)) // probably curl/communication error
{
die('Communication error!');
}
if (!$po_api->wasTranSuccessful()) // unsuccessful reginstration
{
$response = $po_api->getTranResponseData();
die('ERROR: ' . $response['return_code'] . ' : ' . $response['return_msg']);
}
// displaydisplayReqResp($po_api, 'Registration');Charge registered user
// get registration UID for future use$reg_uid = $po_api->getTranResponseData('unique_id');
// build params for charging the account$po_req = newTransactionParams();
$po_req->setPaymentAmount('1.23');
$po_req->setPaymentCurrency('USD');
$po_req->setPaymentUsage('INV-TEST-' . time());
$po_req->setShopperId('CUST-' . time());
$po_req->setInvoiceId('INV-TEST-' . time());
$po_req->setPaymentMethod('CC.DB');
$po_req->setAccountRegId($reg_uid);
$po_req->setRecurrenceMode(Xml_Api::RECURRENCE_INIT);
// charge it$res = $po_api->executeTransaction($po_req);
if (empty($res)) // probably curl/communication error
{
die('Communication error!');
}
if (!$po_api->wasTranSuccessful()) // unsuccessful registration
{
$response = $po_api->getTranResponseData();
die('ERROR: ' . $response['return_code'] . ' : ' . $response['return_msg']);
}
// displaydisplayReqResp($po_api, 'Initial Charge');How to query data
// Query example$query_params = newQueryParams(
QueryParams::LEVEL_CHANNEL,
$config['channel'],
QueryParams::TYPE_STANDARD );
$query_params->setTypes(array('DB', 'RG'));
$from = date('Y-m-d', strtotime('-1 days', time()));
$to = date('Y-m-d', time());
$query_params->setPeriodFrom($from);
$query_params->setPeriodTo($to);
$po_api->executeQuery( $query_params );
$result = $po_api->getResponse();
// displaydisplayReqResp($po_api, 'Query Results');Just a helper function to show data in browser
// helper functionfunctiondisplayReqResp(XmlApi$xml_api, $title = '')
{
echoempty($title) ? '' : $title . '<hr />';
echo'REQUEST:<br /><pre>';
echohtmlentities($xml_api->getRequest());
echo'</pre><br />';
echo'RESPONSE:<br /><pre>';
echohtmlentities($xml_api->getResponse());
echo'</pre><br />';
}