| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Азат Разетдинов 14.12.2007 14:51
Таблица для хранения платежей:CREATE TABLE `wmtransfer` ( `wmtransfer_id` bigint(20) unsigned NOT NULL auto_increment, `invoice_id` bigint(20) unsigned NOT NULL default '0', `order_id` int(10) unsigned NOT NULL default '0', `dt` datetime NOT NULL default '0000-00-00 00:00:00', `sum` decimal(9,2) unsigned NOT NULL default '0.00', `mode` tinyint(1) unsigned NOT NULL default '0', `payee_purse` varchar(13) NOT NULL default '', `payer_purse` varchar(13) NOT NULL default '', `payer_wmid` varchar(12) NOT NULL default '', `paymer_number` varchar(255) NOT NULL default '0', `paymer_email` varchar(31) NOT NULL default '', `telepat_phone` varchar(31) NOT NULL default '', `telepat_order_id` varchar(255) NOT NULL default '0', PRIMARY KEY (`wmtransfer_id`) ) TYPE=MyISAMСобственно, класс. Причесывал для публикации вслепую, поэтому могут быть мелкие баги.
@CLASS
Webmoney
@auto[]
$tCheck[^table::create{name
LMI_PAYEE_PURSE
LMI_PAYMENT_AMOUNT
LMI_PAYMENT_NO
LMI_MODE
LMI_SYS_INVS_NO
LMI_SYS_TRANS_NO
LMI_SYS_TRANS_DATE
LMI_SECRET_KEY
LMI_PAYER_PURSE
LMI_PAYER_WM}]
#end @auto[]
@create[hParams]
$oSql[$hParams.oSql]
$sSecretKey[$hParams.sSecretKey]
#end @create[]
@getTransfer[hParams]
$result[^oSql.table{
SELECT
wmtransfer_id AS id,
invoice_id,
order_id,
dt,
sum,
mode,
payee_purse,
payer_purse,
payer_wmid,
paymer_number,
paymer_email,
telepat_phone,
telepat_order_id
FROM
wmtransfer
WHERE
1
^if(def $hParams.transfer_id){
AND wmtransfer_id = ^math:round(^hParams.transfer_id.double(0))
}
}]
#end @getTransfer[]
@beforeInsert[hData][sHash]
$hData.LMI_SECRET_KEY[$sSecretKey]
$sHash[^math:md5[^tCheck.menu{$hData.[$tCheck.name]}]]
^hData.delete[LMI_SECRET_KEY]
^if($sHash ne ^hData.LMI_HASH.lower[]){
^throw[Webmoney;$hData.LMI_HASH;Wrong hash, maybe hacking attempt]
}
#end @beforeInsert[]
@insertTransfer[hData]
^self.beforeInsert[$hData]
^oSql.void{
INSERT IGNORE INTO wmtransfer (
wmtransfer_id,
invoice_id,
order_id,
dt,
sum,
mode,
payee_purse,
payer_purse,
payer_wmid,
paymer_number,
paymer_email,
telepat_phone,
telepat_order_id
) VALUES (
^rem{ wmtransfer_id might exceed int limit }
^math:round(^hData.LMI_SYS_TRANS_NO.double(0)),
^math:round(^hData.LMI_SYS_INVS_NO.double(0)),
^hData.LMI_PAYMENT_NO.int(0),
'$hData.LMI_SYS_TRANS_DATE',
^hData.LMI_PAYMENT_AMOUNT.double(0),
^hData.LMI_MODE.int(0),
'$hData.LMI_PAYEE_PURSE',
'$hData.LMI_PAYER_PURSE',
'$hData.LMI_PAYER_WM',
'$hData.LMI_PAYMER_NUMBER',
'$hData.LMI_PAYMER_EMAIL',
'$hData.LMI_TELEPAT_PHONENUMBER',
'$hData.LMI_TELEPAT_ORDERID'
)
}
#end @insertTransfer[]
@beforeUpdate[hData]
^self.beforeInsert[$hData]
#end @beforeUpdate[]
@updateTransfer[hData]
^self.beforeUpdate[$hData]
^oSql.void{
UPDATE
wmtransfer
SET
invoice_id = ^math:round(^hData.LMI_SYS_INVS_NO.double(0)),
order_id = ^hData.LMI_PAYMENT_NO.int(0),
dt = '$hData.LMI_SYS_TRANS_DATE',
sum = ^hData.LMI_PAYMENT_AMOUNT.double(0),
mode = ^hData.LMI_MODE.int(0),
payee_purse = '$hData.LMI_PAYEE_PURSE',
payer_purse = '$hData.LMI_PAYER_PURSE',
payer_wmid = '$hData.LMI_PAYER_WM',
paymer_number = '$hData.LMI_PAYMER_NUMBER',
paymer_email = '$hData.LMI_PAYMER_EMAIL',
telepat_phone = '$hData.LMI_TELEPAT_PHONENUMBER',
telepat_order_id = '$hData.LMI_TELEPAT_ORDERID'
WHERE
^rem{ wmtransfer_id might exceed int limit }
wmtransfer_id = ^math:round(^hData.LMI_SYS_TRANS_NO.double(0))
}
#end @updateTransfer[]
@htmlWebmoneyForm[hData]
<form action='https://merchant.webmoney.ru/lmi/payment.asp' method='post'>
<input name='LMI_PAYEE_PURSE' type='hidden' value='$hData.payee_purse'/>
<input name='LMI_PAYMENT_AMOUNT' type='hidden' value='$hData.sum'/>
<input name='LMI_PAYMENT_NO' type='hidden' value='$hData.order_id'/>
<input name='LMI_PAYMENT_DESC' type='hidden' value='$hData.purpose'/>
<input name='LMI_SIM_MODE' type='hidden' value='$hData.mode'/>
<input name='LMI_SUCCESS_URL' type='hidden' value='$hData.success_url'/>
<input name='LMI_SUCCESS_METHOD' type='hidden' value='^if($hData.success_method eq GET){0;1}'/>
<input name='LMI_FAIL_URL' type='hidden' value='$hData.fail_url'/>
<input name='LMI_FAIL_METHOD' type='hidden' value='^if($hData.fail_method eq GET){0;1}'/>
<table class='form'>
<tr><td>Номер заказа:</td><td>$hData.order_id</td></tr>
<tr><td>Сумма для оплаты:</td><td>$hData.sum $hData.currency</td></tr>
<tr><td>Назначение платежа:</td><td>$hData.purpose</td></tr>
<tr><td></td><td><input type='submit' value='Далее >>'/></td></tr>
</table>
</form>
#end @htmlWebmoneyForm[]