BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> ePay интеграция
index_master
Публикувано на: 19-01-2021, 21:49
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 12
Регистриран на: 05.02.20



Здравейте колеги,

налага ми се да направя интеграция на epay(dot)bg към един сайт който сега правя. Всичко хубаво, имат си някаква документация обаче... нали когато се подготви някаква заявка трябва да ме пренасочи към demo.epay.bg и там да се логна с потребителя който съм създал за демо целта...да ама не :/ аз ли бъркам някъде или не става по този начин. Подготвям си checksum, encoded параметрите и после "Няма достъп до този сайт".

Дали трябва да направя истински профил и с него да си правя опити с плащания от по 1 ст. или има някаква друга врътка?
PMEmail Poster
Top
akolevutd
Публикувано на: 20-01-2021, 09:46
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 240
Регистриран на: 15.09.06



Здравей, преди около година/две правих интеграция с ePay и не я помня на 100%, но си е дърво голямо. За тестове ти е достатъчна регистрация (като търговец и клиент) само в demo.epay.bg Бъркаш някъде параметрите, които генерираш/подаваш към ePay.

Това мнение е било редактирано от akolevutd на 20-01-2021, 09:58
PMEmail Poster
Top
index_master
Публикувано на: 20-01-2021, 22:12
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 12
Регистриран на: 05.02.20



Ами да прав беше. Имах грешка, че съм сложил хем min и mail параметъра. Промених и адреса на заявката да минава през https и стана пренасочва ме към демо версията

CODE

function hmac($algo,$data,$passwd){
                                                      /* md5 and sha1 only */
                                                      $algo=strtolower($algo);
                                                      $p=array('md5'=>'H32','sha1'=>'H40');
                                                      if(strlen($passwd)>64) $passwd=pack($p[$algo],$algo($passwd));
                                                      if(strlen($passwd)<64) $passwd=str_pad($passwd,64,chr(0));

                                                      $ipad=substr($passwd,0,64) ^ str_repeat(chr(0x36),64);
                                                      $opad=substr($passwd,0,64) ^ str_repeat(chr(0x5C),64);

                                                      return($algo($opad.pack($p[$algo],$algo($ipad.$data))));
                                          }
                                          

                                          $secret     = '64 cifren kod';
                                          $min        = '.....';
                                          $invoice    = substr(number_format(time() * rand(), 0, '', ''), 0, 10); # XXX Invoice
                                          $sum        = '1000';                            # XXX Ammount
                                          $exp_date   = '01.08.2021';                       # XXX Expiration date
                                          $descr      = 'Test';                             # XXX Description
                                          $mail = "*****@*****";

                                          $data = <<<DATA
MIN={$min}
INVOICE={$invoice}
AMOUNT={$sum}
EXP_TIME={$exp_date}
DESCR={$descr}
DATA;

                                                $ENCODED  = base64_encode($data);
                                                $CHECKSUM = hmac('sha1', $ENCODED, $secret); # XXX SHA-1 algorithm REQUIRE
                                          
                                          
                                           ?>
                                           <input type="button" id="paylogin" value="plashtane">
                                          
                                          
                                           <form action="https://demo.epay.bg/" method="post">
                                                 <input type=hidden name=PAGE value="paylogin">
                                                 <input type=hidden name=ENCODED value="<?=$ENCODED; ?>">
                                                 <input type=hidden name=CHECKSUM value="<?=$CHECKSUM; ?>">
                                                 <input type=hidden name=URL_OK value="http://...">
                                                 <input type=hidden name=URL_CANCEL value="http://...">
                                                 <input type=submit>
                                          </form>
PMEmail Poster
Top
wqw
Публикувано на: 22-01-2021, 11:42
Quote Post


Group Icon
Име: Владимир Висулчев
Група: VIP
Ранг: Почетен член

Мнения: 6249
Регистриран на: 10.06.04



Btw, има си вградена hash_hmac която би трябвало да работи със 'sha1' което ползваш.

И то като махнеш hmac функцията от този код остава едно нищо бих казал :-))

cheers,
</wqw>


--------------------
PMEmail PosterUsers Website
Top
index_master
Публикувано на: 22-01-2021, 23:42
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 12
Регистриран на: 05.02.20



да така е icon_smile.gif а някой има ли си представа защо при пръщане в сайт $_POST e празен и не мога да подпиша плащането...
PMEmail Poster
Top
thrawn
Публикувано на: 23-01-2021, 07:46
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3076
Регистриран на: 17.01.17



В кодът който си дал никъде не използваш $_POST, нито показваш изпращане на данни към сайтът ти.

PMEmail Poster
Top
wqw
Публикувано на: 23-01-2021, 09:43
Quote Post


Group Icon
Име: Владимир Висулчев
Група: VIP
Ранг: Почетен член

Мнения: 6249
Регистриран на: 10.06.04



Пробвай да потърсиш в google за това: site:bgdev.org demo.epay.bg

cheers,
</wqw>


--------------------
PMEmail PosterUsers Website
Top
akolevutd
Публикувано на: 24-01-2021, 12:51
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 240
Регистриран на: 15.09.06



Плащането се 'подписва' чрез Webhook и по спомен ePay пращат стринг (вместо стандартен JSON или XML), който го парсваш с Regex след като валидираш хеша.

Това мнение е било редактирано от akolevutd на 24-01-2021, 12:52
PMEmail Poster
Top
index_master
Публикувано на: 25-01-2021, 19:08
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 12
Регистриран на: 05.02.20



Добре, но нали след като се направи плащането и ме препрати към 'URL_OK" тогава имам
CODE

$ENCODED  = $_POST['encoded'];
$CHECKSUM = $_POST['checksum'];

# XXX Secret word with which merchant make CHECKSUM on the ENCODED packet
$secret = 'кода';
$hmac   = hmac('sha1', $ENCODED, $secret); # XXX SHA-1 algorithm REQUIRED

if ($hmac == $CHECKSUM) { # XXX Check if the received CHECKSUM is OK
   
   $data = base64_decode($ENCODED);
   $lines_arr = split("\n", $data);
   $info_data = '';
   
   foreach ($lines_arr as $line) {
       if (preg_match("/^INVOICE=(\d+):STATUS=(PAID|DENIED|EXPIRED)(:PAY_TIME=(\d+):STAN=(\d+):BCODE=([0-9a-zA-Z]+))?$/", $line, $regs)) {
..........................


Ей тук тези $_POST са ми празни и съответно нищо не става...чувствам се като човек за 1ви път използващ технологии

user posted image
russian image host това има ли нещо общо?

Това мнение е било редактирано от index_master на 25-01-2021, 19:10
PMEmail Poster
Top
akolevutd
Публикувано на: 26-01-2021, 09:15
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 240
Регистриран на: 15.09.06



Никога при Payments не разчитай на URL_OK, нямаш гаранция потребителя след като си плати къде ще отиде. За тази цел хората са измислили Webhook, IPN и т.н.
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0