真是无力吐槽这个需求了,好端端的非要在微信公众号接入支付宝,都知道微信公众号是拒绝支付宝的,屏蔽了支付宝,所以在微信公众号接入支付宝的话就必须手动复制链接跳出微信内置浏览器,强制性打开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而已,不喜勿喷。

本文属原创内容,为了尊重他人劳动,转载请注明本文地址:

内容来源于网络如有侵权请私信删除

php怎么接入微支付宝支付,php 微信公众号接入支付宝支付相关推荐

  1. PHP 支付PC端扫码支付、APP接口调起支付宝支付、微信公众号接入支付宝支付

    第一:第三方支付原理 第二:支付接口申请流程 地址:https://docs.open.alipay.com/270/105899/ : 参考地址:https://blog.csdn.net/nove ...

  2. php接入微信支付宝支付,php 微信公众号接入支付宝支付

    首先登录支付宝开发者平台申请接入了,如下图: 创建应用查看,添加APP支付功能,需要签约上线,如图: 本人主要用到了demo_get.htm和pay.htm,加上ap.js来实现的,pdf仅做参考,可 ...

  3. php 微信公众号接入支付宝支付

    真是无力吐槽这个需求了,好端端的非要在微信公众号接入支付宝,都知道微信公众号是拒绝支付宝的,屏蔽了支付宝,所以在微信公众号接入支付宝的话就必须手动复制链接跳出微信内置浏览器,强制性打开web浏览器完成 ...

  4. php 工商银行开放平台聚合支付(微信公众号,支付宝生活号)对接避坑指南

    前言 因为好多银行的支付SDK实例都是java的比较多,所以银行的支付用PHP比较难做,尤其是工商银行的支付更加是步步是坑.头一次对接工商银行,弄了好久,终于成功.这篇博客只是我做工行的聚合支付时,遇 ...

  5. 微信公众号接入H5支付

    一.概述 1.H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付.主要用于触屏版的手机浏览器请求微信支付的场景.可以方便的 ...

  6. 微信公众号:支付宝支付

    微信公众号:支付宝支付 微信公众号:支付宝支付 由于支付宝月微信是两个对立的企业,支付宝想介入微信的充值,微信发现就将其规避,在支付宝与微信博弈的过程中,双方一直是处于你争我赶的地步. 微信公众号接入 ...

  7. 微信,支付宝支付,微信公众号小程序授权等

    微信,支付宝支付,微信公众号小程序授权等 前言 微信支付 微信授权 maven依赖(更新) 前言 最近在公司也做了很多移动端项目,如今微信公众号,小程序又特别火爆,免不了要接触支付,授权这类的业务需求 ...

  8. 微信支付、微信公众号接口认证方案

    1 微信公众号接口认证方案 1.1 认证流程 安全API接口认证方案 流程图模板_ProcessOn思维导图.流程图​www.processon.com/view/link/636e05a21e085 ...

  9. php 微信支付闪了一下,php,_微信公众号JS API支付,安卓没有效果(会闪一下就消失了),php - phpStudy...

    微信公众号JS API支付,安卓没有效果(会闪一下就消失了) 代码如下,ios可以支付,但是到安卓手机上就会出现微信支付读条(那三个点),然后就消失了,没有跳出输入密码支付的界面.... //调用微信 ...

  10. HTML5微信支付和微信公众号内微信支付(VUE)

    实现html5微信支付以及微信公众号内微信支付 微信公众号内微信支付 首先进行微信授权获取code /*获取授权拿到code*/getCodeApi(state){//获取codelet urlNow ...

最新文章

  1. 2019计算机科学论文研讨大会,2019年中华口腔医学会口腔医学计算机专业委员会第十七次全国口腔医学数字化学术会议第一轮会议通知...
  2. 这个 GitHub Trending 让我在腾讯会议中“换脸成”任何人!来唠唠如何上手
  3. BCH或将在年底超越ETH
  4. 超简单的MySQL菜鸟安装教程
  5. CF594D. REQ
  6. python控制台执行代码字符串_编写Python脚本以使用控制台命令执行
  7. [css] 用css实现一个等腰三角形的小图标
  8. centos7下载安装mysql步骤_Linux-centos7安装mysql步骤
  9. python manage.py syncdb Unknown command: 'syncdb'问题解决方法
  10. 从零开始学PowerShell(7)编写一个函数体
  11. crm采用soap删除记录
  12. 使用NGINX Plus API动态配置upstream
  13. Python获取每个用户使用的CPU和内存百分比
  14. C# 如何处理抛出的异常,或者已知的错误
  15. [HAOI2007] 修筑绿化带
  16. 想做数字孪生项目?这款数据可视化软件值得你了解
  17. NXP LPC芯片程序下载
  18. 猿创征文|人工智能啾养成之路 - 写代码三天,CSDN治好了我的精神内耗
  19. PowerVR 6系列架构分析
  20. 浅议极大似然估计(MLE)背后的思想原理

热门文章

  1. 多个excel工作簿合并_无需VBA代码,1分钟合并多个工作簿至一个工作簿!
  2. word小技巧 将图片批量居中
  3. 早年的一篇关于80286保护模式的文章
  4. 在虚拟机中安装Neokylin操作系统
  5. 油猴插件安装以及好用的脚本推荐 包含电脑版本和手机版本
  6. Beagleboard-xM Rev B 开发板探索 0.1
  7. js验证开始时间和结束时间 结束时间不能比开始时间早
  8. wordpress插件_哪个是最好的WordPress画廊插件? (性能比较)
  9. 我的第一本社会心理学(part2)--社会心理学的理论与方法
  10. 音视频剪辑 DIY:用 Python 快速入门音视频剪辑