前言
当前用zencart商城的比较少了,最近又接到一个新的需求。为zencart商城对接一个日本的本地支付通道。原先为zencart商城开发过一个支付插件,拿来改造一下,记录改造过程。
核心代码
支付方式选择后,组织参数,提交到上游api,均通过unionpaySubmitOrder.php 文件完成。
订单提交
代码语言:javascript复制//提交参数
$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);
自动跳转,模版渲染
代码语言:javascript复制获取resb_data数据内,含有支付所需的token和一次性使用密钥。通过js提交到响应接口。此功能通过php模版渲染功能完成。
<?php echo varGet($data, 'L_SUBMIT_ORDER_CONFIRM_TITLE'); ?>
<!--
function OnLoadEvent() {
document.UnionpayStartCall.submit();
}
//-->
插件设置
插件设置界面