PHP 银联支付
<?php//银联支付在银联官网(open.unionpay.com)下载UnionPay文件注意签名证书当时恶心了好久classUnionPayActionextendsPayAction{publicfunction_initialize(){vendor('UnionPay.sdk.acp_service');//vendor('PCAlipay.lib.alipay_submit');//vendor('PCAlipay.lib.alipay_notify');}/***重要:联调测试时请仔细阅读注释!**产品:跳转网关支付产品<br>*交易:消费:前台跳转,有前台通知应答和后台通知应答<br>*日期:2015-09<br>*版本:1.0.0*版权:中国银联<br>*说明:以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考,不提供编码性能规范性等方面的保障<br>*提示:该接口参考文档位置:open.unionpay.com帮助中心下载产品接口规范《网关支付产品接口规范》,<br>*《平台接入接口规范-第5部分-附录》(内包含应答码接口规范,全渠道平台银行名称-简码对照表)<br>*《全渠道平台接入接口规范第3部分文件接口》(对账文件格式说明)<br>*测试过程中的如果遇到疑问或问题您可以: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(支付超时时间),过了这个时间点查询,得到的结果为最终结果。*/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);}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。