Стани премиум член и добиј попуст на 2000+ производи и куп други бенефити!

[Туторијал] cPay/CaSys PHP интеграција во 3 чекори

Pulse

user
26 октомври 2014
1.552
1.665
127.0.0.1
Гледам многу прашања и дилеми има поврзано со ова, па решив да ги разоткриеме и решиме.
Тоа што CaSys како платежен систем имаат малку документација и објаснувања, не ги прави да се недофатливи.
Изгубив многу време додека и влезам во штос, но кога ќе сфатиш на крај како работи, ќе се чудиш дали ти како девелопер cи за оваа работа... :D
casysLogo.gif
Чекор 1 - Подготвување на формата за плаќање
Код:
<form name="aspnetForm" method="post" action="https://www.cpay.com.mk/client/Page/default.aspx?xml_id=/<?php echo $language; ?>/.loginToPay/.simple/" id="aspnetForm" target="cPayFrame">
<input id='AmountToPay' name='AmountToPay' value='<?php echo $AmountToPay; ?>' type='hidden' />
<input id='PayToMerchant' name='PayToMerchant' value='<?php echo $PayToMerchant; ?>' type='hidden' />
<input id='MerchantName' name='MerchantName' value='<?php echo $MerchantName; ?>' type='hidden' />
<input id='AmountCurrency' name='AmountCurrency' value='<?php echo $AmountCurrency; ?>' type='hidden' />
<input id='Details1' name='Details1' value='<?php echo $Details1; ?>' type='hidden' />
<input id='Details2' name='Details2' value='<?php echo $Details2; ?>' type='hidden' />
<input id='PaymentOKURL' size='10' name='PaymentOKURL' value='<?php echo $PaymentOKURL; ?>' type='hidden' />
<input id='PaymentFailURL' size='10' name='PaymentFailURL' value='<?php echo $PaymentFailURL; ?>' type='hidden' />
<input id='CheckSumHeader' name='CheckSumHeader' value='<?php echo $CheckSumHeader; ?>' type='hidden' />
<input id='CheckSum' name='CheckSum' value='<?php echo $CheckSum; ?>' type='hidden' />
<input id='FirstName' size='10' name='FirstName' value='<?php echo $FirstName; ?>' type='hidden' />
<input id='LastName' size='10' name='LastName' value='<?php echo $LastName; ?>' type='hidden' />
<input id='Address' size='10' name='Address' value='<?php echo $Address; ?>' type='hidden' />
<input id='City' size='10' name='City' value='<?php echo $City; ?>' type='hidden' />
<input id='Zip' size='10' name='Zip' value='<?php echo $Zip; ?>' type='hidden' />
<input id='Telephone' size='10' name='Telephone' value='<?php echo $Telephone; ?>' type='hidden' />
<input id='Email' size='10' name='Email' value='<?php echo $Email; ?>' type='hidden' />
<input id='OriginalAmount' name='OriginalAmount' value='<?php echo $OriginalAmount; ?>' type='hidden' />
<input class='button' value='Плати' type='submit'/>
</form>
<iframe src="simple.html" style="width:521px;height:500px;border:medium none;" name="cPayFrame" id="cPayFrame" frameborder="0" scrolling="auto"></iframe>
Формата погоре ќе ви изгенерира едно копче „Плати“ при што кога ќе се кликне на него ќе излезе целосната форма за плаќање во iframe прозорот.
Чекор 2 - Објаснување на PHP променливите што се користат во формата погоре
PHP код
Код:
$globalpay = 5000; // cena shto treba da se plati
$arr2 = "0001/0003/00010"; // unikatni redni broevi na narachkata so koi podocna ke vrshite detekcija dali e plateno ili ne
$mult = $globalpay * 100; // cenata shto treba da se plati pomnozena so 100
$customer_name = "Ime na korisnikot";
$customer_lastname = "Prezime na korisnikot";
$customer_address = "Adresa na korisnikot";
$customer_town = "Grad";
$customer_zip = "Postenski kod";
$customer_tel = "Telefonski broj";
$customer_email = "Email";
// CheckSum & CheckSumHeader
// step 1
$AmountToPay = $mult; // cenata shto treba da se plati pomnozena so 100
$PayToMerchant = "XXXXXXXXXX"; // ova ne treba da se menuva, vi go imaat dadeno od CaSys
$MerchantName = "Ime na firmata"; // ova ne treba da se menuva, vi go imaat dadeno od CaSys
$AmountCurrency = "MKD"; // valuta vo koja se vrshi plakjanjeto
$Details1 = "Online prodavnica"; // Ovde mozete da napisete shto sakate
$Details2 = $arr2; // unikatnite redni broevi
$PaymentOKURL = "http://vashata_strana.mk/proverka.php?state=ok"; // strana kade formata kje prenasocuva koga plakjanjeto e uspeshno
$PaymentFailURL = "http://vashata_strana.mk/proverka.php?state=error"; // strana kade formata kje prenasocuva koga plakjanjeto e neuspeshno
$FirstName = $customer_name;
$LastName = $customer_lastname;
$Address = $customer_address;
$City = $customer_town;
$Zip = $customer_zip;
$Telephone = $customer_tel;
$Email = $customer_email;
$OriginalAmount = $globalpay; // cenata shto treba da se plati
$md5password = "TEST_PASS"; // za chudo ovde ne treba da ja napisete vashata lozinka tuku vaka treba da si ostane kaj sekogo
// step 2 - Vo ovie polinja se generira kolku karakteri sodrzi edno pole so zerofilled na 3 brojki, primer "Zdravo" sodrzi 6 bukvi i imate izgenerirano 006, ova kje vi bide potrebno podocna za generiranje na CheckSum i CheckSumHeader
$AmountToPay2 = sprintf("%03d", strlen($AmountToPay));
$PayToMerchant2 = sprintf("%03d", strlen($PayToMerchant));
$MerchantName2 = sprintf("%03d", strlen($MerchantName));
$AmountCurrency2 = sprintf("%03d", strlen($AmountCurrency));
$Details12 = sprintf("%03d", strlen($Details1));
$Details22 = sprintf("%03d", strlen($Details2));
$PaymentOKURL2 = sprintf("%03d", strlen($PaymentOKURL));
$PaymentFailURL2 = sprintf("%03d", strlen($PaymentFailURL));
$FirstName2 = sprintf("%03d", strlen($FirstName));
$LastName2 = sprintf("%03d", strlen($LastName));
$Address2 = sprintf("%03d", strlen($Address));
$City2 = sprintf("%03d", strlen($City));
$Zip2 = sprintf("%03d", strlen($Zip));
$Telephone2 = sprintf("%03d", strlen($Telephone));
$Email2 = sprintf("%03d", strlen($Email));
$OriginalAmount2 = sprintf("%03d", strlen($OriginalAmount));
// step 3
$CheckSumHeader = "16AmountToPay,PayToMerchant,MerchantName,AmountCurrency,Details1,Details2,PaymentOKURL,PaymentFailURL,FirstName,LastName,Address,City,Zip,Telephone,Email,OriginalAmount," . $AmountToPay2 . $PayToMerchant2 . $MerchantName2 . $AmountCurrency2 . $Details12 . $Details22 . $PaymentOKURL2 . $PaymentFailURL2 . $FirstName2 . $LastName2 . $Address2 . $City2 . $Zip2 . $Telephone2 . $Email2 . $OriginalAmount2;
$CheckSumHeader2 = $CheckSumHeader . $AmountToPay . $PayToMerchant . $MerchantName . $AmountCurrency . $Details1 . $Details2 . $PaymentOKURL . $PaymentFailURL . $FirstName . $LastName . $Address . $City . $Zip . $Telephone . $Email . $OriginalAmount . $md5password;
$CheckSum = md5($CheckSumHeader2);
// step 4 - jazik na formata za plakjanje dokolku imate prethodno cookie so koe odreduvate koj jazik go koristi kupuvachot, dokolku nemate avtomatski ke bide na Makedonski
if($_COOKIE['language'] == "mk"){
   $language = "mk-MK";
} else if($_COOKIE['language'] == "en"){
   $language = "en-US";
} else{
   $language = "mk-MK";
}
simple.html код/содржина
Код:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body></body>
</html>
Чекор 3 - PaymentOKURL и PaymentFailURL
proverka.php код/содржина
Код:
<?php
if($_SERVER['REQUEST_METHOD'] === 'POST'){
   $step = mysql_real_escape_string($_GET['state']);
   if($step == "ok"){
     // ovde kod sto treba da se izvrshi koga plakjanjeto e uspeshno
   } else if($step == "error"){
     // ovde kod sto treba da se izvrshi koga plakjanjeto e neuspeshno
   } else{
     header("Location: http://vashata_strana.mk/");
   }
} else{
   header("Location: http://vashata_strana.mk/");
}
?>
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>Naslov na stranata</title>
<link rel="icon" type="image/x-icon" href="images/favicon.png" />
<link rel="shortcut icon" type="image/x-icon" href="images/favicon.png" />
</head>
<body>
<?php
if($state == "ok"){
   echo "ПЛАЌАЊЕТО БЕШЕ УСПЕШНО!";
} else if($state == "error"){
   echo "ПЛАЌАЊЕТО БЕШЕ НЕУСПЕШНО! ОБИДЕТЕ СЕ ПОВТОРНО!";
}
?>
</body>
</html>
* ВАЖНО Е ДА СЕ НАПОМЕНИ
proveri.php документот се вчитува со POST method и во _POST ќе ги имате сите информации што претходно ги пративте до CaSys серверот, со кои можете во state = ok делот да правите споредба и апдејтирате база, што како кога е купено и слично.
Пример: во $_POST['Details2'] ги имате уникатните редни броеви на нарачката, така да во state = ok делот можете да правите апдејт дека таа нарачка е платена успешно!

