#!/usr/bin/perl -w BEGIN { print "Content-type: text/plain\n\n"; } use LWP::UserAgent; use Time::HiRes qw(gettimeofday); use Digest::SHA qw(sha256); use URI; use URI::QueryParam; use CGI::Carp qw(fatalsToBrowser); my $uri = URI->new(); my $nonce = int (gettimeofday * 1000); $url = "https://localbitcoins.com"; $api_endpoint = "/api/merchant/new_invoice/"; $hmac_key = "sfsdfdsfdsfsdf"; $hmac_secret = "fsdfdsfdsfd"; %params = ( currency => 'USD', amount => '500', description => 'HEY', internal => '0', ); $uri->query_param($_, $params{$_}) for keys %params; $post_params_urlencoded = $uri->query; $message = ($nonce.$hmac_key.$api_endpoint.$post_params_urlencoded); my $signature = unpack("H*", sha256($message, $hmac_secret)); my $ua = LWP::UserAgent->new; my $res = $ua->post( $url.$api_endpoint, "Apiauth-Key" => "$hmac_key", "Apiauth-Nonce" => "$nonce", "Apiauth-Signature" => "$signature", ); if ($res->is_success) { print $res->content; } else { print $res->status_line, "\n"; }