• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

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

  • Ја почнал/а темата
  • #1

Pulse

Practice makes perfect
26 октомври 2014
1,306
1,393
127.0.0.1
petrov.mk
Гледам многу прашања и дилеми има поврзано со ова, па решив да ги разоткриеме и решиме.
Тоа што CaSys како платежен систем имаат малку документација и објаснувања, не ги прави да се недофатливи.
Изгубив многу време додека и влезам во штос, но кога ќе сфатиш на крај како работи, ќе се чудиш дали ти како девелопер cи за оваа работа... :D
Чекор 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

On your way to fame
11 февруари 2016
631
505
Струга
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
8,667
11,027
gokica's setup  
Processor & Cooler
i7 2600K & Noctua NH-D14
Motherboard
ASUS P8Z68-V Pro GEN 3
Storage
Samsung 850 Pro 256GB
PSU
Cooler Master V850
RAM
16GB 1333Mhz Kingston Value
Video card
ASUS Strix RX570 OC
Case
HAF 932
Mouse
Logitech G502 Proteus Core
Keyboard
Logitech K800
Audio
ASUS Xonar ST
Monitor
Dell UP3216Q
OS
Windows 7, 8 & 10
Секоја чест! Благодарност што посвети време и го сподели знаењето со нас тука.
 

Fatal1ty_

Großmeister
28 февруари 2008
22,115
27,380
kalco.ru
@Pulse Ај во порака пушти ми портфолио со php проекти. Стрикно php. И саатница.

Благодарам
 

Pasla

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

spiritBreaker

LaravelMaster
27 октомври 2015
2,993
3,363
Зменоо
spiritBreaker's setup  
Processor & Cooler
Intel Core i7 9700K + Cooler Master M240L
Motherboard
Asus ROG STRIX Z390-E Gaming
Storage
Samsung 960 EVO 250GB + Toshiba HDD 2TB + 500 GB Hitachi
PSU
Gigabyte G750H
RAM
2 x 8GB DDR4 Kingston @ 3600MHz
Video card
Gigabyte GTX 1080 Ti G1 Gaming
Case
Asus GT501 TUF
Mouse
Corsair M65 Pro
Keyboard
Cooler Master CK550
Audio
Onboard audio
Monitor
AOC LED 27" I2781FH
OS
Windows 10
Иванче, не се праат овие работи така. А и башка нарушуваш договор за кршење нс деловна тајна, али нели, ова е македонија :)
 
  • Ја почнал/а темата
  • #10

Pulse

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

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

CHukio

Gaining Experience
7 март 2013
131
56
Прилеп
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?
 
  • Ја почнал/а темата
  • #12

Pulse

Practice makes perfect
26 октомври 2014
1,306
1,393
127.0.0.1
petrov.mk
многу лесно, го копираш кодот според туторијалот, го ставаш на локалхост, променуваш со твојот MerchantID и плаќаш :D
 

maksten

Intern
7 октомври 2015
4
0
Скопје
Некој дали има искуство или да препорача некој кој може да помогне со имплементирање на комерцијален модул за онлајн наплата со Magento?
 
  • Ја почнал/а темата
  • #14

Pulse

Practice makes perfect
26 октомври 2014
1,306
1,393
127.0.0.1
petrov.mk
Некој дали има искуство или да препорача некој кој може да помогне со имплементирање на комерцијален модул за онлајн наплата со Magento?
ако збориме за Casys/Cpay, овие кодови од првиот пост можеш да ги имплементираш во било која скрипта. Само ти треба малку разбирање од програмирање.
 

maksten

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

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

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

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

Pulse

Practice makes perfect
26 октомври 2014
1,306
1,393
127.0.0.1
petrov.mk
Pulse,

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

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

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

maksten

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

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

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

Kokolo

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

http://webops.eu/plugins/cpay-com-mk-plugin-for-wordpress-woocommerce/
Другар дали го имаш пробано плагинчево? Да знам дали вреди.


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

Mao

On your way to fame
5 јуни 2007
1,226
961
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

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

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

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

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

spiritBreaker

LaravelMaster
27 октомври 2015
2,993
3,363
Зменоо
spiritBreaker's setup  
Processor & Cooler
Intel Core i7 9700K + Cooler Master M240L
Motherboard
Asus ROG STRIX Z390-E Gaming
Storage
Samsung 960 EVO 250GB + Toshiba HDD 2TB + 500 GB Hitachi
PSU
Gigabyte G750H
RAM
2 x 8GB DDR4 Kingston @ 3600MHz
Video card
Gigabyte GTX 1080 Ti G1 Gaming
Case
Asus GT501 TUF
Mouse
Corsair M65 Pro
Keyboard
Cooler Master CK550
Audio
Onboard audio
Monitor
AOC LED 27" I2781FH
OS
Windows 10
@Pulse е убо дете :) само да не се нервира многу многу со фордот :)
 

stk

Intern
5 јуни 2009
16
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.

Gaining Experience
4 октомври 2015
118
141
Здраво на сите,
но кога ќе го ставиш во Production mode (со сменета лозинка - наместо TEST_PASS нашата лозинка за најава на касис контролниот дел) на Cpay страната кажува System error..
Не ти треба таја лозинка. Следен чекор е да ги известиш cPay да ти издадат лозинка само доколку тестовите се успешни.
 
  • Ми се допаѓа
Реакции: stk

Нови мислења

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

Статистика

Теми
42,550
Мислења
820,331
Членови
28,213
Најнов член
vanadi
На врв Дно