Put in object with 2 products and info note & set price. Owner can check to see total earned. 

Put this script along with TWO OBJECTS and an optional information Notecard.

Users will get a notecard on Touch and get item when a correct amount is paid.

Owner will get IM for each sale with user's name and can Touch to see how much money earned at any time.

 

 

// Begin variables
integer price = 100; //price for single (first item)
integer copyprice = 400; //price for copyable (second item)
string single = "Full Object Name"; //must match exact item name
string copyable = "Copyable Full Object Name"; //must match exact item name
string thanks = "Thank you for your purchase. Please accept your product.";
// End variables
//--------------------------------------------

integer totalsold = 0;
integer totalsoldcopy = 0;
integer totalamount = 0;
integer totalamountcopy = 0;

string startdate;
string ts;
list now;

default
{
    on_rez(integer start_param)
    {
        llResetScript();
    }
    
    state_entry()
    {
        llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
        llSetPayPrice(PAY_HIDE, [price, copyprice, PAY_HIDE, PAY_HIDE]);
        
        ts = llGetDate();
        now = llParseString2List( ts, ["-"], [] ) ;
        integer nyear = (integer)llList2String( now, 0 ) ;   
        integer nmonth = (integer)llList2String( now, 1 ) ;
        integer nday = (integer)llList2String( now, 2 ) ;
        if (nmonth == 1)
        {
            string smonth = "January";
            startdate = smonth + " " + (string)nday + ", " + (string)nyear;
        }
        else if  (nmonth == 2)
        {
            string smonth = "February";
            startdate = smonth + " " + (string)nday + ", " + (string)nyear;
        }
        else if  (nmonth == 3)
        {
            string smonth = "March";
            startdate = smonth + " " + (string)nday + ", " + (string)nyear;
        }
        else if  (nmonth == 4)
        {
            string smonth = "April";
            startdate = smonth + " " + (string)nday + ", " + (string)nyear;
        }
        else if  (nmonth == 5)
        {
            string smonth = "May";
            startdate = smonth + " " + (string)nday + ", " + (string)nyear;
        }
        else if  (nmonth == 6)
        {
            string smonth = "June";
            startdate = smonth + " " + (string)nday + ", " + (string)nyear;
        }
        else if  (nmonth == 7)
        {
            string smonth = "July";
            startdate = smonth + " " + (string)nday + ", " + (string)nyear;
        }
        else if  (nmonth == 8)
        {
            string smonth = "August";
            startdate = smonth + " " + (string)nday + ", " + (string)nyear;
        }
        else if  (nmonth == 9)
        {
            string smonth = "September";
            startdate = smonth + " " + (string)nday + ", " + (string)nyear;
        }
        else if  (nmonth == 10)
        {
            string smonth = "October";
            startdate = smonth + " " + (string)nday + ", " + (string)nyear;
        }
        else if  (nmonth == 11)
        {
            string smonth = "November";
            startdate = smonth + " " + (string)nday + ", " + (string)nyear;
        }
        else if  (nmonth == 12)
        {
            string smonth = "December";
            startdate = smonth + " " + (string)nday + ", " + (string)nyear;
        }
    }
     
    touch_start(integer total_number)
    {
        if ( llDetectedKey(0) != llGetOwner() )
        {
            llInstantMessage(llDetectedKey(0), "Pay this object L$" + (string)price + " for '" + single + "' or L$" + (string)copyprice + " for '" + copyable + ".'");
            if (llGetInventoryNumber(INVENTORY_NOTECARD) > 0) //notecard available
            {
                llGiveInventory(llDetectedKey(0),llGetInventoryName(INVENTORY_NOTECARD, 0));
            }
        }
        else if ( llDetectedKey(0) == llGetOwner() ) //object owner
        {
            llOwnerSay((string)totalsold +" Single units have been sold, L$" + (string)totalamount +" since " + startdate + ".");
            llOwnerSay((string)totalsoldcopy +" Copyable units have been sold, L$" + (string)totalamountcopy +" since " + startdate + ".");
            integer alltotal = totalamount + totalamountcopy;
            llOwnerSay("L$" + (string)alltotal +" collected total so far.");
        }
    } 
    
    money(key id, integer amount)
    {
        if (amount == price) // single amount paid
        {
            llInstantMessage(id, thanks);
            llGiveInventory(id, single); //single version
            totalsold = totalsold + 1;
            totalamount = amount * totalsold;
            llInstantMessage(llGetOwner(), (string)llKey2Name(id) + " has paid " +  (string)amount + " in "+ llGetRegionName());
        }
        
        else if (amount == copyprice) // copyable amount paid
        {
            llInstantMessage(id, thanks);
            llGiveInventory(id, copyable); //copyable version
            totalsoldcopy = totalsoldcopy + 1;
            totalamountcopy = amount * totalsoldcopy;
            llInstantMessage(llGetOwner(), (string)llKey2Name(id) + " has paid " +  (string)amount + " in "+ llGetRegionName());
        }
        
        else // Not a correct amount, Refund amount
        {
            llInstantMessage(id, "Sorry that is not the correct amount. Refunding you L$" + (string)amount + ".");
            llGiveMoney(id, amount);
        }
    }
}