Re: LoadUrl Money
milo
投稿数: 30

Hi Guy,
Here are the changes I make to be able to work with a key to security for the payment module.
sorry for the tag code, but it would nl2br() power that can be read ^^
First create table mysql:
CREATE TABLE IF NOT EXISTS `openmoney` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`avname` varchar(255) NOT NULL,
`avkey` char(36) NOT NULL,
`token` char(40) NOT NULL,
`virtualm` int(11) NOT NULL,
`realm` double NOT NULL DEFAULT '0',
`status` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=67 ;
Next modify opensim.mysql.php
add this function:
function opensim_set_avatar_session($name, $uuid,$token,$amount,$cout, &$db=null)
{
global $OpenSimVersion;
if (!isGUID($uuid)) return null;
if (!is_object($db)) $db = & opensim_new_db();
if ($OpenSimVersion==null) opensim_get_db_version($db);
$firstname = null;
$lastname = null;
$fullname = null;
if ($db->exist_table('openmoney')) {
$db->query("INSERT INTO openmoney SET avname='$name',avkey='$uuid',token='$token',virtualm='$amount',realm='$cout'");
$errno = $db->Errno;
}
return $errno;
}
On helper.php
edit this function "add_money":
function add_money($agentID, $amount, $prix, $avname, $secureID=null)
{
if (!isGUID($agentID)) return false;
//
if (!USE_CURRENCY_SERVER) {
env_set_money_transaction(null, $agentID, $amount, 5010, 0, "Buy Money", 0, 0, "");
$res["success"] = true;
return $res;
}
//
// XML RPC to Region Server
//
if (!isGUID($secureID, true)) return false;
$results = opensim_get_server_info($agentID);
$serverip = $results["serverIP"];
$httpport = $results["serverHttpPort"];
$serveruri = $results["serverURI"];
if ($serverip=="") return false;
$results = opensim_get_avatar_session($agentID);
$sessionID = $results["sessionID"];
$token = sha1($sessionID.":".uniqid(time()));
$retour = opensim_set_avatar_session($avname,$agentID,$token,$amount,$prix); //// <------------------------ ADD THIS LINE
if($retour) return false; //// <------------------------ ADD THIS LINE
if ($secureID==null) $secureID = $results["secureID"];
$req = array('clientUUID'=>$agentID,
'clientSessionID'=>$sessionID,
'clientSecureSessionID'=>$secureID,
'amount'=>$amount,
'clientTokenID'=>$token); //// <------------------------ ADD THIS LINE
$params = array($req);
$request = xmlrpc_encode_request('AddBankerMoney', $params);
$response = do_call($serverip, $httpport, $serveruri, $request);
//file_put_contents("log.txt", print_r($response,true));
return $response;
}
On Currency.php
section buy_currency
if($transactionPermit){
$res = add_money($agentid, $amount,$cost,$avname, $sessionid);
if ($res["success"])
$ret = true;
if ($ret && $res["settle"])
{
}
}
svn update
On MoneyModule.cs
i have edit this section:
search :
if (dlg!=null) {
dlg.SendUrlToUser(bankerUUID, "SYSTEM", UUID.Zero, UUID.Zero, false, m_settle_message, m_settle_url);
}
replace by:
if (dlg!=null) {
dlg.SendUrlToUser(bankerUUID, "SYSTEM", UUID.Zero, UUID.Zero, false, m_settle_message, m_settle_url+(string)requestParam["clientTokenID"]);
}
after:
On OpenSim.ini
each avatar clicking that buy the L$, will receive a LoadURL with a unique key for each transaction.
Personally I adapt this system for multiple payment system.
Enjoy !
Milo
Here are the changes I make to be able to work with a key to security for the payment module.
sorry for the tag code, but it would nl2br() power that can be read ^^
First create table mysql:
CREATE TABLE IF NOT EXISTS `openmoney` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`avname` varchar(255) NOT NULL,
`avkey` char(36) NOT NULL,
`token` char(40) NOT NULL,
`virtualm` int(11) NOT NULL,
`realm` double NOT NULL DEFAULT '0',
`status` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=67 ;
Next modify opensim.mysql.php
add this function:
function opensim_set_avatar_session($name, $uuid,$token,$amount,$cout, &$db=null)
{
global $OpenSimVersion;
if (!isGUID($uuid)) return null;
if (!is_object($db)) $db = & opensim_new_db();
if ($OpenSimVersion==null) opensim_get_db_version($db);
$firstname = null;
$lastname = null;
$fullname = null;
if ($db->exist_table('openmoney')) {
$db->query("INSERT INTO openmoney SET avname='$name',avkey='$uuid',token='$token',virtualm='$amount',realm='$cout'");
$errno = $db->Errno;
}
return $errno;
}
On helper.php
edit this function "add_money":
function add_money($agentID, $amount, $prix, $avname, $secureID=null)
{
if (!isGUID($agentID)) return false;
//
if (!USE_CURRENCY_SERVER) {
env_set_money_transaction(null, $agentID, $amount, 5010, 0, "Buy Money", 0, 0, "");
$res["success"] = true;
return $res;
}
//
// XML RPC to Region Server
//
if (!isGUID($secureID, true)) return false;
$results = opensim_get_server_info($agentID);
$serverip = $results["serverIP"];
$httpport = $results["serverHttpPort"];
$serveruri = $results["serverURI"];
if ($serverip=="") return false;
$results = opensim_get_avatar_session($agentID);
$sessionID = $results["sessionID"];
$token = sha1($sessionID.":".uniqid(time()));
$retour = opensim_set_avatar_session($avname,$agentID,$token,$amount,$prix); //// <------------------------ ADD THIS LINE
if($retour) return false; //// <------------------------ ADD THIS LINE
if ($secureID==null) $secureID = $results["secureID"];
$req = array('clientUUID'=>$agentID,
'clientSessionID'=>$sessionID,
'clientSecureSessionID'=>$secureID,
'amount'=>$amount,
'clientTokenID'=>$token); //// <------------------------ ADD THIS LINE
$params = array($req);
$request = xmlrpc_encode_request('AddBankerMoney', $params);
$response = do_call($serverip, $httpport, $serveruri, $request);
//file_put_contents("log.txt", print_r($response,true));
return $response;
}
On Currency.php
section buy_currency
if($transactionPermit){
$res = add_money($agentid, $amount,$cost,$avname, $sessionid);
if ($res["success"])
$ret = true;
if ($ret && $res["settle"])
{
}
}
svn update
On MoneyModule.cs
i have edit this section:
public XmlRpcResponse AddBankerMoneyHandler(XmlRpcRequest request, IPEndPoint remoteClient)
search :
if (dlg!=null) {
dlg.SendUrlToUser(bankerUUID, "SYSTEM", UUID.Zero, UUID.Zero, false, m_settle_message, m_settle_url);
}
replace by:
if (dlg!=null) {
dlg.SendUrlToUser(bankerUUID, "SYSTEM", UUID.Zero, UUID.Zero, false, m_settle_message, m_settle_url+(string)requestParam["clientTokenID"]);
}
after:
./runprebuild.sh && nant clean && nant
cd opensim.currency
./build.sh
On OpenSim.ini
SettlementURL = "http://www.mywebsite.com/?token="
Personally I adapt this system for multiple payment system.
Enjoy !
Milo
投票数:136
平均点:4.85
投稿ツリー
-
LoadUrl Money (milo, 2012-2-18 20:14)
-
Re: LoadUrl Money (iseki, 2012-2-19 14:58)
-
Re: LoadUrl Money (milo, 2012-2-19 17:51)
-
Re: LoadUrl Money (iseki, 2012-2-19 18:29)
-
Re: LoadUrl Money (milo, 2012-2-19 18:43)
-
Re: LoadUrl Money (iseki, 2012-2-19 19:23)
-
-
-
-
-
Re: LoadUrl Money (milo, 2012-2-19 19:34)
-
Re: LoadUrl Money (milo, 2012-2-19 19:39)
-
Re: LoadUrl Money (iseki, 2012-2-20 1:33)
-
Re: LoadUrl Money (milo, 2012-2-20 16:25)
-
Re: LoadUrl Money (milo, 2012-2-20 17:43)
-
-
-
-
Re: LoadUrl Money (milo, 2012-2-20 18:28)
-
Re: LoadUrl Money (iseki, 2012-2-20 21:48)
-
-
Re: LoadUrl Money (milo, 2012-2-20 21:54)
-
Re: LoadUrl Money (milo, 2012-2-21 15:44)
-
-