微信小程序 支付功能实现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
相关文章:
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
红河网站制作公司,红河事业单位身份证如何上传?
建站之星后台密码遗忘如何找回?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
建站VPS选购需注意哪些关键参数?
移民网站制作流程,怎么看加拿大移民官网?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
购物网站制作公司有哪些,哪个购物网站比较好?
如何用PHP快速搭建高效网站?分步指南
制作公司内部网站有哪些,内网如何建网站?
已有域名和空间如何搭建网站?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
北京专业网站制作设计师招聘,北京白云观官方网站?
已有域名能否直接搭建网站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
建站主机CVM配置优化、SEO策略与性能提升指南
如何使用Golang table-driven基准测试_多组数据测量函数效率
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
如何在IIS中新建站点并配置端口与IP地址?
,如何利用word制作宣传手册?
如何快速搭建FTP站点实现文件共享?
如何确保西部建站助手FTP传输的安全性?
网站企业制作流程,用什么语言做企业网站比较好?
建站之星各版本价格是多少?
如何在云指建站中生成FTP站点?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
怎么将XML数据可视化 D3.js加载XML
建站之星后台密码遗忘或太弱?如何重置与强化?
简历在线制作网站免费版,如何创建个人简历?
已有域名如何免费搭建网站?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何快速搭建自助建站会员专属系统?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何在橙子建站上传落地页?操作指南详解
如何选择域名并搭建高效网站?
建站之星多图banner生成与模板自定义指南
已有域名建站全流程解析:网站搭建步骤与建站工具选择
如何在IIS中新建站点并配置端口与物理路径?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
建站之星备案流程有哪些注意事项?
C#怎么创建控制台应用 C# Console App项目创建方法
黑客如何通过漏洞一步步攻陷网站服务器?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
*请认真填写需求信息,我们会在24小时内与您取得联系。