PHP实现jsapi微信支付

首先微信支付需要配置以下信息:

  • 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
  • 商户证书
    API证书下载地址:https://pay.weixin.qq.com/index.php/account/api_cert,下载之前需要安装商户操作证书)

1.在微信官网下载微信支付SDK

下载地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1

解压后文件目录如下

2.把下载好的sdk放到我们的项目中

这里我放入到wxpay下面

3.修改example/WxPay.Config.php为自己申请的商户号的信息

如APPID,MCHID,KEY,APPSECRET,商户证书等

4.编写代码

<?php//首先引入需要用到的类
require 'wxpay/lib/WxPay.Api.php';
require 'wxpay/example/WxPay.JsApiPay.php';//JSAPI支付实现类
$jsapi = new JsApiPay();
//统一下单输入对象
$input = new WxPayUnifiedOrder();//把订单的相关信息传入方法中
$out_trade_no = time().rand(1111,9999);//订单号
$input->SetBody('微信支付');  //设置商品或支付单简要描述
$input->SetOut_trade_no($out_trade_no); //设置商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
$input->SetAttach('商品支付');//设置附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
$input->SetTotal_fee(1000);//设置订单总金额,只能为整数,详见支付金额  单位为分
$input->SetNotify_url('http://www.baidu.com');//设置接收微信支付异步通知回调地址
$input->SetTrade_type('JSAPI'); //支付方式 设置取值如下:JSAPI,NATIVE,APP,详细说明见参数规定//设置trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识。
//下单前需要调用【网页授权获取用户信息】接口获取到用户的Openid。
$input->SetOpenid('xxxxxxxx');$config = new WxPayConfig();
//统一下单
$order = WxPayApi::unifiedOrder($config,$input);
//获取jsapi支付的参数
$jsApiParameters = $jsapi->GetJsApiParameters($order);
var_dump($jsApiParameters);
//return json_encode($jsApiParameters);

到这里jsapi微信支付已基本完成 下面我们打印以下结果看看

{"appId":"xxxxxxxxx","nonceStr":"xxxxxxx","package":"prepay_id=wx05xxxxxx","signType":"HMACSHA256","timeStamp":"1636081768","paySign":"xxxxxxxxxxxx"
}

这就是我们jsapi微信支付请求的结果 我们只需把这个结果返回给前端,前端拿着这些参数去调起微信支付即可

5.前端调起微信支付

请求示例

function onBridgeReady() {WeixinJSBridge.invoke('getBrandWCPayRequest', {"appId": "wx2421b1c4370ec43b",     //公众号ID,由商户传入     "timeStamp": "1395712654",     //时间戳,自1970年以来的秒数     "nonceStr": "e61463f8efa94090b1f366cccfbbb444",      //随机串     "package": "prepay_id=up_wx21201855730335ac86f8c43d1889123400","signType": "RSA",     //微信签名方式:     "paySign": "oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\/X+QBhcCYL21N7cHCTUxbQ+EAt6Uy+lwSN22f5YZvI45MLko8Pfso0jm46v5hqcVwrk6uddkGuT+Cdvu4WBqDzaDjnNa5UK3GfE1Wfl2gHxIIY5lLdUgWFts17D4WuolLLkiFZV+JSHMvH7eaLdT9N5GBovBwu5yYKUR7skR8Fu+LozcSqQixnlEZUfyE55feLOQTUYzLmR9pNtPbPsu6WVhbNHMS3Ss2+AehHvz+n64GDmXxbX++IOBvm2olHu3PsOUGRwhudhVf7UcGcunXt8cqNjKNqZLhLw4jq\/xDg==" //微信签名 },function(res) {if (res.err_msg == "get_brand_wcpay_request:ok") {// 使用以上方式判断前端返回,微信团队郑重提示://res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。}});
}
if (typeof WeixinJSBridge == "undefined") {if (document.addEventListener) {document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);} else if (document.attachEvent) {document.attachEvent('WeixinJSBridgeReady', onBridgeReady);document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);}
} else {onBridgeReady();
}

到这里微信支付就全部完成了

