微信小程序 支付功能实现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实现模糊查询与多条件搜索【实例】