Для работы, нужно указать публичный ключ CloudPayments, тип валюты, язык виджета и дополнительные параметры, ради которых появилось желание написать свой обработчик оплаты, а не воспользоваться существующим блоком ST02.
<script type="text/javascript">
$(document).ready(function(){
window.cp_lang = 'ru-RU';
window.cp_currency = 'RUB';
window.cp_publicId = '';
window.cp_failurl = '';
window.cp_successurl='';
function user_sendPaymentEventToStatistics(product, price) {
var virtPage = '/tilda/order/?product='+product+'&price='+price;
var virtTtitle = 'Order: '+product+' = '+price;
if(ga) {
if (window.mainTracker != 'tilda') {
ga('send', {'hitType':'pageview', 'page':virtPage,'title':virtTtitle});
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, {title: virtTtitle,referer: window.location.href});
}
}
function user_initCloudPayments() {
if (typeof cp == "object" && typeof cp.CloudPayments == "function") {
user_handleCloudPaymentsApiReady();
} else {
if(window.cloudpaymentsapiiscalled!==true){
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://widget.cloudpayments.ru/bundles/cloudpayments";
document.body.appendChild(script);
window.cloudpaymentsapiiscalled=true;
}
setTimeout(function(){
user_initCloudPayments();
}, 10);
}
}
function user_handleCloudPaymentsApiReady() {
$('[href^="#price"]').click(function(e){
e.preventDefault();
if(! window.cloudpaymentshandler) {
window.cloudpaymentshandler = new cp.CloudPayments({language: window.cp_lang});
}
var userCPclick = $(this);
var tmp = $(this).attr('href');
// разбираем ссылку и вытаскиваем данные для вызова виджета оплаты: #price:Cost:Product name
var arParam = tmp.split(':');
var productprice = parseFloat(arParam[1].replace(/[^0-9\.]/g,''));
var productname = arParam[2];
if (! productname) {
var tmp=$(this).closest('.r').find('.title');
if (tmp.length > 0) {
productname = tmp.text();
}
productname = $(this).text();
}
/* Open Checkout with further options:*/
window.cloudpaymentshandler.charge(
{
publicId: window.cp_publicId,
description: productname,
amount: productprice,
currency: window.cp_currency,
requireEmail: true,
data: {
myProp: 'myProp value'
}
},
function (options) { /* success*/
//действие при успешной оплате
user_sendPaymentEventToStatistics(productname, productprice);
if (window.cp_successurl > '') {
window.location.href = window.cp_successurl;
} else {
userCPclick.html('OK');
}
},
function (reason, options) { // fail
if (window.cp_failurl > '') {
window.location.href = window.cp_failurl;
}
}
);
});
}
user_initCloudPayments();
});
</script>