PHP实现jsapi微信支付
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微信支付相关推荐
- JSAPI微信支付开发流程和坑
首先,我先简要说明一下微信支付开发的流程 众所周知,工欲善其事,必先利其器,微信官方推出了web微信开发工具,有windows.linux.版本的,根据自己的开发环境选择合适自己的,登陆公众平台--& ...
- H5的jsapi微信支付:wx.chooseWXPay,ios手机在支付成功后不执行success中的回调函数
对于iOS客户端支付成功后不进入chooseWXPay函数success的问题原因是:目前没有得到解答 临时解决方案: 支付成功后,安卓和iOS的返回都是{"errMsg":&qu ...
- 微信支付开发(只针对公众号里的h5支付JSAPI)
微信支付后台: https://pay.weixin.qq.com 只有这里设置了,程序中才能使用这个key /*** 微信支付统一下单接口** @param userOrder 订单信息* @ret ...
- 微信小程序微信支付《JSAPI支付》APIV3详细教程
文章目录 前提 整体介绍 我的maven依赖 1.整体流程 2.openid 的获取 3.统一下单Controller(预支付订单) 4.配置类和配置文件 5.工具类 6.前端接收到必要的参数,进行调 ...
- SpringBoot对接微信支付之JSAPI
分享SpringBoot整合微信公众号支付项目,对接微信JSAPI支付类型遇到的问题和过程封装的工具类,目前已正常使用,有问题大家评论区互动哈,有需要源码的可以私信我. 1.创建SpringBoot项 ...
- Python3 微信支付(小程序支付)V3接口
起因: 因公司项目需要网上充值功能,从而对接微信支付,目前也只对接了微信支付的小程序支付功能,在网上找到的都是对接微信支付V2版本接口,与我所对接的接口版本不一致,无法使用,特此记录下微信支付完成功能 ...
- springboot利用官方SDK(wechatpay-apache-httpclient)接入微信支付V3
利用微信官方提供的SDK wechatpay-apache-httpclient 实现.以微信小程序支付为例,其他支付也是一样的,就是参数和接口地址不同. 微信支付V3文档 首先要在微信商户平台设置好 ...
- 微信小程序内嵌H5页面实现微信支付
背景: 在微信H5页面已经实现了微信JSAPI的网页支付,老板要求把整个业务线快速转移到微信小程序中,作为懒惰的程序员来说,直接把页面嵌套到小程序不就行了.说干就干,在小程序中设置好基本信息后,一预览 ...
- ios调用微信支付提示当前页面的URL未注册
ios调用JSAPI微信支付提示"当前页面的URL未注册",而页面手动刷新后再次支付则正常,安卓也正常,肯定不是授权目录配置问题. 在微信支付页面,当通过JSAPI微信支付 ...
- Django微信支付
准备 安装 pip install weixin-python -i https://pypi.douban.com/simple GitHub官网-开发之前最好先看一下 https://github ...
最新文章
- 利用python中的gzip模块压缩和解压数据流和文件
- php7 出现Class 'DOMDocument' not found的解决方法
- sklearn特征的选择
- Linux静默安装oracle
- Debian耳机声音问题
- c++ doxygen 注释规范_利用Doxygen给C程序生成注释文档
- js网页顶部线性页面加载进度条,jquery头部线性进度条总结
- [转载] 使用异步 I/O 大大提高应用程序的性能
- 联想成立35周年,年收入着实惊人
- 谷歌开源 VR 应用
- Qt使用Qtxlsx读写xlsx文件
- Vue- Markdown 使用大全
- leetcode Course Schedule II
- webpack入坑之旅(一)入门安装
- 计算机操作基础知识培训,计算机基础操作技能培训知识要点
- LeetCode Golang 答案
- 智慧警务三维PGIS及一标三实采集、展示平台
- 通过XMind Update制作思维导图
- “前浪”微博财报里的悲喜两极
- Linux常用命令征集