PHP实现微信小程序支付,很基础,也很容易!(微信小程序支付源码案例)
2023-06-13 09:17:07 时间
前端代码
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;
}
}
备注:
小程序发起支付参考文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=3
统一下单接口 (后端获取 统一下单接口返回的 prepay_id 参数值给前端用 ):https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1
注: 收藏本站不迷路
未经允许不得转载:肥猫博客 » PHP实现微信小程序支付,很基础,也很容易!(微信小程序支付源码案例)
相关文章
- 大型仓库进销存管理系统php源代码,多仓版进销存管理系统PHP源码ERP仓库管理系统php网络版进销存源码…
- 「Python」面向对象封装案例2——摆放家具
- 【菜鸟学Python】案例一:汇率换算「建议收藏」
- 企业版php自动发卡平台,企业版PHP自动发卡平台源码V6.3版
- php://input allow_url_include,php allow_url_include的应用和解释_PHP教程
- php和asp网络验证码,Verifycode 1个简单的网页图片验证码的示例程序,基本上现有 字和字母都可以识别。 WEB(ASP,PHP,…) 238万源代码下载- www.pudn.com…
- [完整案例]编程实现动物头像定位-01
- php案例 :显示目录信息
- PHP案例:下载文件(特色:只能下载上传的文件哦))
- php案例:解压一个压缩包中多个文件
- C#中关于Struct(结构体)介绍以及附带案例解释,一看就会,一学就懂系列[通俗易懂]
- 佛萨奇2.0波场链/币安链/马蹄链DAPP智能合约系统开发成功案例及源码交付
- 美联储金融科技特别报告:隐私增强技术—分类、案例和考虑事项
- 【Java 代码审计入门-05】RCE 漏洞原理与实际案例介绍
- [Python私活案例]24行代码,轻松赚取400元,运用Selenium爬取39万条数据
- Python小案例(四)批量操作文件
- 【C 语言】二级指针案例 ( 字符串切割 | 返回 二维数组 作为结果 )
- Harbor应用案例:品高云企业级DevOps实战
- Wiztalk | 100期 陶阳宇《机器学习平台如何兼顾工业界的高可用性和学术界的创新性-Angel详解及产业应用案例-2》
- 大数据技术之WordCount案例详解大数据
- Python学习案例详解编程语言
- PHP开启MySQL扩展的必要性(php开启mysql扩展)
- MySQL登录安全之PHP实现(php登录mysql)
- 探寻Linux下PHP路径之旅(linux查看php路径)
- 成功案例成功案例证明:Oracle技术可靠可信(oracle技术有哪些)
- 如何用PHP复制MySQL表?(php复制mysql表)
- 安装Linux下的PHP:从源码进行编译(linux源码安装php)
- PHP连接Oracle:轻松实现数据库交互(php链接oracle)
- PHP与MSSQL的融合——开启新的编程前程(php mssql 空白)
- 馆PHP编程与MySQL建立图书馆管理系统(php mysql 图书)
- Linux下编译安装PHP:一步步走向稳定性(linux编译安装php)
- Linux下快速搭建PHP环境(linux 搭建 php)
- 如何使用Redis技术来优化PHP性能(清楚redis php)
- 中的应用使用Redis,提升PHP程序效率(redis缓存在php)
- PHP和Mysqlweb应用开发核心技术第1部分Php基础-1开始了解php