//银联支付在银联官网()下载UnionPay文件注意签名证书当时恶心了好久
classUnionPayActionextendsPayAction{
publicfunction_initialize(){
vendor('UnionPay.sdk.acp_service');
//vendor('PCAlipay.lib.alipay_submit');
//vendor('PCAlipay.lib.alipay_notify');
}
/**
*重要:联调测试时请仔细阅读注释!
*
*产品:跳转网关支付产品
*交易:消费:前台跳转,有前台通知应答和后台通知应答
*日期:-09
*版本:1.0.0
*版权:中国银联
*说明:以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考,不提供编码性能规范性等方面的保障
*提示:该接口参考文档位置:帮助中心下载产品接口规范《网关支付产品接口规范》,
*《平台接入接口规范-第5部分-附录》(内包含应答码接口规范,全渠道平台银行名称-简码对照表)
*《全渠道平台接入接口规范第3部分文件接口》(对账文件格式说明)
*测试过程中的如果遇到疑问或问题您可以:1)优先在open平台中查找答案:
*调试过程中的问题或其他问题请在/ajweb/help/faq/list帮助中心FAQ搜索解决方案
*测试过程中产生的6位应答码问题疑问请在/ajweb/help/respCode/respCodeList输入应答码搜索解决方案
*2)咨询在线人工支持:注册一个用户并登陆在右上角点击“在线客服”,咨询人工QQ测试支持。
*交易说明:1)以后台通知或交易状态查询交易确定交易成功,前台通知不能作为判断成功的标准.
*2)交易状态查询交易(Form_6_5_Query)建议调用机制:前台类交易建议间隔(5分、10分、30分、60分、120分)发起交易查询,如果查询到结果成功,则不用再查询。(失败,处理中,查询不到订单均可能为中间状态)。也可以建议商户使用payTimeout(支付超时时间),过了这个时间点查询,得到的结果为最终结果。
*/
publicfunctiongetsubmit(){
header('Content-type:text/html;charset=utf-8');
//include_once$_SERVER['DOCUMENT_ROOT'].'/upacp_demo_b2c/sdk/acp_service.php';
$order=M('order');
$data=$order->where(array('payNum'=>$_GET['order']))->select();
$money=0;
foreach($dataas$k=>$v){
$money+=$data[$k]['money'];
}
/*dump($_GET['number']);
exit;*/
//$money=$money*100;
$params=array(
//以下信息非特殊情况不需要改动
'version'=>'5.0.0',//版本号
'encoding'=>'utf-8',//编码方式
'txnType'=>'01',//交易类型
'txnSubType'=>'01',//交易子类
'bizType'=>'000201',//业务类型
'frontUrl'=>'http://wwww.****.com/UnionPay/frontUrl',//前台通知地址
'backUrl'=>'http://wwww.****.com/UnionPay/backUrl',//后台通知地址
'signMethod'=>'01',//签名方法
'channelType'=>'07',//渠道类型,07-PC,08-手机
'accessType'=>'0',//接入类型
'currencyCode'=>'156',//交易币种,境内商户固定156
//TODO以下信息需要填写
'merId'=>'********',//商户代码,请改自己的测试商户号,此处默认取demo演示页面传递的参数
'orderId'=>$_GET['order'],//商户订单号,8-32位数字字母,不能含“-”或“_”,此处默认取demo演示页面传递的参数,可以自行定制规则
'txnTime'=>date('YmdHis',time()),//订单发送时间,格式为YYYYMMDDhhmmss,取北京时间,此处默认取demo演示页面传递的参数
'txnAmt'=>'1',//交易金额,单位分,此处默认取demo演示页面传递的参数
//'reqReserved'=>'透传信息',//请求方保留域,透传字段,查询、通知、对账文件中均会原样出现,如有需要请启用并修改自己希望透传的数据
//TODO其他特殊用法请查看special_use_purchase.php
);
com\unionpay\acp\sdk\AcpService::sign($params);
$uri=com\unionpay\acp\sdk\SDK_FRONT_TRANS_URL;
$html_form=com\unionpay\acp\sdk\AcpService::createAutoFormHtml($params,$uri);
echo$html_form;
}
publicfunctionfrontUrl(){
//dump($_GET);
//dump($_POST);
//dump(com\unionpay\acp\sdk\SDK_LOG_FILE_PATH);
vendor('UnionPay.sdk.acp_service');
if(isset($_POST['signature'])){
$code=com\unionpay\acp\sdk\AcpService::validate($_POST)?'验签成功':'验签失败';
if($code=='验签成功'){
$out_trade_no=$_POST['orderId'];//其他字段也可用类似方式获取
$respCode=$_POST['respCode'];//判断respCode=00或A6即可认为交易成功
if($respCode=='00'||$respCode=='A6'){
$this->redirect('Member/orderList');
}else{
echo'交易失败';
}
}else{
//echo$code;
}
}else{
echo'签名为空';
}
}
publicfunctionbackUrl(){
if(isset($_POST['signature'])){
vendor('UnionPay.sdk.acp_service');
//echocom\unionpay\acp\sdk\AcpService::validate($_POST)?'验签成功':'验签失败';
$orderId=$_POST['orderId'];//其他字段也可用类似方式获取
$respCode=$_POST['respCode'];//判断respCode=00或A6即可认为交易成功
$code=com\unionpay\acp\sdk\AcpService::validate($_POST)?'验签成功':'验签失败';
if($code=='验签成功'){
if($respCode=='00'||$respCode=='A6'){
$this->redirect('Member/orderList');
}else{
echo'交易失败';
}
}else{
//echo$code;
}
}else{
echo'签名为空';
}
//dump($_GET);
}
}