微信支付查询订单V2 接口
//查询订单是否存在
public function userOrderCheck(){
$out_trade_no= input("out_trade_no"); //订单号
$type= input("type"); //类型 1 充值,2 商城订单
$appid = 'XXXXXX';//小程序openid
$secret = 'XXX'; //小程序secret
$mch_id = 'XXXXX'; //商户id
$paykey = 'XXXX'; //V2 密钥
$access_token = $this->get_access_token_a();
$url = 'https://api.mch.weixin.qq.com/pay/orderquery';
//这里是按照顺序的 因为下面的签名是按照(字典序)顺序 排序错误 肯定出错
$post['appid'] = $appid;
$post['mch_id'] = $mch_id;
$post['nonce_str'] = md5(mt_rand(0,1000));//随机字符串
$post['out_trade_no'] = $out_trade_no;//微信支付记录订单号
$sign = $this->MakeSign_a($post,$paykey); //签名
$post_xml = '<xml>
<appid>'.$appid.'</appid>
<mch_id>'.$mch_id.'</mch_id>
<nonce_str>'.$post['nonce_str'].'</nonce_str>
<out_trade_no>'.$post['out_trade_no'].'</out_trade_no>
<sign>'.$sign.'</sign>
</xml>';
$xml = $this->https_request_a($url,$post_xml);
$result = $this->xml2array_a($xml);
if($result["return_code"] =="SUCCESS" && $result["result_code"]=="SUCCESS"){
//自己的业务逻辑
}
}
//获取token
public function get_access_token_a(){
$appid = ''; //小程序openid
$secret = 'xxxx';
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;
$res = $this->https_request_a($url,'');
$access_token1=json_decode($res,true);
$access_token = $access_token1['access_token'];
return $access_token;
}
/**
* 将参数拼接为url: key=value&key=value
* @param $params
* @return string
*/
public function ToUrlParams_a( $params ){
$string = '';
if( !empty($params) ){
$array = array();
foreach( $params as $key => $value ){
$array[] = $key.'='.$value;
}
$string = implode("&",$array);
}
return $string;
}
/**
* 生成签名, $KEY就是支付key
* @return 签名
*/
public function MakeSign_a( $params,$KEY){
//签名步骤一:按字典序排序数组参数
ksort($params);
$string = $this->ToUrlParams_a($params); //参数进行拼接key=value&k=v
//签名步骤二:在string后加入KEY
$string = $string . "&key=".$KEY;
//签名步骤三:MD5加密
$string = md5($string);
//签名步骤四:所有字符转为大写
$result = strtoupper($string);
return $result;
}
//获取xml里面数据,转换成array
private function xml2array_a($xml) {
if(!$xml) {
throw new RuntimeException('xml 数据异常转换失败!!');
}
$map = array();
libxml_disable_entity_loader(true);
$map = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
// var_dump($map);
return $map;
}
//post请求
public function https_request_a($url,$data = null){
if(function_exists('curl_init')){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}else{
return false;
}
}
}
微信支付查询订单V2 接口相关推荐
- java微信支付v3系列——6.微信支付查询订单API
目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...
- 微信支付查询订单java_微信支付java版本之查询订单
本文实例为大家分享了微信支付订单的查询接口,供大家参考,具体内容如下 1.接口简介 2.代码实现 package com.zhrd.bussinss.platform.controller.shop; ...
- 开源PHP微信通用sdk,支持微信支付及所有基础接口(强烈推荐)
PHP微信通用sdk,支持微信支付及所有基础接口 WeChatDeveloper for PHP 功能描述 技术帮助 代码仓库 文件说明(后缀会根据官方文档增加文件) 安装使用 微信支付 支付宝支付 ...
- 微信支付java版v2.0_刷卡支付-翟东平-专题视频课程
微信支付java版v2.0_刷卡支付-1814人已学习 课程介绍 微信支付系列课程将讲解"刷卡支付"."扫码支付"."公众号支付&qu ...
- 电商平台接入第三方支付接口之微信支付接入订单系统
边做边更新------ 先接入微信接口: 支付方式:用户扫描二维码支付 接口类型:扫码支付之模式二 先copy一份模式二的业务流程时序图 业务流程说明: (1)商户后台系统根据用户选购的商品生成订单. ...
- 微信小程序云开发微信支付、订单查询、申请退款
微信小程序云开发微信支付 使用云开发微信支付功能的前提 统一下单 查询订单 申请退款 常见问题总结: 使用云开发微信支付功能的前提 小程序主体为企业或者工商个体户 小程序完成了微信认证 小程序接入微信 ...
- 浅析微信支付:统一下单接口
本文是[浅析微信支付]系列文章的第五篇,主要讲解如何调用统一下单接口生成预支付单及调起支付页面. 浅析微信支付系列已经更新四篇了哟-,没有看过的朋友们可以看一下哦. 浅析微信支付:微信公众号网页授权 ...
- 电商第三方支付微信支付接入订单系统
先接入微信接口: 支付方式:用户扫描二维码支付 接口类型:扫码支付之模式二 先copy一份模式二的业务流程时序图 业务流程说明: (1)商户后台系统根据用户选购的商品生成订单. (2)用户确认支 ...
- 微信支付Native下单API接口正确调用姿势
商户Native支付下单接口,微信后台系统返回链接参数code_url,商户后台系统将code_url值生成二维码图片,用户使用微信客户端扫码后发起支付. 文档地址:微信支付-开发者文档 目录 一.N ...
- 微信支付退款,回调接口
前期准备 Maven依赖 由于具体是哪个已经分不清了,有些是微信支付要用到的,有些是退款要用到的,有些是解码要用到的. <dependency><groupId>com.git ...
最新文章
- Windows7 64位 plsql developer连接oracle最终解决方法
- php粒子背景特效_粒子背景特效Particleground.js插件使用解析_蓝戒的博客
- Attachment rename issue in Faas
- LINUX --基本概念和操作
- 【网络流24题】餐巾计划问题(最小费用最大流)
- 【转】vs平台工具集介绍,vc6~vs2019各IDE对应的工具集版本
- 非递归中序,后序,先序遍历二叉树完整代码(用链式栈实现)
- linux下 添加一个新账户tom,linux 账户管理命令 useradd、groupadd使用方法
- 1002	输出第二个整数
- 织梦采集工具-织梦CMS采集教程
- 转载子龙山人 cocos2d-x学习资源汇总(持续更新。。。)
- PLC对接SQL数据库,实现数据采集和边缘计算
- Python 批量推送微信公众号模板消息
- 2012考研数学二第(21)题——中值定理:零点定理+数列极限:单调有界准则
- 微信小程序—那些安全验证,滑块验证、输入验证码、拼图验证
- ionic安卓打印终极解决方案,支持USB打印
- cad卸载工具_CAD安装失败都是红?
- HyperLynx(五)反射仿真
- sap客户信贷_信贷控制配置全过程-SAP
- 11月初.wang域名总量TOP15:13家中国域名商上榜
热门文章
- STM32MP157C-DK2 开机测试
- 整数 (Integer)
- Web并发页面访问量统计实现
- testerhome职业辅导沙龙
- SpringBoot 项目使用 Apache POI 解析 Word 的 docx 文档的图片和文字内容
- InnoDB存储引擎介绍-(6) 二. Innodb Antelope文件格式
- Cygwin warning: could not find /tmp, please create! 问题
- linux磁盘文件大小排序,Linux中查看磁盘大小、文件大小、排序方法小结
- 【手写简易版 vue3】究极长文详细讲解如何实现一个简易版 vue3
- SWUST OJ1132: 机器人收集硬币