thinkphp3.2整合银联手机网页支付
2015-12-27 15:35
621 查看
1.和银联签约,签约成功之后才进行技术集成,到银联官方下载手机网页支付的技术文档和demo代码;
https://open.unionpay.com/ajweb/help/file/techFile?productId=66
demo里面有个readme.txt会告诉你要修改哪些东西
2.同样,如果遇到和支付宝一样的验签失败,原因很可能就是证书有问题,还有,测试环境手机网页打开之后会老是提示证书不受信任,转生产之后就不会,建议一开始就用生成环境,怎么转可以参考https://open.unionpay.com/ajweb/help/faq/list?id=39&level=0&from=0
3.测试可以完成支付,就可以直接把代码库
移植到thinkphp的以下文件路径中
4.当然还需要把需要用到的证书copy的工程中,配置文件中需要改变一下证书的路径,都是绝对路径来的。
5.直接引入php文件就可以进行支付了。
写了一个集成的demo,改修改的东西,在README.md中有简单介绍。
下载链接http://download.csdn.net/detail/zhengxiaojunkite/9379301
https://open.unionpay.com/ajweb/help/file/techFile?productId=66
demo里面有个readme.txt会告诉你要修改哪些东西
2.同样,如果遇到和支付宝一样的验签失败,原因很可能就是证书有问题,还有,测试环境手机网页打开之后会老是提示证书不受信任,转生产之后就不会,建议一开始就用生成环境,怎么转可以参考https://open.unionpay.com/ajweb/help/faq/list?id=39&level=0&from=0
3.测试可以完成支付,就可以直接把代码库
移植到thinkphp的以下文件路径中
4.当然还需要把需要用到的证书copy的工程中,配置文件中需要改变一下证书的路径,都是绝对路径来的。
5.直接引入php文件就可以进行支付了。
<?php namespace Mobile\Action; class UnionPayAction extends BaseAction{ public function doPay(){ vendor('UnionPayMobile.common'); vendor('UnionPayMobile.SDKConfig'); vendor('UnionPayMobile.secureUtil'); vendor('UnionPayMobile.PhpLog'); $log = new \PhpLog( SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL ); $log->LogInfo ( "============处理前台请求开始===============" ); //获取商户订单的信息,填写信息提交到支付宝订单 $data = M('orders')->where('order_id='.session('orderID'))->find(); $sum = $data['order_sum_all']*100; // 初始化日志 $params = array( 'version' => '5.0.0', //版本号 'encoding' => 'utf-8', //编码方式 'certId' => getSignCertId (), //证书ID 'txnType' => '01', //交易类型 'txnSubType' => '01', //交易子类 'bizType' => '000201', //业务类型 'frontUrl' => SDK_FRONT_NOTIFY_URL, //前台通知地址 'backUrl' => SDK_BACK_NOTIFY_URL, //后台通知地址 'signMethod' => '01', //签名方法 'channelType' => '08', //渠道类型,07-PC,08-手机 'accessType' => '0', //接入类型 'merId' => '', //商户代码,请改自己的商户号 'orderId' => $data['order_num'], //商户订单号 'txnTime' => date('YmdHis'), //订单发送时间 'txnAmt' => $sum, //交易金额,单位分 'currencyCode' => '156', //交易币种 'defaultPayType' => '0001', //默认支付方式 //'orderDesc' => '订单描述', //订单描述,网关支付和wap支付暂时不起作用 'reqReserved' =>' 透传信息', //请求方保留域,透传字段,查询、通知、对账文件中均会原样出现 ); // 签名 sign ( $params ); // 前台请求地址 $front_uri = SDK_FRONT_TRANS_URL; $log->LogInfo ( "前台请求地址为>" . $front_uri ); // 构造 自动提交的表单 $html_form = create_html ( $params, $front_uri ); $log->LogInfo ( "-------前台交易自动提交表单>--begin----" ); $log->LogInfo ( $html_form ); $log->LogInfo ( "-------前台交易自动提交表单>--end-------" ); $log->LogInfo ( "============处理前台请求 结束===========" ); echo $html_form; } /****************************** 服务器同步通知页面方法 其实这里就是将notify_url.php文件中的代码复制过来进行处理 *******************************/ function createNote(){ vendor('UnionPayMobile.common'); vendor('UnionPayMobile.SDKConfig'); vendor('UnionPayMobile.secureUtil'); vendor('UnionPayMobile.PhpLog'); $log = new \PhpLog( SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL ); if (isset ( $_POST ['signature'] )) { if(verify ( $_POST )){ //改变订单状态,处理后台的订单逻辑 } } else { echo '签名为空'; } } /****************************** 服务器异步通知页面方法 其实这里就是将notify_url.php文件中的代码复制过来进行处理 *******************************/ function sureNote(){ vendor('UnionPayMobile.common'); vendor('UnionPayMobile.SDKConfig'); vendor('UnionPayMobile.secureUtil'); vendor('UnionPayMobile.PhpLog'); $log = new \PhpLog( SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL ); foreach ( $_POST as $key => $val ) { P(isset($mpi_arr[$key]) ?$mpi_arr[$key] : $key); P($val); } if (isset ( $_POST ['signature'] )) { P(verify ( $_POST ) ? '验签成功' : '验签失败'); P($orderId = $_POST ['orderId']); //其他字段也可用类似方式获取 //改变订单状态,处理后台的订单逻辑 } else { echo '签名为空'; } } } ?>
写了一个集成的demo,改修改的东西,在README.md中有简单介绍。
下载链接http://download.csdn.net/detail/zhengxiaojunkite/9379301
相关文章推荐
- thinkphp 跨模块调用
- php基本语法
- LNMP 1.1 php编译安装
- thinkphp3.2整合支付宝手机网页支付
- ThinkPHP 自动验证及验证规则详解
- thinkphp3.2实现微信JSAPI支付
- 第四篇 PHP的成长路线
- PHP的json_encode中文被转码的问题
- php学习日记第十一棒(计算器案例)
- php使用odbc执行复杂函数遇到的问题,sql语句直接在sqlserver数据库中运行有结果,使用php总是为空
- php中遍历二维数组的几种方法详解
- PHP环境配置小细节
- php--某个字符在字符串中的位置比较
- PHP字符编码问题-总结
- ThinkPHP 模块与操作
- PHP Cookie实战教程
- php学习日记第十棒(switch 语句)
- 安卓端上传图片到服务器php接收
- php随笔(一)
- php随笔(一)