微信小程序 支付功能实现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事务操作确保数据一致性