微信小程序 支付功能实现PHP实例详解
发布时间 - 2026-01-11 01:06:07 点击率:次微信小程序 支付功能实现PHP实例详解

前端代码:
wx.request({
url: 'https://www.yourhost.com/weixin/WeiActivity/payJoinfee',//改成你自己的链接
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
method:'POST',
success: function(res) {
console.log(res.data);
console.log('调起支付');
wx.requestPayment({
'timeStamp': res.data.timeStamp,
'nonceStr': res.data.nonceStr,
'package': res.data.package,
'signType': 'MD5',
'paySign': res.data.paySign,
'success':function(res){
console.log('success');
wx.showToast({
title: '支付成功',
icon: 'success',
duration: 3000
});
},
'fail':function(res){
console.log('fail');
},
'complete':function(res){
console.log('complete');
}
});
},
fail:function(res){
console.log(res.data)
}
});
后端代码:
//支付费用
public function payJoinfee(){
$appid='wx888888888';
$openid='oCQwY0Q_pzrQpu8888888';
$mch_id='141388888';
$key='9A0A86888888888';
import('Weixin.Lib.WeixinPay');
$weixinpay = new \WeixinPay($appid,$openid,$mch_id,$key);
$return=$weixinpay->pay();
$this->response($return,'json');
}
微信支付类
<?php
/*
* 小程序微信支付
*/
class WeixinPay{
protected $appid;
protected $mch_id;
protected $key;
protected $openid;
function __construct($appid,$openid,$mch_id,$key){
$this->appid=$appid;
$this->openid=$openid;
$this->mch_id=$mch_id;
$this->key=$key;
}
public function pay(){
//统一下单接口
$return=$this->weixinapp();
return $return;
}
//统一下单接口
private function unifiedorder(){
$url='https://api.mch.weixin.qq.com/pay/unifiedorder';
$parameters=array(
'appid'=>$this->appid,//小程序ID
'mch_id'=>$this->mch_id,//商户号
'nonce_str'=>$this->createNoncestr(),//随机字符串
'body'=>'测试',//商品描述
'out_trade_no'=>'2015450806125346',//商户订单号
'total_fee'=>floatval(0.01*100),//总金额 单位 分
'spbill_create_ip'=>$_SERVER['REMOTE_ADDR'],//终端IP
'notify_url'=>'http://www.weixin.qq.com/wxpay/pay.php',//通知地址
'openid'=>$this->openid,//用户id
'trade_type'=>'JSAPI'//交易类型
);
//统一下单签名
$parameters['sign']=$this->getSign($parameters);
$xmlData=arrayToXml($parameters);
$return=xmlToArray(postXmlSSLCurl($xmlData,$url,60));
return $return;
}
//微信小程序接口
private function weixinapp(){
//统一下单接口
$unifiedorder=$this->unifiedorder();
$parameters=array(
'appId'=>$this->appid,//小程序ID
'timeStamp'=>''.time().'',//时间戳
'nonceStr'=>$this->createNoncestr(),//随机串
'package'=>'prepay_id='.$unifiedorder['prepay_id'],//数据包
'signType'=>'MD5'//签名方式
);
//签名
$parameters['paySign']=$this->getSign($parameters);
return $parameters;
}
//作用:产生随机字符串,不长于32位
private function createNoncestr($length = 32 ){
$chars = "abcdefghijklmnopqrstuvwxyz0123456789";
$str ="";
for ( $i = 0; $i < $length; $i++ ) {
$str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);
}
return $str;
}
//作用:生成签名
private function getSign($Obj){
foreach ($Obj as $k => $v){
$Parameters[$k] = $v;
}
//签名步骤一:按字典序排序参数
ksort($Parameters);
$String = $this->formatBizQueryParaMap($Parameters, false);
//签名步骤二:在string后加入KEY
$String = $String."&key=".$this->key;
//签名步骤三:MD5加密
$String = md5($String);
//签名步骤四:所有字符转为大写
$result_ = strtoupper($String);
return $result_;
}
///作用:格式化参数,签名过程需要使用
private function formatBizQueryParaMap($paraMap, $urlencode){
$buff = "";
ksort($paraMap);
foreach ($paraMap as $k => $v){
if($urlencode)
{
$v = urlencode($v);
}
$buff .= $k . "=" . $v . "&";
}
$reqPar;
if (strlen($buff) > 0){
$reqPar = substr($buff, 0, strlen($buff)-1);
}
return $reqPar;
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# 微信小程序
# 支付
# 小程序
# PHP
# 微信小程序-详解微信登陆、微信支付、模板消息
# 微信小程序 支付后台java实现实例
# PHP:微信小程序 微信支付服务端集成实例详解及源码下载
# 微信小程序 支付功能开发错误总结
# 微信小程序 支付简单实例及注意事项
# 微信小程序支付及退款流程详解
# 微信小程序微信支付接入开发实例详解
# 微信小程序调用微信支付接口的实现方法
# 微信小程序 支付功能(前端)的实现
# 关于微信小程序实现云支付那些事儿
# 下单
# 商户
# 自己的
# 希望能
# 谢谢大家
# 数据包
# 总金额
# 后端
# complete
# appid
# public
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
如何在建站之星绑定自定义域名?
如何在香港免费服务器上快速搭建网站?
浅述节点的创建及常见功能的实现
bootstrap日历插件datetimepicker使用方法
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
再谈Python中的字符串与字符编码(推荐)
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
黑客入侵网站服务器的常见手法有哪些?
用yum安装MySQLdb模块的步骤方法
如何快速辨别茅台真假?关键步骤解析
如何用JavaScript实现文本编辑器_光标和选区怎么处理
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
如何在Windows服务器上快速搭建网站?
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
教你用AI将一段旋律扩展成一首完整的曲子
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
Linux系统命令中tree命令详解
EditPlus中的正则表达式 实战(1)
如何快速登录WAP自助建站平台?
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
Laravel如何处理和验证JSON类型的数据库字段
iOS中将个别页面强制横屏其他页面竖屏
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
如何在Ubuntu系统下快速搭建WordPress个人网站?
海南网站制作公司有哪些,海口网是哪家的?
,怎么在广州志愿者网站注册?
如何在阿里云虚拟主机上快速搭建个人网站?
PHP 500报错的快速解决方法
Java解压缩zip - 解压缩多个文件或文件夹实例
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
JavaScript数据类型有哪些_如何准确判断一个变量的类型
详解Oracle修改字段类型方法总结
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
如何在Windows 2008云服务器安全搭建网站?
,网页ppt怎么弄成自己的ppt?
韩国服务器如何优化跨境访问实现高效连接?
微信推文制作网站有哪些,怎么做微信推文,急?
焦点电影公司作品,电影焦点结局是什么?
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性

