datingvip / payon-xml-api
PHP Api库,用于PayOn XML API
v1.0.3
2019-01-23 16:33 UTC
Requires
- php: >=5.0.0
- datingvip/curl: ^2.0
This package is auto-updated.
Last update: 2024-09-03 21:22:36 UTC
README
这是一个简单的非官方PayOn XML API客户端实现。这些类将使在PayOn服务器上执行API命令和查询数据变得更加容易。
使用示例
用户注册示例
require_once 'vendor/autoload.php'; use DatingVIP\Payment\PayOn\TransactionParams; use DatingVIP\Payment\PayOn\QueryParams; use DatingVIP\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 = new XmlApi( $config['sender'], $config['channel'], $config['userid'], $config['password'], true ); // init and build transaction params $po_req = new TransactionParams(); // 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']); } // display displayReqResp($po_api, 'Registration');
注册用户收费
// get registration UID for future use $reg_uid = $po_api->getTranResponseData('unique_id'); // build params for charging the account $po_req = new TransactionParams(); $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']); } // display displayReqResp($po_api, 'Initial Charge');
如何查询数据
// Query example $query_params = new QueryParams( 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(); // display displayReqResp($po_api, 'Query Results');
一个简单的辅助函数,用于在浏览器中显示数据
// helper function function displayReqResp(XmlApi $xml_api, $title = '') { echo empty($title) ? '' : $title . '<hr />'; echo 'REQUEST:<br /><pre>'; echo htmlentities($xml_api->getRequest()); echo '</pre><br />'; echo 'RESPONSE:<br /><pre>'; echo htmlentities($xml_api->getResponse()); echo '</pre><br />'; }