* 交易:消费:前台跳转,有前台通知应答和后台通知应答
 * 日期: 2015-09
 * 版本: 1.0.0  * 版权: 中国银联
 * 说明:以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考,不提供编码性能规范性等方面的保障
 * 提示:该接口参考文档位置:open.unionpay.com帮助中心 下载  产品接口规范  《网关支付产品接口规范》,
 *              《平台接入接口规范-第5部分-附录》(内包含应答码接口规范,全渠道平台银行名称-简码对照表)
 *              《全渠道平台接入接口规范 第3部分 文件接口》(对账文件格式说明)
 * 测试过程中的如果遇到疑问或问题您可以:1)优先在open平台中查找答案:  *          调试过程中的问题或其他问题请在 https://open.unionpay.com/ajweb/help/faq/list 帮助中心 FAQ 搜索解决方案  *                             测试过程中产生的6位应答码问题疑问请在https://open.unionpay.com/ajweb/help/respCode/respCodeList 输入应答码搜索解决方案  *                          2) 咨询在线人工支持: open.unionpay.com注册一个用户并登陆在右上角点击“在线客服”,咨询人工QQ测试支持。  * 交易说明:1)以后台通知或交易状态查询交易确定交易成功,前台通知不能作为判断成功的标准.  *       2)交易状态查询交易(Form_6_5_Query)建议调用机制:前台类交易建议间隔(5分、10分、30分、60分、120分)发起交易查询,如果查询到结果成功,则不用再查询。(失败,处理中,查询不到订单均可能为中间状态)。也可以建议商户使用payTimeout(支付超时时间),过了这个时间点查询,得到的结果为最终结果。  */ public function getsubmit(){ 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($data as $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; } public function frontUrl(){ //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 '签名为空'; } } public function backUrl(){ if (isset ( $_POST ['signature'] )) { vendor('UnionPay.sdk.acp_service'); //echo com\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); } }