Committer: gprochaev
LJSUP-6582. Custom Userheads: SMS payments. Server side.A trunk/cgi-bin/LJ/Widget/IPPU/UserHeadSmsPay.pm A trunk/htdocs/js/widget_ippu/userheadsmspay.js
Added: trunk/cgi-bin/LJ/Widget/IPPU/UserHeadSmsPay.pm =================================================================== --- trunk/cgi-bin/LJ/Widget/IPPU/UserHeadSmsPay.pm (rev 0) +++ trunk/cgi-bin/LJ/Widget/IPPU/UserHeadSmsPay.pm 2010-08-27 09:02:06 UTC (rev 9429) @@ -0,0 +1,77 @@ +package LJ::Widget::IPPU::UserHeadSmsPay; + +use strict; +use base qw(LJ::Widget::IPPU); +use Carp qw(croak); + +sub need_res { + return qw( js/widgets/shopvgift.js stc/widgets/shopvgift.css ); +} + +sub authas { 1 } + +sub render_body { + my ($class, %opts) = @_; + + return ''; +} + +sub handle_post { + my ($class, $post, %opts) = @_; + + BML::set_language_scope('/pay/modify.bml'); + + my $remote = $class->get_effective_remote; + my $now = time(); + + my $uh = LJ::UserHead->get_userhead($post->{id}); + die BML::ml('.error.invalidproduct') unless $uh; + + die BML::ml('widget.vgiftsmspay.notauthorized') + unless $uh->get_price == 1.99 && LJ::Pay::can_use_sup_sms($remote); + + my $cartobj = LJ::Pay::Payment::new_cart($remote); + + # Check recipient + my $recipient = $post->{to} || $remote->{user}; + die BML::ml('.error.nousernamegiven') if $recipient eq ""; + + my $ou = LJ::load_user($recipient); + die BML::ml('.error.cantfinduser', {'user' => LJ::ehtml($recipient)}) + unless $ou; + die BML::ml('.error.cantbuyforsyn') if $ou->{'journaltype'} eq 'Y'; + die BML::ml('.error.cantbuyforrenamed') if $ou->{'journaltype'} eq 'R'; + die BML::ml('.error.cantbuyduetoaccountstatus') + unless $ou->is_visible || $ou->is_memorial; + + my $item = LJ::Pay::Payment::PayItem->new_memonly(item => 'userhead', subitem => 'uh-'.$post->{id}, qty => 1, amt => $uh->get_price, + anon => ($post->{anongift} eq 'true') ? 1 : 0, rcptid => $ou->{'userid'}); + my @errs; + my $can_be_added = $item->can_belong_to($cartobj, \@errs, undef, 'additem'); + die LJ::bad_input(@errs) unless $can_be_added; + + my $err_msg = $item->set_giveafter($post->{giveafter_yyyy}, $post->{giveafter_mm}, $post->{giveafter_dd}, $ou->timezone); + die $err_msg if $err_msg; + + # add the item + my $new_it = $cartobj->add_item(%{$item}); + + ## checkout cart to create the order + my $dbh = LJ::get_db_writer(); + $dbh->do("UPDATE payments SET method=? WHERE payid=? AND used='C'", undef, 'sup_sms', $cartobj->{'payid'}) or die $DBI::errstr; + + my $sms_order = $cartobj->{'payid'}; + + #To pay for the virtual gift, please SMS + my $to_pay = BML::ml("widget.userhead.sms.to_pay"); + + #to + my $to = BML::ml('widget.userhead.sms.to'); + + # Prices and conditions of use are available <a href='/sup/sms_tos_eng.bml' target=_blank>here</a> + my $prices = BML::ml("widget.userhead.sms.prices", {'aopts' => "href='$LJ::SITEROOT/sup/sms_tos.bml' target='_blank'"}); + return (success => 1, divbody => "<div style='padding: 15px 30px; text-align: left;'><p>$to_pay</p><div style='font-size: 3em; color: #ff0000; margin-top: 5px; margin-bottom: 15px;'>LJ $sms_order</div> <p>$to</p> <div style='margin-left: 5px; font-size: 3em; line-height: .8em; color: #a1a1a1; padding-left: 16px; background: url(/img/sup/phone.gif) no-repeat left bottom;'>7069</div></p> <p style='margin-top: 20px;'>$prices</p></div>",); + +} + +1; Added: trunk/htdocs/js/widget_ippu/userheadsmspay.js =================================================================== --- trunk/htdocs/js/widget_ippu/userheadsmspay.js (rev 0) +++ trunk/htdocs/js/widget_ippu/userheadsmspay.js 2010-08-27 09:02:06 UTC (rev 9429) @@ -0,0 +1,14 @@ +LJWidgetIPPU_UserheadSmsPay = new Class(LJWidgetIPPU, { + init: function (opts, params) { + opts.widgetClass = "IPPU::UserHeadSmsPay"; + this.width = 400; // Use for resizing later + this.height = 300; // Use for resizing later + this.to = opts.to; // Use for filling To field later + LJWidgetIPPU_VGiftSmsPay.superClass.init.apply(this, arguments); + }, + + onData: function (data) + { + $(data._widget_id).innerHTML = data.res.divbody; + } +});