侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

微信支付之JSAPI公众号支付详解

微信(小程序)  /  管理员 发布于 7年前   362

前提

本教程默认以下几点你已经完全满足:

  1. 开通了认证后的服务号
  2. 服务号开通的微信支付的认证
  3. 腾讯给你的邮件中有商户登录的账号和密码
  4. 拥有一个可供上传代码和设置回调域名的网站或云服务
  5. 有一点点php知识。

开通了认证后的服务号服务号开通的微信支付的认证腾讯给你的邮件中有商户登录的账号和密码拥有一个可供上传代码和设置回调域名的网站或云服务有一点点php知识。

第一步:公众号设置

1、 你的公众号,在支付认证的标签下, 内容应该和下图类似。证明公众号已经完成了认证和合约的签署。

2、 然后在微信支付C开发配置中,设置测试授权目录和测试白名单

3、 在公众号设置-功能设置标签中,设置JS接口安全域名,这个域名在认证获取token的过程中可能会用到。但具体如何使用目前我也不是特别的清楚,只是按照大家的思路配置完事。

第二步:下载,调试SDK

1、 进入下载页面,选择要下载的SDK类型,这里我们选择的是PHP类型

2、 下载完成之后,使用IDE将SDK打开,其文件目录应如下所示:

3、 将这个sdk整体打包上传到你的服务器上,或是云服务平台。将网址发送到微信客户端,打开应该能看到如下界面

4、 点击JSAPI支付

5、 点击立即支付

6、 交易成功返回页面。

第三步:修改代码,访问自己的商户

1、 index.php.将第一个列表中的a标签中具体的网址,转为你自己的网址,这样你的配置才能生效。
注:这一步一定要注意,很多教程都没说,结果我改来改去都是访问腾讯的测试页面。

2、 然后在jsapi.php找到如下的代码:

//①、获取用户openid$tools = new JsApiPay();$openId = $tools->GetOpenid();

3、 进入GetOpenid()函数

public function GetOpenid()  {    //通过code获得openid    if (!isset($_GET['code'])){      //触发微信返回code码      $baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING']);      $url = $this->__CreateOauthUrlForCode($baseUrl);      Header("Location: $url");      exit();    } else {      //获取code码,以获取openid      $code = $_GET['code'];      $openid = $this->getOpenidFromMp($code);      return $openid;    }  }

大概说一下代码功能:

通过baseUrl 获取基础网址通过url 拼装获取code的url然后通过header函数进行跳转。

4、 进入lib/WxPay.Config.php文件,根据说明修改以下几个内容

//=======【基本信息设置】=====================================  //  /**   * TODO: 修改这里配置为您自己申请的商户信息   * 微信公众号信息配置   *    * APPID:绑定支付的APPID(必须配置,开户邮件中可查看)   *    * MCHID:商户号(必须配置,开户邮件中可查看)   *    * KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置)   * 设置地址:https://pay.weixin.qq.com/index.php/account/api_cert   *    * APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置),   * 获取地址:https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=2005451881&lang=zh_CN   * @var string   */  const APPID = '你的appid'; //demo:wx426b3015555a46be  const MCHID = '邮件中的商户号';//demo:1225312702  const KEY = '这个是你在商户管理平台-API安全中自行设置的32位字符串';//demo:e10adc3949ba59abbe56e057f20f883e  const APPSECRET = '你的app密钥';//demo:01c6d59a3f9024db6336662ac95c8e74  //=======【证书路径设置】=====================================  /**   * TODO:设置商户证书路径   * 证书路径,注意应该填写绝对路径(仅退款、撤销订单时需要,可登录商户平台下载,   * API证书下载地址:https://pay.weixin.qq.com/index.php/account/api_cert,下载之前需要安装商户操作证书)   * @var path   */  const SSLCERT_PATH = '../cert/apiclient_cert.pem';  const SSLKEY_PATH = '../cert/apiclient_key.pem';

5、 设置Key

6、 配置完成后,基本上也就能够如同SDK例子一样的使用公众号支付功能了。

支付完成后,在商户管理平台应该能查到类似下面的流水信息

如果有问题

如果你点击JSAPI支付,出现log.php的访问权限问题

permission denied in example/log.php

解决方案如下:

1、 进入jsapi.php文件

2、 找到下面的代码

require_once 'log.php';//初始化日志$logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log');$log = Log::Init($logHandler, 15);

3、 将这三句话注释掉就行了。

//require_once 'log.php';//初始化日志//$logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log');//$log = Log::Init($logHandler, 15);

这样应该就可以用了。

4、 界面应该和下面的一样,其中金额上面,应该显示你注册的商户平台录入的商户名称。

jsapi无法使用你不是公众号平台关注用户

1、 返回查看你设置的测试白名单中加入的微信号,和你测试用的微信号是否一致,不一致请设置一致

2、 微信平台bug,你将白名单中的微信号删除,然后重新添加一遍就可以了

jsapi报错

1、 检查下面的内容,是否与你当前的公众号和商户号配置是一致的。

 /**   * TODO: 修改这里配置为您自己申请的商户信息   * 微信公众号信息配置   *    * APPID:绑定支付的APPID(必须配置,开户邮件中可查看)   *    * MCHID:商户号(必须配置,开户邮件中可查看)   *    * KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置)   * 设置地址:https://pay.weixin.qq.com/index.php/account/api_cert   *    * APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置),   * 获取地址:https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=2005451881&lang=zh_CN   * @var string   */  const APPID = 'demo:wx426b3015555a46be';  const MCHID = '1225312702';  const KEY = 'e10adc3949ba59abbe56e057f20f883e';  const APPSECRET = '01c6d59a3f9024db6336662ac95c8e74';

#cer商户证书

该证书需要上传到example目录统一目录下的cer文件中,登录商户平台,下载后,覆盖该文件夹即可

注意

测试授权目录,和你的服务器地址,一级域名必须是一致的。否则无法通过支付验证。

以上所述是小编给大家介绍的JSAPI公众号支付的方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!

您可能感兴趣的文章:

  • ThinkPHP框架整合微信支付之JSAPI模式图文详解
  • 微信支付jsapi缺少参数 total_fee 错误分析与解决方法
  • ThinkPHP实现微信支付(jsapi支付)流程教程详解
  • PHP实现微信支付(jsapi支付)和退款(无需集成支付SDK)流程教程详解
  • PHP实现微信支付(jsapi支付)流程步骤详解
  • 微信支付java版本之JSAPI支付+发送模板消息
  • Java通过JsApi方式实现微信支付


  • 上一条:
    PHP文件上传小程序 适合初学者学习!
    下一条:
    PHP实现网站应用微信登录功能详解
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 微信模板消息改版后发送规则记录(微信订阅消息参数值内容限制说明)(1个评论)
    • 微信支付v3对接所需工具及命令(0个评论)
    • 2023年9月1日起:微信小程序必须备案才能上线运营(0个评论)
    • 腾讯官方客服回应了:微信好友上限约10000个!(1个评论)
    • 2023年做微信小程序的老铁注意:新增收费项、微信小程序获取手机号也收费了(2个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2017-10
    • 2018-01
    • 2020-03
    • 2021-06
    • 2021-10
    • 2022-03
    • 2023-02
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客