微信内使用支付宝支付

1.支付宝手机网站支付部分代码:
需要注意的是AlipayTradeService.php的aopclientRequestExecute()方法需要修改
在这里插入图片描述

        if (!empty($oid)&& trim($oid)!=""){
            //商户订单号,商户网站订单系统中唯一订单号,必填
            $out_trade_no = $oid;

            //订单名称,必填
            $subject = "好多羊牧场充值";

            //付款金额,必填
            $total_amount = $orderInfo['money'];

            //商品描述,可空
            $body = '';

            //超时时间
            $timeout_express="1m";
           
            $payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
            $payRequestBuilder->setBody($body);
            $payRequestBuilder->setSubject($subject);
            $payRequestBuilder->setOutTradeNo($out_trade_no);
            $payRequestBuilder->setTotalAmount($total_amount);
            $payRequestBuilder->setTimeExpress($timeout_express);

            $payResponse = new \AlipayTradeService($config);

            $result=$payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);

            return array("result"=>$result,"oid"=>$oid,"money"=>$money);

           // return ;
        }

2.服务器端代码:

        //跳转充值页面
        if ($re) {
            switch ($type) {
                case '1':
                    $_SESSION['wxpaysid'] = 0;
                    $_SESSION['wxpayopenid'] = $_SESSION['WAP']['vip']['openid'];//追入会员openid
                    $this->redirect('Home/Wxpaycz/pay', array('price' => $money, 'oid' => $data_log['opid']));
                    break;

                case '2'://支付宝支付

                    $_SESSION['wxpaysid'] = 0;
                    $_SESSION['wxpayopenid'] = $_SESSION['WAP']['vip']['openid'];//追入会员openid

                    $Alipay =A("Alipay");

                    $info = $Alipay->alipay($data_log['opid'],$money);//这里传参 oid   money
                    
                    $this->ajaxReturn($info);//主要是把上面的result返回给前台

                    break;
                default:
                    $this->error('支付方式未知!');
                    break;
            }
        } else {
            $this->error('出错啦!');
        }

前端代码:

else if(zxtype == 2){//支付宝支付
				    $("#surebtn").addClass("J-btn-submit btn mj-submit btn-strong btn-larger btn-block");

				   $.ajax({
					   type:'get',
					   url:"{:U('App/Vip/zxczSet')}",
					   dataType:'json',
					   data:{
					       type:zxtype,
						   money:money,
					   },
					   success:function (re) {
							if(re){

							    var datas  = re.result;//result是支付宝支付接口返回form表单
                                $("#paywindow").append(datas.split('</form>')[0]);//获取form表单
                                var queryParam = '';
                                //开始拼接参数
                                Array.prototype.slice.call(document.querySelectorAll("input[type=hidden]")).forEach(function (ele) {
                                    queryParam += ele.name + "=" + encodeURIComponent(ele.value) + '&';
                                });
                                var gotoUrl = document.querySelector("#alipaysubmit").getAttribute('action')+'&'+queryParam;
                                //gotourl  为:https://openapi.alipaydev.com/gateway.do?charset=UTF-8&=2&biz_content=%7B%…%2Fe4NdLEHxmoAJNdDoL5t0BnMlueFH2pSIhY1GyFFEK%2Frb%2FM1VTgG%2BzGXj8g%3D%3D&
								//调用ap.js方法
                                _AP.pay(gotoUrl);

							}
                       }
				   });

				} 

微信公众平台无法使用支付宝收付款的解决方案下载demo;
demo文件为:
在这里插入图片描述
在支付页面的支付按钮引入ap.js,点击支付的时候会跳转到ap.js文件中的location.href的路径中,并且传一个goto的参数,ap.js的href路径需要更改为自己项目控制器的方法的路径
在这里插入图片描述
在Vip控制器编写pay方法:

    public function pay()
    {
        $goto = I("get.goto");
        $this->assign("goto",$goto);
        $this->display();
    }

将上面demo文件中的pay.htm复制为这个方法的模板(注意这个文件的ap.js的文件路径)
在这里插入图片描述
点击支付后如图所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值