1.首先,我们要有一个微信公众号(分类类型有订阅号,服务号,企业号)我们的微信公众号一定是个服务号只有它才有微信支付接口.。

并且这个微信公众号一定要进行微信认证才能申请微信支付接口。

2.申请JSAPI产品

3.,申请成功后还要到微信公众号中功能设置处进行配置

业务域名和js接口安全域名和网页授权域名填写都是你做微信支付功能的网站域名要是可以访问的域名

4.进入你获取微信支付的微信商户号。产品中心->开发配置进行产品配置

填写你调起微信公众号支付的网站地址 如https://www.baidu.com/方法名/参数值即可

5.这样基本支付环境已经搭建好了 当然微信开发文档上基本有了可以参照进昂环境搭建,可以进行开发。

步骤是:1.开发JSAPI支付时,必须在调用统一下单接口中获取到用户的openid并且缓存下来(不用每次都要获取了)

public function pay(){
vendor('pay.WxPayData');
vendor('pay.JsApiPay');
vendor('pay.WxPayApi');
vendor('pay.WxPayConfig');
vendor('pay.WxPayNotify');
$orderModel = M('weiz_order');
//①、获取用户openid
try{
$tools = new \JsApiPay();
$openId = $tools->GetOpenid();
if(empty($openId)&&$openId ==""){
if(session('expire_time')>time()){
$openId = session('openId');
}
}else{
session('openId',$openId);
session('expire_time',time()+300);//300秒过期时间
}

2.调用微信支付的统一下单接口

/②、统一下单
$input = new \WxPayUnifiedOrder();
$input->SetBody($body);//body商品描述
$input->SetAttach("附加数据");//attahch附加数据暂时不用附加数据
$input->SetOut_trade_no($out_trade_no);//out_trade_no商户订单号
$input->SetTotal_fee($total_fee);//订单总金额
$input->SetTime_start(date("YmdHis",time()));//交易开始时间
$input->SetTime_expire(date("YmdHis", time() + 600));//交易结束时间prepay_id只有两小时的有效期
$input->SetGoods_tag("无");//订单优惠标记暂时无
$input->SetNotify_url("http://event.com/index.php/Weixinpay/NotifyProcess");//异步回调地址不能携带参数
$input->SetTrade_type("JSAPI");//交易类型JSAPI
$input->SetOpenid($openId);//通过code来获取用户标识openID
$config = new \WxPayConfig();//获取商户配置
$order = \WxPayApi::unifiedOrder($config, $input);
//统一下单接口返回的预支付交易会话标识
$jsApiParameters = $tools->GetJsApiParameters($order);//获取jsapi支付的参数(json格式)

3.将获取到的预支付交易会话标识$jsApiParameters 分配给客户端 只有这个标识才能调起微信支付(所以这个参数很重要如果为空则支付失败)

4.前台拿到预支付交易会话标识后进行调起微信支付 其实按照JSAPI字面意思就是通过客户端的JS来调用支付API

$(function(){

            function onBridgeReady(){
// alert(JSON.stringify(jsapi));
WeixinJSBridge.invoke(
'getBrandWCPayRequest',{$jsApiParameters},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ){
// 使用以上方式判断前端返回,微信团队郑重提示:
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
var authToken = $('.authToken').val();
}else if (res.err_msg == "get_brand_wcpay_request:cancel"){
$('.pay-fail-content').css('display','block');
$(".tip").fadeIn();
setInterval(function(){
$('.tip').fadeOut(5000);
},3000);//延迟3s执行tip谈出
}else{
//处理支付失败的逻辑
var wid = $('.wid').val();
}
});
}

5.当然微信支付提供了多个接口如查询订单,退款等不同的接口看项目需求。这里异步通知和同步通知就不写在这了 自己可以百度和查看微信开发文档

6.JSAPI支付功能常见错误是

  a.微信公众号配置错误

b,微信商户号产品配置错误(支付授权目录)

c.统一下单接口请求参数要确保和微信开发平台一致

d.后台与客户端的预支付交易标识参数的传递出现了问题

最后建议 测试工具使用微信开发工具进行测试 虽然其没有权限调起微信这支付但能查出你的问题所在

谢谢!

网站如何接入微信公众号JSAPI支付PHP版的更多相关文章

  1. 微信公众号JSAPI支付

    微信公众号JSAPI支付 一:配置参数 申请成功后,获取接口文件, 将所有文件放入项目根目录weixin下,在WxPay.ub.config.php中填入配置账户信息; 二:设置授权 开发者中心-&g ...

  2. 在Thinkphp中微信公众号JsApi支付

    由于网站使用的微信Native扫码支付,现在公众号需要接入功能,怎么办呢,看这官方文档,参考着demo进行写吧.直接进入正题 进入公众号(服务号)设置--->功能设置--->网页授权域名配 ...

  3. 微信公众号JSAPI支付-多公众号向同一商户号支付的问题解决

    一.背景 项目提供公众号商城集成,在公众号里进行商品的购买,并与多家公众号合作增加渠道流量. . 二.实现 有关微信公众号.商户号的开通与支付绑定不细说 从背景里可知,我们需要实现多个公众号购买向同一 ...

  4. java微信公众号JSAPI支付以及所遇到的坑

    上周做了个支付宝微信扫码支付,今天总结一下.微信相比支付宝要麻烦许多 由于涉及到代理商,没办法,让我写个详细的申请流程,懵逼啊. 笔记地址 http://note.youdao.com/notesha ...

  5. PHP应用如何对接微信公众号JSAPI支付

    微信支付的产品有很多,1. JSAPI支付  2. APP支付  3. Native支付  4.付款码支付  5. H5支付. 其中基于微信公众号开发的应用选择“JSAPI支付“产品,其他APP支付需 ...

  6. 【weixi】微信支付---微信公众号JSAPI支付

    一.JSAPI支付 JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付.应用场景有: ◆ 用户在微信公众账号内进入商家公众号,打 ...

  7. PHP微信公众号JSAPI网页支付(上)

    一.使用场景以及说明 使用场景:商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程. 说明:1.用户打开图文消息或者扫描二维码,在微信内置浏览器打开网 ...

  8. PHP微信公众号JSAPI网页支付(下)

    上一篇PHP微信公众号JSAPI网页支付(上)中讲到了公众号平台的相关设置以及支付的大致流程. 这一篇重点讲支付后,异步接受回调通知,以及处理后同步通知微信服务器. 首先梳理下整个jsapi支付的流程 ...

  9. 线程安全使用(四) [.NET] 简单接入微信公众号开发:实现自动回复 [C#]C#中字符串的操作 自行实现比dotcore/dotnet更方便更高性能的对象二进制序列化 自已动手做高性能消息队列 自行实现高性能MVC WebAPI 面试题随笔 字符串反转

    线程安全使用(四)   这是时隔多年第四篇,主要是因为身在东软受内网限制,好多文章就只好发到东软内部网站,懒的发到外面,现在一点点把在东软写的文章给转移出来. 这里主要讲解下CancellationT ...

随机推荐

  1. kubeadm进行K8S集群部署

    环境说明: 节点类型     主机名  管理ip master          master   192.168.2.10 nodes            node1    192.168.2.1 ...

  2. heartrbeat实现web服务器高可用

    今天的内容是用heartbeat实现web服务器高可用 一.简介: heartbeat的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行 ...

  3. HDU 4635 Strongly connected ——(强连通分量)

    好久没写tarjan了,写起来有点手生,还好1A了- -. 题意:给定一个有向图,问最多添加多少条边,让它依然不是强连通图. 分析:不妨考虑最大时候的临界状态(即再添加一条边就是强连通图的状态),假设 ...

  4. solr系列之solr-5.5.5 window单机版jdk-1.7 tomcat8安装

    一.Solr5.5.5.Tomcat8-x64.jdk-1.7-64单机部署 1.准备安装包,下载solr和tomcat的安装,直接解压即可(上篇一提供solr的下载路径) 2.在Solr5之前都还存 ...

  5. IntelliJ IDEA 2017 上传本地项目至码云

    码云免费还挺好用,和Git类似.首先需要注册一个码云.这个就不介绍了. 点击加号,新建一个项目. 填写项目名称.  复制一下你的项目地址.  如图勾选.将项目至于git管理. 首先commit.快捷按 ...

  6. 单调队列优化dp(捡垃圾的机器人)

    /************************************************************************* > File Name: a.cpp > ...

  7. Devops(一):CentOS7 安装Maven3.6.1详解

    https://yq.aliyun.com/topic/78?spm=5176.8290451.656547.7.rMYhAF https://yq.aliyun.com/activity/155?u ...

  8. koa 项目实战(九)passport验证token

    1.安装模块 npm install koa-passport -D npm install passport-jwt -D 2.解析token 根目录/config/passport.js cons ...

  9. CefGlue获取网页源代码

    1.编写一个CefStringVisitor类: public class MyStringVisitor : CefStringVisitor { private readonly TaskComp ...

  10. [转]Nginx实现高并发的原理

    Nginx 首先要明白,Nginx 采用的是多进程(单线程) & 多路IO复用模型.使用了 I/O 多路复用技术的 Nginx,就成了”并发事件驱动“的服务器. 异步非阻塞(AIO)的详解ht ...