php 微信公众号接入支付宝支付
都知道微信公众号是拒绝支付宝的,屏蔽了支付宝,所以在微信公众号接入支付宝的话就必须手动复制链接跳出微信内置浏览器,强制性打开web浏览器完成支付,这是很坑的,只能选择千百度各种查找答案啊,发现没有一个php做的 更别说用TP框架了,之前做APP支付宝支付,PC扫码支付都是一天完成的,这个公众号支付烦死了,下面具体分享一下我用Thinkphp5.0做微信公众号接入支付宝的代码以及过程。
首先登录支付宝开发者平台申请接入,创建应用查看,添加APP支付功能,需要签约上线。
然后主要是解决微信公众号接入支付宝功能,这个可以参考支付宝开发文档/手机网站支付/快速接入/使用SDK快速接入这个文档里面微信公众平台无法使用支付宝收付款解决方案所述来实现,基于这个的。里面有demo,我就是下载的这个来实现的。
还有一个demo也要下载,点击这里查看,需要调用支付宝接口,如下图:
下载微信公众号接入支付宝参考demo后解压可以看到有五个文件,如图:
主要用到了demo_get.htm和pay.htm,加上ap.js来实现的,pdf仅做参考,可以看一下(重点来了)。
首先走流程到选择支付页面:
这里选择支付宝,点击支付post传递订单信息调用pay_order方法:
public function pay_order(){ $res = new OrderGoods(); //获取订单号 $where['id'] = input('post.order_sn'); $reoderSn = input('post.order_sn'); //查询订单信息 $order_info = $res->where($where)->find(); //获取支付方式 $pay_type = input('post.pay_type');//微信支付 或者支付宝支付 //获取支付金额 $money = input('post.totle_sum'); $order_id = input('post.order_id'); //判断支付方式 switch ($pay_type) { case 'ali';//如果支付方式为支付宝支付 $this->redirect('index.php/mobile/Alipay/alipay',['$reoderSn'=>$order_id]); break; case 'wx'; //更新支付方式为微信 $this->redirect('index.php/mobile/Wxpay/js_api_call',['order_id'=>$order_id]); break; } }
这里选择支付宝支付,我在这里进行了重定向,GET一个参数订单ID。
到Alipay控制器然后就开始接入支付宝,用刚才下载的demo:
这个是demo大致目录
主要用到的里面的pay.php(在demo中配置config文件,引入)。
public function alipay($reoderSn=null,$status=null){ vendor('alipaywx.config'); vendor('alipaywx.wappay.service.AlipayTradeService'); vendor('alipaywx.wappay.buildermodel.AlipayTradeWapPayContentBuilder'); //商户订单号,商户网站订单系统中唯一订单号,必填 $out_trade_no = $_POST['WIDout_trade_no']; //订单名称,必填 $subject = $_POST['WIDsubject']; //付款金额,必填 $total_amount = $_POST['WIDtotal_amount']; //商品描述,可空 $body = $_POST['WIDbody']; //超时时间 $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; }
然后进行支付发现是这样的页面:
这样对用户体验是非常不友好的,只能选择复制链接然后在浏览器打开进行支付,要解决这个问题,百度查看了好多解决办法,都没行得通,最后就用了官方文档提供的demo,所以我在代码里做了修改:
public function alipay($reoderSn=null,$status=null){ vardor('alipaywx.config'); vendor('alipaywx.wappay.service.AlipayTradeService'); vendor('alipaywx.wappay.buildermodel.AlipayTradeWapPayContentBuilder'); //商户订单号,商户网站订单系统中唯一订单号,必填 $out_trade_no = $_POST['WIDout_trade_no']; //订单名称,必填 $subject = $_POST['WIDsubject']; //付款金额,必填 $total_amount = $_POST['WIDtotal_amount']; //商品描述,可空 $body = $_POST['WIDbody']; //超时时间 $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']); $this->assign('result',$result); $this->assign('order_sn',$order_sn); $this->assign('total_amount',$total_amount); $this->view->engine->layout(false); return view('Pay/payInfo'); }
调用支付宝接口拿到拼接的链接之后赋值到模板中了(注意!调用支付宝接口的时候相关类中构造请求路径或参数的时候有两种方式,GET和POST,post是form表单,这里选择GET方式拿到构造的URL!),然后进入到刚才demo里的demo_get.html页面,部分代码截图:
把demo里面a标签中href中的demo链接替换成调用支付宝得到的请求链接,引入ap.js。点击确认支付的时候会执行下面的js代码中_AP.pay代码调用ap.js中的pay的location.href路径,同时会get传递一个参数goto:
此时传递参数跳入另外一个html就是pay.html了,在控制器中接受到这个参数赋值到模板中去:
public function pay($goto=null){ // echo $goto;exit; $this->assign('goto',$goto); $this->view->engine->layout(false); return view(); }
把上个页面_AP.pay传递的参数goto接收到然后赋值到pay视图里面了,pay视图里面我直接吧demo里面pay.html的代码拿了过来,把里面的一些数据替换掉了,替换之前部分截图:
把数据替换后部分截图:
一定要引入ap.js,不然是不会成功的,现在在去支付一次,显示如下:
浏览器打开后页面显示如下:
以上只是给一个大致的参考,毕竟方法千千万,实现这个功能的方法很多,希望以上步骤能给也遇到这种情况的码友们一个新的思路,以上代码什么的写的乱,只是demo而已,不喜勿喷。
-
批量提取word文档标题
import os import sys from collections import defaultdict from docx import Document from PyQt5.QtWidgets import (QApplication, QMai... 1039 0 25-04-08 -
免费动态图片下载
giphy是国外知名动态图片素材网站,类别相对比较齐全,包括动物、动作、食物、情绪等18项分类,仅支持英文检索。点进动图详情页还有该动图的出处、详情介绍等信息,也可以直接拿来做表情包,唯一的缺点是,加载比较慢,这也是国外网站的通病。 394 0 21-11-25 -
2025年文运法硕全程班考研资料
2025文运法硕《背诵逻辑》(刑法).pdf2025文运法硕《背诵逻辑》(宪法学).pdf2025文运法硕《背诵逻辑》(民法).pdf2025文运法硕《背诵逻... 979 0 24-08-19 -
免费在线视频网站,电视剧,电影,综艺,动漫,纪录片
影猫の仓库网站地址:影猫の仓库2.追影猫网站地址:追影猫3.茶杯虎网站地址:茶杯虎4.影搜.com网站地址:影搜.com 1764 0 24-08-08 -
25年腿姐考研政治全程资料
01.25腿姐马原强化1.pdf.pdf02.25腿姐马原强化2.pdf.pdf03.25腿姐马原强化3.pdf.pdf04.25腿姐强化马原4.pdf05.25腿姐马原强化5.pdf.pdf06.2... 1204 0 24-08-18 -
8种技巧让你远离羞怯
从心理学角度看,羞怯起因于许多事情,但无论是先天的羞怯还是后天的,都可以通过一些行为技巧去克服。下面,博华总结了8种技巧让你从此时... 815 0 25-03-03 -
微商工具箱 - 专门为微商从业者的研发打造的工具app
微商工具箱免费版是一个专门为微商从业者的研发打造的工具app,它为我们带来了很多微商工具,提供了无打扰检测非好友、添加好友、转发朋友... 1338 0 24-12-18 -
科普知识媒体 - 微科普
微科普是一个综合科普网站,提供科学、教育、科技等领域的科普内容,包括科普热点、科普综述、科普教育、校园科普、科普漫画等栏目。微科普... 887 0 25-01-09
发表我的评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~