热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Php微信小程序支付

微信小程序支付官方参数小程序中代码后端发起支付代码支付回调官方参数文档地址:https:developers.weixin.qq.comminiprogramdeva


微信小程序支付

  • 官方参数
  • 小程序中代码
  • 后端发起支付代码
  • 支付回调


官方参数

在这里插入图片描述


文档地址:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/payment/wx.requestPayment.html



小程序中代码

如果说你的小程序中有其他登陆方式,比如手机登陆,那么支付的时候就要先去获取用户的openid

// 获取用户的openid
get_user_openid:function(){let that = this;let openid = app.globalData.openid;if (openid){run_pay(that);}else{ // 先获取用户openidapp.get_user_openid(function (data) {run_pay(that);})}
},

下面看看发起支付

// 立即支付
function run_pay(that){let bookReadData = wx.getStorageSync('bookReadData');let channel = app.globalData.QRXS_CHANNEL;let bid = bookReadData.bid;app.httpRequest(config.payOrderBe, {}, function (data) {let product = '开通畅读卡';var postdata = {product: product,detail: product,fee: that.data.pay_price * 100,reward: that.data.reward,bid: bid,channel: channel,timestamp: data.timestamp,nonceStr: data.nonceStr,signature: data.signature,}postdata['openid'] = app.globalData.openidpostdata['sign'] = md5.md5(postdata.product + postdata.detail + postdata.fee + postdata.timestamp + postdata.reward + config.APP_KEY);app.httpRequest(config.payOrder, postdata, function (data) {var res_data = data;var nonceStr = res_data.nonceStr;var outtradeno = res_data.OutTradeNo;var wxpackage = res_data.package;var paysign = res_data.paySign;var timestamp = res_data.timestamp;wx.requestPayment({'timeStamp': timestamp,'nonceStr': nonceStr,'package': wxpackage,'signType': 'MD5','paySign': paysign,'success': function (res) {console.log(res)//成功应该要刷新用户信息,还有当前章节是否开通if (res.errMsg === "requestPayment:ok") {if (that.data.show_back === 1) {app.getUserData(); // 刷新用户信息wx.redirectTo({url: '/pages/buyCard/buyStatus/buyStatus?type=1',})} else {wx.switchTab({url: '/pages/my/my'})}}},'fail': function (res) {console.log(res)if (res.errMsg == "requestPayment:fail cancel") {wx.redirectTo({url: '/pages/buyCard/buyStatus/buyStatus?type=0',})}},'complete': function (res) {console.info('complete');}});});})
}

后端发起支付代码

发起支付第一步,获取支付所需信息,
跟网页端支付差不多

// 获取支付所需签名等
function wx_begin(){include_once "Application/Xcx4/ORG/WxPaySync/jssdk.php";$jssdk = new \JSSDK('wxabxxxxxb66bd', '647474836xxxxxxxxxxxxxxxx9221d724');$signPackage = $jssdk->GetSignPackage();return_json_data(1,'ok',$signPackage);}

发起支付

public function wx_pay(){$uid = $this->uid;if (!$uid){return_json_data(0,'请先登录');}$userInfo = $this->userInfo;$body = I('product','trim','购买书币'); //商品描述$detail = I('detail','trim','购买书币'); //商品详情$total_fee = I('fee','intval',0); //第三方订单总金额 单位分$sign = I('sign','trim,addslashes',''); //APP与应用服务器之间的数据签名$month = I('month','trim,addslashes',''); //购买月份数$bid = I('bid','intval',0); $openid = I('openid','trim,addslashes',''); // 用户openidd $timestamp = $_REQUEST['timestamp']; //时间戳$nonceStr = trim(strip_tags($_REQUEST['nonceStr']));// 写入订单 $out_trade_no = 'xcx'.$this->uid.date("mdHis").rand(2000,8000);if(!$out_trade_no ){return_json_data(0,'充值失败'.$insertId);}//使用jsapi接口$notify_url = $this->notify_host.'/Xcx4/notify/wx'; //通知地址include_once "Application/Xcx4/ORG/WxPaySync/WxPayPubHelper.php";$jsApi = new \JsApi_pub();//使用统一支付接口$unifiedOrder = new \UnifiedOrder_pub();$unifiedOrder->setParameter("openid",$openid);//商品描述$unifiedOrder->setParameter("body","$body");//商品描述//自定义订单号,此处仅作举例$unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号COOKIE('pcode_trade_no',$out_trade_no,60*10);//转分//$total_fee = $total_fee*100;$unifiedOrder->setParameter("total_fee","$total_fee");//总金额$unifiedOrder->setParameter("notify_url",$notify_url);//通知地址$unifiedOrder->setParameter("trade_type","JSAPI");//交易类型$prepay_id = $unifiedOrder->getPrepayId();//=========步骤3:使用jsapi调起支付============$jsApi->setPrepayId($prepay_id);$jsApiParameters = $jsApi->getNewParameters($timestamp,$nonceStr);$data = array("timestamp"=>($jsApiParameters["timestamp"]),"nonceStr"=>$jsApiParameters['nonceStr'],"package"=>$jsApiParameters['package'],"signType"=>$jsApiParameters['signType'],"paySign"=>$jsApiParameters['paySign'],'OutTradeNo'=>$out_trade_no);return_json_data(1,'ok',$data);
}

支付回调


//v3.0版微信支付回调接口
public function wx(){include_once "Application/Xcx4/ORG/WxPaySync/WxPayPubHelper.php";//使用通用通知接口$notify = new \Notify_pub();//存储微信的回调$xml = $GLOBALS['HTTP_RAW_POST_DATA'];$notify->saveData($xml);//验证签名,并回应微信。//对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,//微信会通过一定的策略(如30分钟共8次)定期重新发起通知,//尽可能提高通知的成功率,但微信不保证通知最终能成功。if($notify->checkSign() == FALSE){$notify->setReturnParameter("return_code","FAIL");//返回状态码$notify->setReturnParameter("return_msg","签名失败");//返回信息}else{$notify->setReturnParameter("return_code","SUCCESS");//设置返回码}if($notify->checkSign() == true){$out_trade_no = $notify->data["out_trade_no"];//订单号$trade_no = $notify->data["transaction_id"];//微信支付订单号$result_code = $notify->data["result_code"];//业务结果$bank_type = $notify->data["bank_type"];//付款银行$is_subscribe = $notify->data["is_subscribe"];//是否关注公众号$openid = $notify->data["openid"];///支付成功 业务逻辑操作 echo '';}else{echo '';}
}

推荐阅读
  • 本文详细介绍了Java Web应用程序中的过滤器(Filter)功能,包括其作用、实现方式及配置方法。过滤器可以在请求到达目标资源之前对其进行预处理,并在响应返回给客户端之前进行后处理。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 5G至4G空闲态移动TAU流程解析
    本文详细解析了用户从5G网络移动到4G网络时,在空闲态下触发的跟踪区更新(TAU)流程。通过N26接口实现无缝迁移,确保用户体验不受影响。 ... [详细]
  • 本文详细解析了如何使用Python的urllib模块发起POST请求,并通过实例展示如何爬取百度翻译的翻译结果。 ... [详细]
  • C语言基础入门:7个经典小程序助你快速掌握编程技巧
    本文精选了7个经典的C语言小程序,旨在帮助初学者快速掌握编程基础。通过这些程序的实践,你将更深入地理解C语言的核心概念和语法结构。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 配置多VLAN环境下的透明SQUID代理
    本文介绍如何在包含多个VLAN的网络环境中配置SQUID作为透明网关。网络拓扑包括Cisco 3750交换机、PANABIT防火墙和SQUID服务器,所有设备均部署在ESXi虚拟化平台上。 ... [详细]
  • 微信小程序:授权登录与手机号绑定
    本文详细介绍了微信小程序中用户授权登录及绑定手机号的流程,结合官方指引和实际开发经验,提供了一套完整的实现方案,帮助开发者更好地理解和应用。 ... [详细]
  • 本文详细介绍如何使用 Python 集成微信支付的三种主要方式:Native 支付、APP 支付和 JSAPI 支付。每种方式适用于不同的应用场景,如 PC 网站、移动端应用和公众号内支付等。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
author-avatar
yuhemecy_883
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有