簡體   English   中英

snapscan和cs-cart集成

[英]snapscan & cs-cart integration

我被要求幫助將snapscan集成到cs-cart中,因為目前還沒有用於cs-cart的api。 我寫這段代碼是為了做outside_CC類型的樣式

 <?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以便下訂單? 它不像通過瀏覽器進行處理的信用卡,因為這需要移動手機。

這是快照掃描的信息

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}

請有人可以為我的困境提供解決方案

根據文檔,我只能確認一下:Webhooks。

“由於系統的實時性,我們建議您利用Webhook通知付款完成。”

嘗試使用以下代碼自動發布表單:

<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的文檔非常差。 請聯系支持團隊以獲取更多詳細信息。 例如,如果付款腳本位於app / payments目錄中,則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'); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM