2015-11-05 5 views
0

Меня попросили помочь интегрировать snapscan в cs-cart, так как пока нет api для cs-cart. Я написал этот код, чтобы сделать то стиль шрифта outside_CCsnapscan & cs-cart integration

<?php 

if(!defined('BOOTSTRAP')) die('Direct Access Denied'); 

if(!defined('PAYMENT_NOTIFICATION')) { 
    $mode = $processor_data['processor_params']['mode']; 
    if($mode) { 
     $form['id'] = $processor_data['processor_params']['id']; 
     $form['key'] = $processor_data['processor_params']['key']; 
    } else { 
     $form['id'] = 'shopalot'; 
     $form['key'] = 'secret'; 
    } 
    $form['reference'] = 'Order_'.$order_id; 
    $form['amount'] = number_format($order_info['total']*1, 2,'',''); 
    $form['currency'] = 'ZAR'; 
    $form['url'] = fn_url('payment_notification.notify?payment=snapscan&order_id='.$order_id,AREA,'current'); 
    $form['date'] = date('d-m-Y H:i'); 
    $form['email'] = $order_info['email']; 
    $checksum = $form['id'].'|'.$form['reference'].'|'.$form['amount'].'|'.$form['currency'].'|'.$form['url'].'|'.$form['date'].'|'.$form['email'].'|'.$form['key']; 
    $form['checksum'] = md5($checksum); 
echo <<<s 
<html> 

<body > 

     <form action="https://pos.snapscan.io/qr/$form[id]?id=$order_id&amount=$form[amount]&strict=true" method="POST" > 
     <input name="MERCHANT_ID" type="hidden" value="$form[id]"> 
     <input name="REFERENCE" type="hidden" value="$form[reference]"> 
     <input name="AMOUNT" type="hidden" value="$form[amount]"> 
     <input name="CURRENCY" type="hidden" value="ZAR"> 
     <input name="RETURN_URL" type="hidden" value="$form[url]"> 
     <input name="TRANSACTION_DATE" type="hidden" value="$form[date]"> 
     <input name="EMAIL" type="hidden" value="$form[email]"> 
     <input name="CHECKSUM" type="hidden" value="$form[checksum]"> 
    </form> 
    <script>document.forms[0].submit();</script> 


</body> 
</html> 
s; 
    die; 
}else{ 
    $order_id = $_REQUEST['order_id']; 
    $order_info = fn_get_order_info($order_id); 
    $payment_id = db_get_field("SELECT payment_id FROM ?:orders WHERE order_id = ?i",$order_id); 
    $processor_data = fn_get_payment_method_data($payment_id); 
    $status = $_POST['TRANSACTION_STATUS']; 
    if($status == 1 && fn_check_payment_script('snapscan.php',$order_id)) { 
     $pp_response['order_status'] = 'P'; 
     $pp_response['reason_text'] = 'The User Completed Payment with SnapScan'; 
     fn_update_order_payment_info($order_id,$pp_response); 
     fn_change_order_status($order_id,$pp_response['order_status'],'',false); 
    } else { 
     $pp_response['order_status'] = 'F'; 
     $pp_response['reason_text'] = 'Your Payment was Unsuccessful'; 
     fn_finish_payment($order_id,$pp_response,false); 
    } 
    fn_order_placement_routines('route',$order_id); 
} 

?> 

Этот вид работ, это не сказать, страница не найдена, но освежить она отлично работает, потянув номер заказа и составляет в поперечнике. Мой вопрос или помощь, которые мне требуются, - как я могу вернуть клиента в cs-cart после того, как платеж сделан, чтобы разместить заказ? это не как кредитная карта, где она обрабатывается через ваш браузер, так как для этого требуется мобильный сотовый телефон.

вот информация от SnapScan

http://developer.getsnapscan.com/#overview

Я также пробовал различные варианты, как всплывающие окна, которые отлично работают, но и всплывают, если вы оплатили кредитной картой.

другой другой вариант, я думал, что делать было попытаться определить конкретный способ оплаты подобное,

{if '$SnapScan'} 
<script language="javascript"> 
timer=setTimeout("window.open('https://pos.snapscan.io/qr/J0v26eBZ?id={$order_info.order_id}&amount={$order_info.total*100}&strict=true','','width=800,height=600')",5000) 
</script> 
{else} 
DO NOTHING 
{/if} 

Пожалуйста, может кто-нибудь предложить возможное решение моей Дилема

ответ

0

В соответствии с документацией, я могу только подтвердите это: Webhooks.

«Мы рекомендуем сделать использование webhook, чтобы получать уведомления о выплате завершения из-за реального времени характер системы.»

+0

Большое спасибо HELOstore. Я немного новичок, когда дело доходит до веб-крючков, вы могли бы направить меня в правильном направлении. Мне действительно нужно, чтобы секция snapscan открывалась в новом окне или всплывающем окне и размещала заказ одновременно, если это имеет смысл. Есть ли код, который мне не хватает? –

0

Попробуйте этот код, чтобы автоматически отправлять форму:

<html> 
<body onLoad="javascript:document.process.submit();"> 
<form action="https://pos.snapscan.io/qr/$form[id]?id=$order_id&amount=$form[amount]&strict=true" method="POST" name="process"> 
     <input name="MERCHANT_ID" type="hidden" value="$form[id]"> 
     <input name="REFERENCE" type="hidden" value="$form[reference]"> 
     <input name="AMOUNT" type="hidden" value="$form[amount]"> 
     <input name="CURRENCY" type="hidden" value="ZAR"> 
     <input name="RETURN_URL" type="hidden" value="$form[url]"> 
     <input name="TRANSACTION_DATE" type="hidden" value="$form[date]"> 
     <input name="EMAIL" type="hidden" value="$form[email]"> 
     <input name="CHECKSUM" type="hidden" value="$form[checksum]"> 
</form> 
</body> 
</html> 

Чтобы получить ответ от Snapscan, пожалуйста, используйте Webhook:

http://developer.getsnapscan.com/#webhook

К сожалению, их документация относительно webhook очень плохо. Для получения дополнительной информации обратитесь в службу поддержки. Например, если сценарий оплаты находится в каталоге приложения/платежей, webhook URL должен означать:

http://your_domain.com/app/payments/your_snapscan_script.php

код, который обрабатывает ответ должен начинаться с:

if (!defined('BOOTSTRAP')) { 
    require './init_payment.php'; 
    .... YOUR CUSTOM CODE HERE .... 
} 

ли не забудьте удалить следующую строку с начала файла:

if (!defined('BOOTSTRAP')) { die('Access denied'); } 
Смежные вопросы