网站如何接入微信公众号JSAPI支付PHP版
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版的更多相关文章
- 微信公众号JSAPI支付
微信公众号JSAPI支付 一:配置参数 申请成功后,获取接口文件, 将所有文件放入项目根目录weixin下,在WxPay.ub.config.php中填入配置账户信息; 二:设置授权 开发者中心-&g ...
- 在Thinkphp中微信公众号JsApi支付
由于网站使用的微信Native扫码支付,现在公众号需要接入功能,怎么办呢,看这官方文档,参考着demo进行写吧.直接进入正题 进入公众号(服务号)设置--->功能设置--->网页授权域名配 ...
- 微信公众号JSAPI支付-多公众号向同一商户号支付的问题解决
一.背景 项目提供公众号商城集成,在公众号里进行商品的购买,并与多家公众号合作增加渠道流量. . 二.实现 有关微信公众号.商户号的开通与支付绑定不细说 从背景里可知,我们需要实现多个公众号购买向同一 ...
- java微信公众号JSAPI支付以及所遇到的坑
上周做了个支付宝微信扫码支付,今天总结一下.微信相比支付宝要麻烦许多 由于涉及到代理商,没办法,让我写个详细的申请流程,懵逼啊. 笔记地址 http://note.youdao.com/notesha ...
- PHP应用如何对接微信公众号JSAPI支付
微信支付的产品有很多,1. JSAPI支付 2. APP支付 3. Native支付 4.付款码支付 5. H5支付. 其中基于微信公众号开发的应用选择“JSAPI支付“产品,其他APP支付需 ...
- 【weixi】微信支付---微信公众号JSAPI支付
一.JSAPI支付 JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付.应用场景有: ◆ 用户在微信公众账号内进入商家公众号,打 ...
- PHP微信公众号JSAPI网页支付(上)
一.使用场景以及说明 使用场景:商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程. 说明:1.用户打开图文消息或者扫描二维码,在微信内置浏览器打开网 ...
- PHP微信公众号JSAPI网页支付(下)
上一篇PHP微信公众号JSAPI网页支付(上)中讲到了公众号平台的相关设置以及支付的大致流程. 这一篇重点讲支付后,异步接受回调通知,以及处理后同步通知微信服务器. 首先梳理下整个jsapi支付的流程 ...
- 线程安全使用(四) [.NET] 简单接入微信公众号开发:实现自动回复 [C#]C#中字符串的操作 自行实现比dotcore/dotnet更方便更高性能的对象二进制序列化 自已动手做高性能消息队列 自行实现高性能MVC WebAPI 面试题随笔 字符串反转
线程安全使用(四) 这是时隔多年第四篇,主要是因为身在东软受内网限制,好多文章就只好发到东软内部网站,懒的发到外面,现在一点点把在东软写的文章给转移出来. 这里主要讲解下CancellationT ...
随机推荐
- JAVA的面向对象1
如何理解面向对象 我们说面向对象具有三大特征:封装性.继承性和多态性,那么我们怎么去理解所谓的封装.继承.多态? 1.封装:功能都给你做好了,你不必去理解它是怎么写出来的,直接使用即可. 如:房子.电 ...
- *p++=i怎么理解?
#include<stdio.h> void fibonacci(int *p,int n) { *p++=1; *p++=1; while(n>2) { *p++=*(p-1)+* ...
- XGBoost原理简介
XGBoost是GBDT的改进和重要实现,主要在于: 提出稀疏感知(sparsity-aware)算法. 加权分位数快速近似学习算法. 缓存访问模式,数据压缩和分片上的实现上的改进. 加入了Shrin ...
- curl_setopt(ch, option, value)函数上传文件
bool curl_setopt ( resource $ch , int $option , mixed $value ) 为给定的cURL会话句柄设置一个选项 详细介绍请到:http://www. ...
- Android 美团Robust热更新 使用入门
Android热更新方案Robust 相信很多人都认识了解过 热修复.热更新.热补丁(对于这个技术也没有特别标准的一种叫法,下面我统一叫热更新),之后的一年里,各种热更新方案如雨后春笋般出现,比较耳熟 ...
- leetcode84 柱状图
O(n^2) time 应用heights[r]<=heights[r+1]剪枝: class Solution { public: int largestRectangleArea(vecto ...
- ART模式
ART模式是Android RunTime的简称,自动对程序进行代码预读取编译,让程序直接编译成机器语言,免去了Dalvik模式要时时转换代码,实现高效率.省电.占用更低的系统内存.手机运行流畅.但凡 ...
- echarts.js导致angular-translate加载模块失败
echarts.js导致angular-translate加载模块失败,待解决
- Restful 风格
大家在做Web开发的过程中,method常用的值是get和post. 可事实上,method值还可以是put和delete等等其他值.既然method值如此丰富,那么就可以考虑使用同一个url,但是约 ...
- linux简单命令---网络编程
---------------------------------------------------------------------------------------------------- ...