Доколку сакате некој друг да го заврши целиот процес на интеграција за вас, контактирајте ме во ПП, не сум од оние што дерат на суво :D :D
BUY ME A BEER! :p
 

masterwu

lurker
11 февруари 2016
857
819
Струга
masterwu's setup  
Processor & Cooler
Intel i5 6600K, Cooler Master Hyper 212 EVO
Motherboard
Asus Z170 Pro Gaming
Storage
Samsung 840 Evo 250GB, 2TB WD Caviar Blue, 640GB WD Caviar Green
PSU
Cooler Master V550S
RAM
16GB (2x 8GB) G.Skill Ripjaws V DDR4 3200MHz
Video card
Asus Strix GTX 970
Case
Cooler Master CM690 III
Mouse
Logitech Proteus Core G502
Keyboard
Das Keyboard Model S (MX-Brown switches)
Monitor
Dell UltraSharp U2410
OS
Windows 10
Фала за туторијалчево, дефинитивно ќе се заштеди доста време (а уште повеќе ако направиш WooCommerce плагинче од ова :) )
 

gokica

Модератор
13 јуни 2009
10.118
14.247
Секоја чест! Благодарност што посвети време и го сподели знаењето со нас тука.
 

Fatal1ty_

Großmeister
28 февруари 2008
23.873
34.159
roka.mk
@Pulse Ај во порака пушти ми портфолио со php проекти. Стрикно php. И саатница.

