PS:本篇文章用于获取微信支付订单的查询,代码中使用的是out_trade_no:商户订单号来进行查询,可以直接将文中的out_trade_no替换为transaction_id微信支付订单号来进行查询,按照个人需求来就行,代码如下

小程序端js代码:

  getData(){wx.request({url: 'http://127.0.0.1:2908/wxPayV2/queryOrder/actionQuery.php',method:'GET',header:{'content_type':'application/json'},data:{'out_trade_no':'此处写你的商户订单号' //如果写微信订单号记得将后面改为transaction_id},success(res){console.log(res)}})}

PHP相关的类的代码:

<?php
require_once ('../../config/appConfig.php');class queryOrder{public $appid;public $mch_id;public $APIv2;/*** 获取基本配置相关信息*/public function __construct(){$appid = appid;$mch_id = mchID;$APIv2 = APIv2;$this -> appid = $appid;$this -> mch_id = $mch_id;$this -> APIv2 = $APIv2;}/*** @return string :返回32位随机字符串*/public function get_nonce_str(): string  //此处可以写的更复杂些,为了篇幅我简单写一下{$body = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';$disposeData = str_shuffle($body);return substr($disposeData,0,32);}/*** 获取查询订单所需要的签名* @param $out_trade_no :微信支付订单号* @param $nonce_str :随机字符串* @return string*/public function getQuerySign($out_trade_no,$nonce_str): string{$signBody = array('appid' => $this -> appid,'mch_id' => $this -> mch_id,'out_trade_no' => $out_trade_no,'nonce_str' => $nonce_str,'sign_type' => 'MD5');ksort($signBody);$stringSignBody = http_build_query($signBody);$resultSignBody = $stringSignBody.'&key='.$this -> APIv2;$sign = strtoupper(MD5($resultSignBody));return $sign;}/*** 获取查询订单所需要的请求数据* @return false|string :返回查询订单所需要的xml格式数据* @throws DOMException*/public function queryOrderBody($out_trade_no,$nonce_str,$sign){$requestData = new DOMDocument;$requestData -> formatOutput = true;$xml = $requestData-> createElement('xml');$appid = $requestData -> createElement('appid',$this -> appid);$mch_id = $requestData -> createElement('mch_id',$this -> mch_id);$out_trade_no = $requestData -> createElement('out_trade_no',$out_trade_no);$nonce_str = $requestData -> createElement('nonce_str',$nonce_str);$sign = $requestData -> createElement('sign',$sign);$sign_type = $requestData -> createElement('sign_type','MD5');$requestData -> appendChild($xml);$xml -> appendChild($appid);$xml -> appendChild($mch_id);$xml -> appendChild($out_trade_no);$xml -> appendChild($nonce_str);$xml -> appendChild($sign);$xml -> appendChild($sign_type);$requestData -> save('./queryOrderBody.xml');return $requestData -> saveXML();}/*** curl请求接口* @return bool|string*/public function curlRequest($data){$url = 'https://api.mch.weixin.qq.com/pay/orderquery';$getData = curl_init();curl_setopt($getData,CURLOPT_URL,$url);curl_setopt($getData,CURLOPT_RETURNTRANSFER,1);curl_setopt($getData,CURLOPT_SSL_VERIFYPEER,0);curl_setopt($getData,CURLOPT_SSL_VERIFYHOST,0);curl_setopt($getData,CURLOPT_POST,1);curl_setopt($getData,CURLOPT_POSTFIELDS,$data);curl_setopt($getData,CURLOPT_CONNECTTIMEOUT,60);curl_setopt($getData,CURLOPT_HEADER,0);$result = curl_exec($getData);curl_close($getData);return $result;}
}

PHP类的方法调用

<?php
/** 本PHP文件通过访问https://api.mch.weixin.qq.com/pay/orderquery,提交out_trade_no商户订单号来对订单状态进行查询*/
require_once ('./queryOrder.php');  //读取queryOrder类中的方法$out_trade_no = $_GET['out_trade_no'];  //接受由前端传来的out_trade_no商户订单参数
$getData = new queryOrder;
$nonce_str = $getData -> get_nonce_str();  //获取32位随机字符串$sign = $getData -> getQuerySign($out_trade_no,$nonce_str);  //获取请求参数中所需要的签名
//echo $sign;
$queryOrderBody = $getData -> queryOrderBody($out_trade_no,$nonce_str,$sign); //获取请求数据,即xml格式数据$data = file_get_contents('./queryOrderBody.xml');  //将xml格式请求数据存入变量$result = $getData -> curlRequest($data); //使用curl对接口https://api.mch.weixin.qq.com/pay/orderquery进行访问file_put_contents('./resultQueryOrder.xml',$result); //将返回的数据存入文件resultQueryOrder.xml$getResultData = file_get_contents('./resultQueryOrder.xml'); //将返回的xml格式数据存入变量$disposeResultData = simpleXML_load_string($getResultData,null,LIBXML_NOCDATA); //将xml格式数据解析为对象$json_data = json_encode($disposeResultData); //将解析的对象转换为json格式数据$array_data = json_decode($json_data,true); //将json格式数据转换为数组//官方文档中只有result_code,return_code与trade_state都为SUCCESS时,表示用户支付成功
$result_code = $array_data['result_code'];//获取返回数据中的result_code
$return_code = $array_data['return_code'];//获取返回数据中的return_code
$trade_state = $array_data['trade_state'];//获取返回数据钟的trade_state//从此处开始后面的逻辑按照个人需求来写
//判断用户是否支付
if($return_code == 'SUCCESS' && $result_code == 'SUCCESS' && $trade_state == 'SUCCESS'){$resultStatus = '用户该订单已支付';
}else{$resultStatus = '用户该订单未支付';
}echo $resultStatus;

本篇文章由CSDN用户:缱绻淡蓝海 原创,代码具有时效性,作者会不定时进行更新

PHP实现对小程序微信支付v2订单的结果查询相关推荐

  1. PHP实现小程序微信支付V2获取prepay_id

    PS:本文旨在简单获取prepay_id,只是简单的介绍一下流程,并非完整的订单支付流程 小程序端JS代码: getxml(){var test = thiswx.getStorage({ //从缓存 ...

  2. PHP实现小程序微信支付v3版本退款,以及对退款订单进行查询

    PS:本篇文章仅用作对小程序微信支付v3版本的退款流程以及对退款订单进行查询的流程展示,如要用于实际,还请自行修改代码 文章中调用的API_Connect.php 与API_v3Connect.php ...

  3. 调用支付jsapi缺少参数appid_服务商模式下的小程序微信支付

    最近,要做一个小程序商城的项目,需要在小程序中用到分账功能,也就是顾客购买商品支付的钱要给各个店铺,这就需要用到服务商模式. 在谈服务商模式下小程序微信支付之前,我们先要有一个服务商的商户号,这个商户 ...

  4. java 后台 小程序微信支付

    java 后台 小程序微信支付 步骤说明: 微信公众平台支付接口调试工具 #1.生成字符串: appid=appId&body=测试商品名称&mch_id=商户号&nonce_ ...

  5. 小程序微信支付开发流程记录

    我所在公司需要开发一款商城小程序,里面需要用到微信支付,我负责里面的下单功能,从小程序端到后台的支付流程都是我自己开发的,由于我们组没有人有开发微信支付的经验,只有我有开发过JSAPI的微信支付的经验 ...

  6. 微信小程序收款手续费_小程序微信支付收款流程

    大家都知道,小程序具备微信支付功能,但是,很多商家还不知道具体的收款流程是什么?用户在小程序下单支付的款项究竟到了哪里?或者找第三方公司开发担心资金安全问题? 今天给大家详细的讲解一下: 在实现微信小 ...

  7. laravel小程序微信支付

    php小程序微信支付类 laravel小程序微信支付分享地址http://www.xiaoshu168.com/php/232.html

  8. 微信小程序 微信支付代码实现流程

    微信小程序 微信支付是一个很简单的流程  微信开发文档 地址:wx.requestPayment(Object object) | 微信开放文档 微信公众平台申请支付功能 百度一大堆例举代码 官方文档 ...

  9. nodejs实现小程序微信支付

    最近做小程序时用到了微信支付很是开心,因为之前支付一直都没有做过,终于又可以学点东西了.于是很开心的去看了下微信小程序的支付接口,没想到,事情基本都是后端做的,前端只要调用wx.requestPaym ...

最新文章

  1. psnr 与 ssim评测步骤
  2. git clone错误 fatal: early EOF fatal: index-pack failed
  3. Linux文件系统中文版,Linux 文件系统-Go语言中文社区
  4. C++中的“error:LNK2005 已经在*.obj中定义”异常
  5. c语言编程 完美数,用完美数的数字之美激发学生学习C语言编程的兴趣
  6. python单例模式继承_Python四种实现单例模式的方法
  7. 测开2 - Python(文件操作)
  8. ubuntu16.04安装微信
  9. ubuntu18的网关ip在哪里配_技术|如何在 Ubuntu 18.04 LTS 中配置 IP 地址
  10. C语言访问存储器的方法
  11. linux下kafka安装与配置
  12. java bo对象_java的几种对象(PO,VO,DAO,BO,POJO)解释 (转)
  13. SpringMvc @PathVariable 工作原理
  14. bzoj 1001: [BeiJing2006]狼抓兔子 平面图最小割
  15. java利用iText.jar实现jpg转pdf
  16. 【答题卡识别】基于matlab GUI hough变换答题卡成绩统计(带面板)【含Matlab源码 1828期】
  17. [需求管理-9]:需求规格说明书SRS
  18. 华为手机刷机功能总结
  19. Yeti Feather贴图着色与Arnold 渲染
  20. 饭前一根香蕉,到底有多好!

热门文章

  1. 史上最全的nexus私服搭建全流程
  2. 41 ItemsWidget之QListWidget
  3. Breed Counting(水?)
  4. P4844 LJJ爱数数 数论
  5. 驰网云数据库MySQL SQL Server
  6. 不驰于空想,不骛于虚声
  7. iOS Gif动画播放
  8. csdn 博客插入gif动画
  9. vulnhub Temple of Doom: 1
  10. 到月宫上挖土-嫦娥五号背后的航天系统工程