2015-11-05 38 views
0

我被要求幫助將snapscan集成到cs-cart中,因爲目前還沒有cs-cart的api。我爲了做outside_CC型風格snapscan&cs-cart集成

<?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); 
} 

?> 

這種作品寫了這個代碼,它說找不到網頁,但刷新它工作正常,拉訂單號和金額跨越。 我需要的問題或幫助是如何在付款完成後將客戶退回到購物車以下訂單?它不像信用卡,它通過瀏覽器進行處理,因爲這需要移動手機。

這裏是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收到回覆,請使用網絡掛接:

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

不幸的是他們對網絡掛接文檔是非常差的。請聯繫支持團隊瞭解更多詳情。例如,如果支付腳本位於應用程序/支付目錄,網絡掛接網址應該是指:

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'); }