Благодарам
 

Pasla

read-only
19 март 2016
1
0
Здраво,
Случајно налетав на туторијалчево ама да сум поискрена не ми се замара бидејки ми е за на работа и секогаш може да плати газда некој друг да го направи ;) Се работи за страна во OpenCart.Договор со Уни Банка имаме склучено се само се чека на инсталацијата.Ако има заинтересирани пратете ми понуда во порака или на [email protected]. ке ви бидам многу благодарна :)
(пс. не стигнав да ги прочитам правилата на форумов да се извинам унапред на модераторот ако има грешки )
 

spiritBreaker

LaravelMaster
27 октомври 2015
3.845
5.010
Писти Охту
Иванче, не се праат овие работи така. А и башка нарушуваш договор за кршење нс деловна тајна, али нели, ова е македонија :)
 

Pulse

user
26 октомври 2014
1.552
1.665
127.0.0.1
Само да пуштам еден апдејт!
Во делот каде генерирате колку карактери содржи внесениот стринг и го заокружувате на 3 цифри.
Ова
Код:
$AmountToPay2 = sprintf("%03d", strlen($AmountToPay));
целиов овој дел со заокружување на 3 цифри заменете го со
Код:
$AmountToPay2 = sprintf("%03d", mb_strlen($AmountToPay, 'UTF-8'));
Причина за ова дејство:
strlen функцијата враќа колку бајти содржи стрингот, а не колку карактери. При внесување на кирилични карактери, должината на стрингот ќе се „дуплира“, а со внес на латиница ќе остане непроменета. „Дуплира“ значи дека кириличните карактери се 2 бајта и автоматски добивате погрешен број на карактери.

