|
js支付体验好,不需要跳转,直接在本页面内完成支付,但是微擎给的代码非常简单
首先需要配置支付信息,在这里不多说了,主要是微擎后台和商户里面,重点说开发.先说前端,对于我们没有加载微擎公共开头结尾,那就要自己加载一些必须的代码.
- <a href="javascript:void(0);" data-name="李白" class="weui_btn weui_btn_plain_primary weui_btn_inline">支付</a>
- <?php
- $wx = $_W['account']['jssdkconfig'];
- $wx['url'] ='http://'.$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ;
- ?>
- <script>
- window.sysinfo = {"uniacid":{php echo $this->weid},"acid":{$_W['acid']}};
- var appIdstr = "{$wx['appId']}";
- var timestampstr = "{$wx['timestamp']}";
- var nonceStrstr = "{$wx['nonceStr']}";
- var signaturestr = "{$wx['signature']}";
- wx.config({
- debug: false,
- appId: appIdstr,
- timestamp: timestampstr,
- nonceStr: nonceStrstr,
- signature: signaturestr,
- jsApiList: [
- 'checkJsApi',
- 'onMenuShareTimeline',
- 'onMenuShareAppMessage','showMenuItems','hideOptionMenu','chooseWXPay',
- ]
- });
- </script>
- <script type="text/javascript" src='http://res.wx.qq.com/open/js/jweixin-1.0.0.js'></script>
- <script src="{php echo $this->yobyurl}zepto.min.js"></script>
- <script type="text/javascript" src="{$_W['siteroot']}app/resource/js/lib/mui.min.js"></script>
- <script type="text/javascript" src="{$_W['siteroot']}app/resource/js/app/util.js"></script>
复制代码
- <script>
- $(function(){
- document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
- $('.weui_btn').click(function(){
- $.getJSON("{$ajaxurl}",{name:name}, function(data, status){
- //这里传递参数到生成订单
- if(status == 'success'){
-
- util.pay({
- orderFee : data.fee,
- payMethod : 'wechat',
- orderTitle : '微信支付金额' + data.fee + '元',
- orderTid : data.ordertid,
- module : 'yoby_test',
- success : function(result) {//支付成功
- $.alert('支付成功');
- //可不写
- },
- fail : function(result) {//支付失败
- $.alert('支付失败');
- },
- complete : function(result) {//无论成功失败
- //可不写
- }
- });
- }
- });
-
- });
- });
- });
- </script>
复制代码
js代码就上面这么多,当然实际开发中需要自己调整代码,接着需要在site.php里面重要两个方法,一个是生成订单,一个是成功支付后的业务处理.开发中是不能传递参数到支付后的,所以首先把需要参数保存到订单中,一般
- public function doMobilepay() {//生成订单 $ajaxurl就是指向这里的方法
- echo json_encode(array('fee'=>$n,'ordertid'=>$sn));//生成订单要返回一个json,一般包括金额和订单号即可,注意订单号需要唯一
- }
- public function payResult($params) {//支付成功处理,非常重要,你支付后业务处理要放到这里面
- if ($params['result'] == 'success' && $params['from'] == 'notify') {//里面放业务代码
- 需要注意,这里面$_W['openid']是获取不到的,用下面代码
- $uid = $params['tag']['uid'];
- $openid = $params['user'];
- $weid = $params['uniacid'];
- $tid=$params['tid'];//这就是生成的唯一订单号
- $fee = $params['fee'];//金额
- 然后到订单表查询这个订单的信息包括传递的参数
- }
- }
复制代码
到此支付开发就完成了,送一个生成订单函数
支付涉及钱的处理,所以要经过多重测试,可以用0.01元来测试,确认没问题再正式上线,有条件可以公测.开发中订单表至少包含金额,订单号,openid,weid以及传递的参数字段. |
|