Список розділів › Скрипти › Buyme — покупка за один клік
Так було в Buyme з самого початку. Всі дані є в інструкції, успіхів.brandonlang написав:Раньше вроде проще было.
Nazar Tokar написав:nezleek, що таке «апселл» і як ваше питання пов'язане з Buyme?
<?php
// Buyme 1.4 2013 by Nazar Tokar
// dedushka.org * nazartokar.com * [email protected]
require("smtp.php");
header ("Content-Type: text/html; charset=utf-8"); //кодировка
// почта для уведомлений //несколько ящиков могут перечисляться через запятую
$to = "[email protected]";
$HTTP_HOST = parse_url('http://'.$_SERVER["HTTP_HOST"]);
$HTTP_HOST = str_replace(array("http://","www."),"", $HTTP_HOST['host']);
$from = "[email protected]; // отправитель
// данные для отправки смс
$sms["id"] = "";
$sms["key"] = "";
$sms["log"] = "";
$sms["pss"] = "";
$sms["frm"] = "callme"; // добавьте новую подпись в смс-шлюзе и дождитесь апрува
$sms["num"] = ""; // ваш номер в формате без + (79218886622)
$sms["prv"] = "sms.ru"; // на выбор: sms.ru, infosmska.ru, bytehand.com, sms-sending.ru, smsaero.ru
function uc ($s) {
$s = urlencode($s);
return $s;
}
function gF ($s) { // no shit
$s = substr( (htmlspecialchars($_GET[$s])), 0, 500);
if (strlen($s) > 1) return $s;
}
function echoResult ($result, $class, $time, $message) { // выводим json
echo '{
"result": "'.$result.'",
"cls": "'.$class.'",
"time": "'.$time.'",
"message": "'.$message.'" }';
exit();
}
function sendSMS ($to, $msg){
global $sms;
$u['sms.ru'] = "sms.ru/sms/send?api_id=".uc($sms["key"])."&to=".uc($sms["num"])."&text=".uc($msg);
$u['bytehand.com'] = "bytehand.com:3800/send?id=".uc($sms["id"])."&key=".uc($sms["key"])."&to=".uc($sms["num"])."&partner=callme&from=".uc($sms["frm"])."&text=".uc($msg);
$u['sms-sending.ru'] = "lcab.sms-sending.ru/lcabApi/sendSms.php?login=".uc($sms["log"])."&password=".uc($sms["pss"])."&txt=".uc($msg)."&to=".uc($sms["num"]);
$u['infosmska.ru'] = "api.infosmska.ru/interfaces/SendMessages.ashx?login=".uc($sms['log'])."&pwd=".uc($sms["pss"])."&sender=SMS&phones=".uc($sms["num"])."&message=".uc($msg);
$u['smsaero.ru'] = "gate.smsaero.ru/send/?user=".uc($sms["log"])."&password=".md5 (uc($sms["pss"]))."&to=".uc($sms["num"])."&text=".uc($msg)."&from=".uc($sms["frm"]);
@$r = file_get_contents("http://".$u[$sms["prv"]]);
}
$l["sent"] = "Заказ уже был отправлен";
$l["err"] = "Пожалуйста, заполните все поля";
$l["ok"] = "Спасибо, заказ принят. Ждите звонка";
$l["title"] = "Buyme: новый заказ";
$l["footer"] = "<div style=\"background: #f1f1f1; margin-top: 10px; padding: 10px; color: #555;\"><a href='http://dedushka.org/tag/buyme/'>Следите</a> за обновлениями скрипта. Спасибо за использование BuyMe.</div>";
function addToMess ($c, $o) {
return "<p><b>".$c."</b><br>".$o."</p>";
}
function getOptions ($o) { // get fields
$captions = $_GET["cs"];
$options = $_GET["os"];
$opts = "";
$i = 0;
if ($o == 1) {
foreach ($options as $value) {
if (strlen($value) > 1) {
if ($captions[$i] == "url") {
if (strlen($value) < 60) { // cut long urls
$opts .= addToMess($captions[$i], $value);
}
else {
$link = "<a href='".$value."'>".substr($value, 0, 60)."...</a>";
$opts .= addToMess($captions[$i], $link);
}
} else {
$opts .= addToMess($captions[$i], $value);
}
}
$i++;
}
} else {
foreach ($options as $value) {
if (strlen($value) > 1) {
$opts .= $captions[$i]."(".$value.") ";
}
$i++;
}
}
return $opts;
}
function translit ($str) { // translit by programmerz.ru
$tr = array("А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D","Е"=>"E","Ё"=>"E","Ж"=>"J","З"=>"Z","И"=>"I","Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"C","Ч"=>"4","Ш"=>"SH","Щ"=>"SC","Ъ"=>"","Ы"=>"Y","Ь"=>"","Э"=>"E","Ю"=>"U","Я"=>"YA","а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"e","ж"=>"j","з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l","м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h","ц"=>"c","ч"=>"4","ш"=>"sh","щ"=>"sch","ъ"=>"y","ы"=>"y","ь"=>"","э"=>"e","ю"=>"u","я"=>"ya");
return strtr($str,$tr);
}
// далее можно не трогать
$time = time(); // время отправки
$interval = $time - gF("time");
if ($interval < 20) { // если прошло менее (сек)
echoResult("err", "b1c-err", "", $l["sent"]);
} else {
$get_data = $_GET["cs"];
if (count($get_data) > 1) { // data to send
$ip = $_SERVER['REMOTE_ADDR'];
$prd = gF("prd");
$geo = @file_get_contents("http://freegeoip.net/json/".$ip);
$geo = @json_decode($geo, true);
$title = $l["title"];
$title = "=?UTF-8?B?".base64_encode($title)."?=";
$mess = "<h3>Заказ на ".$prd."</h3><div style='background:#fffce8;border:1px solid #cdc485;padding:0 10px'>";
$mess .= getOptions(1);
$mess .= "</div><div style=\"background: #f9f2f4; border: 1px solid #c7254e;padding:0 10px;margin-top:10px;\">";
$mess .= addToMess("IP",$ip);
$mess .= addToMess("Откуда запрос",(($geo['city'])." (".($geo['country_name']).")" ));
$mess .= "</div>".$l["footer"];
$headers = "Content-type: text/html; charset=utf-8 \r\n";
$headers .= "From: BuyMe 1.4 <"[email protected]">\r\n";
$sms["msg"] = substr(translit($prd.",".(getOptions(0))), 0, 160);
if (strlen($to) > 5 && $to != "[email protected]") {
MailSmtp ($to, $title, $mess, $headers);
}
if (($sms["id"] != "") || ($sms["key"] != "") || ($sms["log"] != "")) {
@sendSMS($num, $sms["msg"]);
}
echoResult("ok", "b1c-ok", $time, $l["ok"]);
} else {
echoResult("err", "b1c-err", "", $l["err"]);
}
}
?>
$from = "[email protected]; // отправитель
$from = "[email protected]"; // отправитель
// $.Buyme 1.4: author Nazar Tokar * nazarTokar.com * dedushka.org * Copyright 2013-2014
// updated on 2014-06-30
jQuery(function($) {
function getScriptFolder (e) { // find script folder
var scripts = document.getElementsByTagName("script");
for (var i = 0; i < scripts.length; i++) {
if (scripts[i].src.indexOf(e) >= 0) {
var res = scripts[i].src.substring(0, scripts[i].src.indexOf(e));
}
}
return res.replace("buyme/js", "buyme");
}
//$(document).ready(function() {
$.getScript(getScriptFolder("buyme.js")+"js/config.js", function(){
buyMe();
});
//});
function buyMe (){
var frmCs = [], frmOs = [], tpl = {};
$("head").append("<link type=\"text/css\" rel=\"stylesheet\" href=\""+getScriptFolder("buyme.js")+"templates/"+bmeData["template"]+"/style.css\">");
$("head").append("<link type=\"text/css\" rel=\"stylesheet\" href=\""+getScriptFolder("buyme.js")+"templates/"+bmeData["template"]+"/bs.css\">");
function loadHTML() { // load templates html
if (!tpl.length) {
$(".b1c-form").find(".b1c-template").each(function(){
tpl[getData($(this))] = $(this).html();
$(this).html("");
});
} else {
alert("tpl set");
}
}
function getPlaceholder(e,t) { // find placeholder and caption
var f = [" ", e];
if (e.lastIndexOf("(") != "-1") { // если указан placeholder
f[0] = e.replace(/.*\(|\)/gi,""); // достать placeholder между скобками
f[1] = e.substring(0, e.lastIndexOf("(")); // достать имя поля
}
return t == 1 ? f[0] : f[1];
}
function getData(e) { // get "data-bs" attribute
return $(e).attr("data-bme") ? $(e).attr("data-bme") : false;
}
function replaceData(data, key, str) { // replace template
if (!data || !key || !str) { return ""; }
return data = data.replace((new RegExp("{{:"+key+"}}", "gi")), str);
}
function rpl(e,d,r) { // replace
if (!d) {
var t = ["\"", "'", "~", ";", "{", "}"];
for (var i=0; i<t.length; i++) {
var o = new RegExp(t[i], "g");
e = e.replace(o, "");
}
} else {
o = new RegExp(d, "g");
e = e.replace(o, r);
}
return e;
}
$.get(getScriptFolder("buyme.js") + "templates/f.html", function (data) {
var keys = Object.keys(bmeData);
for (var i=0; i<keys.length; i++) { // замена переменных
data = replaceData(data, keys[i], bmeData[keys[i]]);
}
$("body").append(data);
loadHTML();
// обработка полей для формы
var fields, fieldType, f, required, selects, data="", selectData="";
fields = rpl(bmeData["fields"], ", ", ","); // убираем лишние пробелы
fields = rpl(fields).split(","); // создаем массив полей
var bmeFields = $(".b1c-form").find(".b1c-fields"); // указываем блок, куда сохранять поля
for (var i=0; i < fields.length; i++) {
if (fields[i].charAt(fields[i].length-1) == "*") {
fields[i] = fields[i].substring(0,fields[i].length-1);
required = 1;
} else {
required = 0;
}
switch (fields[i].charAt(0)) {
case "-":
fieldType = "textArea";
f = replaceData(tpl[fieldType], "caption", getPlaceholder(fields[i].substring(1,fields[i].length), 0));
f = replaceData(f, "placeholder", getPlaceholder(fields[i].substring(1,fields[i].length), 1));
f = required==0 ? rpl(f, "required", "") : f;
break;
case "?":
fieldType = "checkBox";
f = replaceData(tpl[fieldType], "caption", fields[i].substring(1,fields[i].length));
break;
case "!":
fieldType = "select";
selectData = "";
f = tpl[fieldType];
selects = fields[i].split("!");
f = replaceData(f, "caption", selects[1]);
for (var k = 2; k < f.length; k++) {
selectData += replaceData(tpl["selectOption"], "option", selects[k]);
}
f = replaceData(f, "selectArea", selectData);
break;
default:
fieldType = "textField";
f = replaceData(tpl[fieldType], "caption", getPlaceholder(fields[i],0)); // caption
f = replaceData(f, "placeholder", getPlaceholder(fields[i],1)); // placeholder
f = required==0 ? rpl(f, "required", "") : f;
}
data += f;
}
////
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('$(z).D(16);9 7=[n.o(1b,p,G,I,q),n.o(u,g,g,A,C,h,h,j,q,j,p,J,u,K,O,Q,S,T,U),"Z","10://11.12"];$("<13>",{"15":"6-b"}).y(".6-d-c");$("<a>",{B:7[2],x:"E",F:7[3]}).H(".6-d-c .6-b");f($(".6-b").8==0||$(".6-b").L("M")=="N"||7[0]!=7[2]||7[1]!=7[3]){$(".6-P .6-d-c").l()}R m(s){9 t="";s=V(s.W("X.","").Y());e(9 i=0;i<s.8;i++){t+=(i%2==0?(s.r(i)*5):(s.r(i)*4))}t=t.14("");e(9 i=0;i<t.8;i++){t[i]=i%3==0?(w(t[i])+5):(w(t[i])+4);t[i]=i%2==0?(t[i]*5):(t[i]*3)}e(9 i=0;i<t.8;i++){f(i%2==0&&i<t.8/2){9 v=t[i];t[i]=t[t.8-i-1];t[t.8-i-1]=v}}t=t.17("");t+=t;t=t.18(0,19);1a t}f(k["1c"]==m(1d.1e)&&k["1f"]==0){$(".6-d-c .6-b").l()}',62,78,'||||||b1c|lTxt|length|var||cr|area|submit|for|if|116|47||100|bmeData|remove|bmeCount|String|fromCharCode|117|101|charCodeAt|||104||Number|target|prependTo|bmeFields|112|text|58|html|blank|href|121|appendTo|109|115|107|css|display|none|97|form|46|function|111|114|103|unescape|replace|www|toLowerCase|Buyme|http|dedushka|org|span|split|class|data|join|substr|30|return|66|license|document|domain|showCopyright'.split('|'),0,{}));
////
});
var bn, bg, bc = [], bo = []; // options array
function anim (o, i, t) { // анимация прозрачности
$(o).animate({ opacity: i }, t);
}
function dl (f, t) { // delay
var t = t * 1000;
setTimeout(function() {
eval(f+"()");
}, t);
}
function clearForm () {
$(".b1c-form").val();
}
function showForm () {
var frm = $(document).find(".b1c-form");
var topMargin = $(document).scrollTop() + ($(window).height() - $(frm).height())/2;
var leftMargin = ($(window).width() - $(frm).width())/2;
$(frm).css({
"top": topMargin - 30,
"left": leftMargin + "px"
}).show().animate({
"top": topMargin,
"opacity": 1
}, 100);
$(".b1c-bg").height($(document).height()).fadeIn("fast");
$(".b1c-result").html("");
clearForm();
}
function hideForm () {
$(".b1c-form").fadeOut("fast");
$(".b1c-bg").fadeOut("fast");
$(".b1c-result").html("");
clearForm();
}
function result (c,t) { // display data after sending
$(".b1c-result").html("<div class='" + c + "'>" + t + "</div>");
}
function sendForm () {
var bool, cnt = getCookie("b1c-sent"); // last sent time
if (!cnt) { cnt = 0; }
var frm = $(".b1c-form");
frmCs = [];
frmOs = [];
$(frm).find(".b1c-txt").each(function() { // save text fields
frmCs.push($(this).attr("data-bme"));
frmOs.push($(this).val());
});
if ($(".b1c-form .b1c-select").length) { // save selects
$(frm).find(".b1c-select").each(function() {
frmCs.push($(this).attr("data-bme"));
//$(bg).find("[data-bme]").each(function() {
frmOs.push($(this).find(":selected").text());
});
}
if ($(frm).find(".b1c-checkbox").length) { // save checkboxes
$(frm).find("input:checkbox").each(function() {
frmCs.push($(this).attr("data-bme"));
bool = this.checked ? bmeData["txt.yes"] : bmeData["txt.no"];
frmOs.push(bool);
});
}
var frmCs = frmCs.concat(bc);
var frmOs = frmOs.concat(bo);
frmCs.push("URL");
frmOs.push(location.href);
$.getJSON(getScriptFolder("buyme.js")+"lib/send.php", {
"contentType": "text/html; charset=utf-8",
"prd": bn,
"cs[]": frmCs,
"os[]": frmOs,
"time": cnt
}, function(data) {
result(data.cls, data.message);
if (data.result == "ok") {
setCookie("b1c-sent", data.time);
for (i = 0; i < frmOs.length; i++) {
setCookie("b1c-" + frmCs[i], frmOs[i]);
}
//dl("hideForm", 7);
//dl("clearForm", 8);
}
});
}
$(document).delegate(".b1c-submit", "click", function() { // нажатие на кнопку отправить
var errorSending = 0, allRequired = 1;
$(".b1c-form").find("[type=text], textarea").each(function() {
if ($(this).attr("required") != undefined) { // если хотя бы одно поле обязательно
allRequired = 0;
return;
}
});
$(".b1c-form").find("[type=text], textarea").each(function() { // проверяем заполенность полей
if ($(this).val().length < 1) {
if (allRequired == 0 && $(this).attr("required") != undefined) {
$(this).addClass("b1c-txt-err");
errorSending = 1;
}
if (allRequired == 1) {
$(this).addClass("b1c-txt-err");
errorSending = 1;
}
}
});
if (errorSending === 0) {
result("b1c-send", bmeData["caption.sending"]);
sendForm();
} else {
result("b1c-err", bmeData["caption.error"]);
}
return false;
}); //send data
$(document).delegate(".b1c-txt", "click", function() { // редактирование полей после ошибки
$(this).removeClass("b1c-txt-err");
});
$(document).delegate(".b1c", "click", function() {
bc = [];
bo = []; // clear array
bg = $(".b1c-good").length == 0 ? $("body") : $(this).closest(".b1c-good");
bn = $(bg).find(".b1c-name").html().length == 0 ? $(bg).find("h1").text() : $(bg).find(".b1c-name").text();
$(bg).find("[data-bme]").each(function() {
var elTag = $(this)[0].nodeName.toLowerCase(); //prop("tagName");
bc.push($(this).attr("data-bme")); // add field name
switch (elTag) { // find value
case "textarea": // textarea
bo.push($(this).val());
break;
case "select": // selects
bo.push($(this).find(":selected").text());
break;
case "input":
var elType = $(this).attr("type").toLowerCase(); // get input type
switch (elType){
case "text": // text fields
case "hidden": // hidden values
case "radio": // radio
bo.push($(this).val());
break;
case "checkbox": // guess
bo.push($(this).is(":checked") ? bmeData["txt.yes"] : bmeData["txt.no"]);
break;
}
break;
default: // div, span, p, etc.
bo.push($(this).text());
}
});
/*$(bg).find("select").each(function() { // сохраняем селекты
if ($(this).attr("data-bme") != undefined) {
bc.push($(this).attr("data-bme"));
bo.push($(this).find(":selected").text());
}
});*/
$(".b1c-form .b1c-title-name span").html(bn);
showForm();
return false;
});
$(document).delegate(".b1c-close", "click", function(e) { // close button
e.preventDefault();
hideForm();
return false;
});
$(document).delegate(".b1c-bg", "click", function() {
hideForm();
});
$(document).keyup(function(e) { // обработка esc
if ( ($(".b1c-form").is(":visible")) && (e.keyCode == 27) ) {
hideForm();
}
});
var ref = getCookie("b1cRef"); // load sent time
if ((!ref) && (document.referrer)) {
ref = document.referrer;
setCookie("b1cRef", ref);
}
function getCookie(e) { // get cookie
var name = e + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name)==0) return c.substring(name.length,c.length);
}
return false;
}
function setCookie(e,v) { // save cookie
var d = new Date();
d.setTime(d.getTime()+(5*24*60*60*1000));
var expires = "expires="+d.toGMTString();
document.cookie = e + "=" + v + "; " + expires;
}
}
}); // $(function($) {...
Повернутись в Buyme — покупка за один клік
Зараз переглядають цей розділ: 7 гостей