* Доколку го прочита некој ова од администрацијата, може постот да се спои со првиот како апдејт. :)
Благодарам.
 

CHukio

hello world
7 март 2013
203
142
Прилеп
churlinoski.mk
CHukio's setup  
Processor & Cooler
AMD Rayzen 5 2600x
Storage
Kingston A2000 500GB, Kingston A400 240GB
RAM
2 X Kingston HyperX FURY 8GB 2600MHz
Video card
AMD Radeon RX 550X 4G
Имам едно прашање. Како можам да истестирам дали функционира сето ова со мојот MerchantID?
 

Pulse

user
26 октомври 2014
1.552
1.665
127.0.0.1
многу лесно, го копираш кодот според туторијалот, го ставаш на локалхост, променуваш со твојот MerchantID и плаќаш :D
 

maksten

read-only
7 октомври 2015
4
0
Скопје
Некој дали има искуство или да препорача некој кој може да помогне со имплементирање на комерцијален модул за онлајн наплата со Magento?
 

Pulse

user
26 октомври 2014
1.552
1.665
127.0.0.1
Некој дали има искуство или да препорача некој кој може да помогне со имплементирање на комерцијален модул за онлајн наплата со Magento?
ако збориме за Casys/Cpay, овие кодови од првиот пост можеш да ги имплементираш во било која скрипта. Само ти треба малку разбирање од програмирање.
 

maksten

read-only
7 октомври 2015
4
0
Скопје
Pulse,

Ви благодариме на Вашата препорака.
Во моментов немаме девелопер кој би можел да ни ги изработи и овие едноставни решенија.

Потребен ни е девелопер со малку поголемо искуство со Magento за имплементација со оглед дека сакаме да воведеме и онлајн плаќање на рати и автоматски обновливи плаќања за кои имаме добиено одобрение и упатства од Стопанска банка за нивно имплементирање.

Дали би можеле Вас или некој со Ваша препорака да ангажираме и колкав буџет би ни требало да можеме да го реализираме ова.
 

Pulse

user
26 октомври 2014
1.552
1.665
127.0.0.1
Pulse,

Ви благодариме на Вашата препорака.
Во моментов немаме девелопер кој би можел да ни ги изработи и овие едноставни решенија.

Потребен ни е девелопер со малку поголемо искуство со Magento за имплементација со оглед дека сакаме да воведеме и онлајн плаќање на рати и автоматски обновливи плаќања за кои имаме добиено одобрение и упатства од Стопанска банка за нивно имплементирање.

