zencart商城对接日本支付通道

行云流水
2024-08-09 / 0 评论 / 48 阅读 / 正在检测是否收录...

前言

当前用zencart商城的比较少了,最近又接到一个新的需求。为zencart商城对接一个日本的本地支付通道。原先为zencart商城开发过一个支付插件,拿来改造一下,记录改造过程。

核心代码

支付方式选择后,组织参数,提交到上游api,均通过unionpaySubmitOrder.php 文件完成。

订单提交

//提交参数
$parmsa = array(
    "ShopID"                => $data['MerNo'],
        "ShopPass"              => $data['Md5Key'],
        "OrderID"               => $data['BillNo'],
        "JobCd"                 => 'CAPTURE',
        "Amount"                => $data['Amount'],
        "Tax"                   => '0'
        );

$req_api_a = "https://p01.mul-pay.jp/payment/EntryTranUnionpay.idPass";

//获取支付链接
$resa = curlRemote($req_api_a, $parmsa);

//将返回转换为数组
$resa_data = stringToArray($resa);

//构造函数
$parmsb = array(
        "ShopID"                => $data['MerNo'],
        "ShopPass"              => $data['Md5Key'],
        "OrderID"               => $data['BillNo'],
        "AccessID"              => $resa_data['AccessID'],
        "AccessPass"            => $resa_data['AccessPass'],
        "RetURL"                => $data['ReturnURL'],
        "ErrorRcvURL"           => $data['ReturnURL'],
);

$req_api_b = 'https://p01.mul-pay.jp/payment/ExecTranUnionpay.idPass';


//获取支付链接
$resb = curlRemote($req_api_b, $parmsb);

//将返回转换为数组
$resb_data = stringToArray($resb);

自动跳转,模版渲染

获取resb_data数据内,含有支付所需的token和一次性使用密钥。通过js提交到响应接口。此功能通过php模版渲染功能完成。
<?php
if(!defined('VERSION_INFO')){
    exit;
}
?>

<html>
      <head>
      <title><?php echo varGet($data, 'L_SUBMIT_ORDER_CONFIRM_TITLE'); ?></title>
      <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
      </head>
      <body OnLoad='OnLoadEvent();'>
      <form name="UnionpayStartCall" action="<?php echo varGet($resb_data, 'StartURL'); ?>" method="POST">
        <noscript>
          hello;
          <br>
          <br>
          <center>
            <h2>ネット銀聯の決済画面へ遷移します。</h2>
            <input type="submit" value="続行">
          </center>
        </noscript>
        <input type="hidden" name="AccessID" value="<?php echo varGet($resb_data, 'AccessID'); ?>">
        <input type="hidden" name="Token" value="<?php echo varGet($resb_data, 'Token'); ?>">
      </form>
      <script>
    <!--
    function OnLoadEvent() {
        document.UnionpayStartCall.submit();
    }
    //-->
</script>
</body>
</html>

插件设置

插件设置界面

评论 (0)

取消
只有登录/注册用户才可评论