微信小程序 支付功能实现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集成支付宝微信支付
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
百度浏览器如何管理插件 百度浏览器插件管理方法
如何生成腾讯云建站专用兑换码?
如何在万网自助建站平台快速创建网站?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
如何在IIS7上新建站点并设置安全权限?
如何用y主机助手快速搭建网站?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
浅谈javascript alert和confirm的美化
Laravel集合Collection怎么用_Laravel集合常用函数详解
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
如何用腾讯建站主机快速创建免费网站?
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
网站制作免费,什么网站能看正片电影?
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
如何登录建站主机?访问步骤全解析
lovemo网页版地址 lovemo官网手机登录
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
Python文件异常处理策略_健壮性说明【指导】
Laravel如何与Inertia.js和Vue/React构建现代单页应用
郑州企业网站制作公司,郑州招聘网站有哪些?
公司网站制作价格怎么算,公司办个官网需要多少钱?
如何用PHP工具快速搭建高效网站?
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
如何彻底删除建站之星生成的Banner?
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
长沙做网站要多少钱,长沙国安网络怎么样?
高端建站如何打造兼具美学与转化的品牌官网?
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
如何正确选择百度移动适配建站域名?
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
高防服务器租用首荐平台,企业级优惠套餐快速部署
Laravel观察者模式如何使用_Laravel Model Observer配置
如何确保FTP站点访问权限与数据传输安全?
手机网站制作与建设方案,手机网站如何建设?
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】