PHP实现jsapi微信支付相关推荐

  1. JSAPI微信支付开发流程和坑

    首先,我先简要说明一下微信支付开发的流程 众所周知,工欲善其事,必先利其器,微信官方推出了web微信开发工具,有windows.linux.版本的,根据自己的开发环境选择合适自己的,登陆公众平台--& ...

  2. H5的jsapi微信支付:wx.chooseWXPay,ios手机在支付成功后不执行success中的回调函数

    对于iOS客户端支付成功后不进入chooseWXPay函数success的问题原因是:目前没有得到解答 临时解决方案: 支付成功后,安卓和iOS的返回都是{"errMsg":&qu ...

  3. 微信支付开发(只针对公众号里的h5支付JSAPI)

    微信支付后台: https://pay.weixin.qq.com 只有这里设置了,程序中才能使用这个key /*** 微信支付统一下单接口** @param userOrder 订单信息* @ret ...

  4. 微信小程序微信支付《JSAPI支付》APIV3详细教程

    文章目录 前提 整体介绍 我的maven依赖 1.整体流程 2.openid 的获取 3.统一下单Controller(预支付订单) 4.配置类和配置文件 5.工具类 6.前端接收到必要的参数,进行调 ...

  5. SpringBoot对接微信支付之JSAPI

    分享SpringBoot整合微信公众号支付项目,对接微信JSAPI支付类型遇到的问题和过程封装的工具类,目前已正常使用,有问题大家评论区互动哈,有需要源码的可以私信我. 1.创建SpringBoot项 ...

  6. Python3 微信支付(小程序支付)V3接口

    起因: 因公司项目需要网上充值功能,从而对接微信支付,目前也只对接了微信支付的小程序支付功能,在网上找到的都是对接微信支付V2版本接口,与我所对接的接口版本不一致,无法使用,特此记录下微信支付完成功能 ...

  7. springboot利用官方SDK(wechatpay-apache-httpclient)接入微信支付V3

    利用微信官方提供的SDK wechatpay-apache-httpclient 实现.以微信小程序支付为例,其他支付也是一样的,就是参数和接口地址不同. 微信支付V3文档 首先要在微信商户平台设置好 ...

  8. 微信小程序内嵌H5页面实现微信支付

    背景: 在微信H5页面已经实现了微信JSAPI的网页支付,老板要求把整个业务线快速转移到微信小程序中,作为懒惰的程序员来说,直接把页面嵌套到小程序不就行了.说干就干,在小程序中设置好基本信息后,一预览 ...

  9. ios调用微信支付提示当前页面的URL未注册

      ios调用JSAPI微信支付提示"当前页面的URL未注册",而页面手动刷新后再次支付则正常,安卓也正常,肯定不是授权目录配置问题.   在微信支付页面,当通过JSAPI微信支付 ...

  10. Django微信支付

    准备 安装 pip install weixin-python -i https://pypi.douban.com/simple GitHub官网-开发之前最好先看一下 https://github ...

最新文章

  1. 利用python中的gzip模块压缩和解压数据流和文件
  2. php7 出现Class 'DOMDocument' not found的解决方法
  3. sklearn特征的选择
  4. Linux静默安装oracle
  5. Debian耳机声音问题
  6. c++ doxygen 注释规范_利用Doxygen给C程序生成注释文档
  7. js网页顶部线性页面加载进度条,jquery头部线性进度条总结
  8. [转载] 使用异步 I/O 大大提高应用程序的性能
  9. 联想成立35周年,年收入着实惊人
  10. 谷歌开源 VR 应用
  11. Qt使用Qtxlsx读写xlsx文件
  12. Vue- Markdown 使用大全
  13. leetcode Course Schedule II
  14. webpack入坑之旅(一)入门安装
  15. 计算机操作基础知识培训,计算机基础操作技能培训知识要点
  16. LeetCode Golang 答案
  17. 智慧警务三维PGIS及一标三实采集、展示平台
  18. 通过XMind Update制作思维导图
  19. “前浪”微博财报里的悲喜两极
  20. Linux常用命令征集

热门文章

  1. Arcpy处理月NDVI,最大合成法合成年NDVI
  2. Java PCM音频变声
  3. Jshop小程序商城
  4. Java开源在线商城系统 ostocy-jshop
  5. vscode react 代码格式化
  6. 一个很不错的H5动画网站
  7. 日期插件(默认显示当前日期)---年月
  8. 三星平板显示无法连接网络连接服务器,三星p600平板电脑无法连接无线网络该怎么办?...
  9. 关于手机使用中信号强弱 网速快慢 频段的相关常识
  10. 实验 3 熟悉常用的 HDFS 操作