Дали би можеле Вас или некој со Ваша препорака да ангажираме и колкав буџет би ни требало да можеме да го реализираме ова.
Јас да би се нафатил, мое мислење за имплементација би било околу 150-200Е еднократко.
Побарај друг за оваа работа, јас само што се вратив од годишен и сум преокупиран со работа :(
 

maksten

read-only
7 октомври 2015
4
0
Скопје
Ако некој друг има на форумов што би сакал да се нафати нека пише слободно.
Инаку ако не е проблем имплементацијата да биде направена односно целосно во функција до 1ви Септември.

Што се однесува до цената и плаќањето останува да се видиме и да прецизираме за истото.

Дали има разлика ако е решението за magento 1.9.3 или за magento 2.2 или ќе може да се примени и на двете верзии.
 

Kokolo

read-only
27 ноември 2009
3
0
Не знам од кој е ова, ама за смешна сума од 10 евра некој направил плагинче.

http://webops.eu/plugins/cpay-com-mk-plugin-for-wordpress-woocommerce/

Другар дали го имаш пробано плагинчево? Да знам дали вреди.


А и општо некој да не знае Wordpress плагин/имплементација за cPay/CaSys?
 

Mao

user
5 јуни 2007
1.341
1.094
Mao's setup  
Processor & Cooler
Ryzen 9 3900X + BeQuiet Dark Rock Pro 4
Motherboard
Asus Rog Strix B450-F Gaming
Storage
Samsung Evo Plus 970 M2 nVME SSD
PSU
CM 850W M2 Silent Pro
RAM
Kingston Predator/Fury 32GB 3200Mhz
Video card
Asus Rog Strix 1070 8GB
Case
DeepCool Mattrex RGB
Mouse
Logitech G502 Hero
Keyboard
Cooler Master MK750
Monitor
Alienware 25" 240hz
OS
Win 10 Pro
Да ја освежам темава, успеа некој да направи / набави плагин за Cpay за некој од другиве платофрми како што се Magento, OpenCart, Prestashop? За wodrdpress плагинот го имам, го купив.

Треба да почнам да работам на веб шоп проект, па си велам да истражам малку првин околу плагиниве како стојат работите, оти ќе ми треба некој.

by the way, ако некој го сака плагинот нека пише пп ќе му го пратам.
 

Gegovskid

read-only
18 мај 2019
1
8
Здраво на сите,

Можеби не го користам моето право за пишување на овој форум по неговите правила (и однапред се извинувам на админот за тоа), но би сакал да споделам едно искуство околу оваа тема.
Ги завршивме сите потребни папирологии со банката и casys системот, ги добивме потребните упатства, го набавивме плугинот, меѓутоа тука почна нашата мака околу тестирање и имплементација на системот. После скоро 2 недели допишување со корисничката подршка, ние бевме на исто место, т.е. никаде. Го контактирав Pulse и за скромна надокнада го добивме системот истестиран и спремен за работа.
Зато, мислам дека е во ред, вака јавно да му се заблагодарам на Pulse за укажаната помош и да го препорачам на сите коишто можеби ќе се сретнат со проблемот на имплементација, нека не се нервираат и не бараат решенија и да си го губат времето, го имате вистинскиот човек за ова, неговиот username e Pulse и човекот навистина ќе Ви ги среди сите проблеми за beer и навистина не е еден од оние кои "дерат" на суво.

Ти благодарам Pulse.

Со почит, Драгослав :)
 

stk

read-only
5 јуни 2009
18
0
Здраво на сите,

Ми треба мала помош околу Casys имплементација на Opencart.

Најдов еден готов Casys додаток за Opencart кој што во тест мод со TEST_PASS функционира супер додатокот (дава информација дека Checksum е пресметан и прави URL redirection за успешна или неуспешна трансакција) но кога ќе го ставиш во Production mode (со сменета лозинка - наместо TEST_PASS нашата лозинка за најава на касис контролниот дел) на Cpay страната кажува System error.

Прашањето ми е:
Дали треба да ги известиме во Касис дека тестирањата завршија и системот да ни го пуштат во употреба односно да можеме да примаме реални нарачки/трансакции или треба ние да направиме некои корекции во додатокот.

Ми испратија еден код/грешка од одделот за поддршка на Касис и не знам дали е поврзан со мојот додаток или со корисничката сметка на Касис бидејќи бев блокиран поради неуспешно логирање.

FATAL Invalid CheckSum from Merchant TIN=XXXXXXXXX! Expected -XXXXXXXXXXXXXXXXXXXXXXXXXXXX got- XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Го контактирав девелоперот што го има направено додатокот но не добив никаков повратен одговор од него.

Ве молам за помош.. :)

Поздрав.
 

Frozen.

hello world
4 октомври 2015
179
232
Здраво на сите,
но кога ќе го ставиш во Production mode (со сменета лозинка - наместо TEST_PASS нашата лозинка за најава на касис контролниот дел) на Cpay страната кажува System error..

Не ти треба таја лозинка. Следен чекор е да ги известиш cPay да ти издадат лозинка само доколку тестовите се успешни.
 
  • ми се допаѓа
Реакции: stk
членови онлајн
мислења
теми
членови

Последни теми

Офтопик

Последни огласи

IT.mk/market понуда

Бесплатна достава на 3000 производи
На врв Дно