微信支付SDK使用总结
微信支付SDK使用总结
- 统一下单接口调用
- 第2步申请预支付:必须携带参数有:
- 第5步调起支付:必须参数
- 第7步:微信回调服务器接口
微信支付sdk下载地址:
微信支付sdk配置参数有些参数需要手动填写,有些参数会自动将配置文件中的数据填充,害怕后期遗忘,所以记录下来。
统一下单接口调用
使用流程:
其中第2步:申请预订单、第5步:调起支付和第7步:返回回调结果 都是向微信服务器发生请求,微信支付文档提供的参数列表如下:
第2步申请预支付:必须携带参数有:
其中需要手动设置的参数有:
$config=new \WxPayConfig();
//初始化预订单类
$wxOrderData=new \WxPayUnifiedOrder();
//商户订单号
$wxOrderData->SetOut_trade_no($this->orderNo);
//交易类型
$wxOrderData->SetTrade_type('JSAPI');
//交易金额
$wxOrderData->SetTotal_fee($totalPrice*100);
//交易描述
$wxOrderData->SetBody('零食商贩');
//用户识别号
$wxOrderData->SetOpenid($openid);
//回调地址
$wxOrderData->SetNotify_url('http://qq.com');
//其余必填参数appid、mch_id、sign、spbill_create_ip和nonce_str,sdk中的unifiedOrder方法会自动向WxPay.Config.php文件中索取或自动生成所需数据并向微信服务器API接口发送预订单请求。
$wxOrder=\WxPayApi::unifiedOrder($this->config,$wxOrderData);
微信服务器返回结果
微信服务器以xml数据格式返回,数据样式为:
<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg><appid><![CDATA[wx2421b1c4370ec43b]]></appid><mch_id><![CDATA[10000100]]></mch_id><nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str><openid><![CDATA[oUpF8uMuAJO_M2pxb1Q9zNjWeS6o]]></openid><sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign><result_code><![CDATA[SUCCESS]]></result_code><prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id><trade_type><![CDATA[JSAPI]]></trade_type>
</xml>
第5步调起支付:必须参数
由服务器根据第3步微信返回的预订单信息,封装客户端所需要的调起支付参数成数组或json数据,并返回给客户端
必须参数有:
$config=new \WxPayConfig();$jsApiPayData=new \WxPayJsApiPay();//小程序ID$jsApiPayData->SetAppid($config->GetAppId());//时间戳$jsApiPayData->SetTimeStamp((string)time());//随机字符串$rand=md5(time().mt_rand(0,1000));$jsApiPayData->SetNonceStr($rand);//数据包(微信服务器返回的数据prepay_id字段)$jsApiPayData->SetPackage('prepay_id='.$wxOrder['prepay_id']);//设置签名$jsApiPayData->SetSign($config);//将所需参数转换成数组。$rawData=$jsApiPayData->GetValues();
第7步:微信回调服务器接口
微信回调服务器是因为客户端向微信服务器提交支付后,微信会想客户端和商户服务器发送支付结果的一个流程,返回结果数据结果为xml,数据样式如下:
<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg><appid><![CDATA[wx2421b1c4370ec43b]]></appid><mch_id><![CDATA[10000100]]></mch_id><nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str><openid><![CDATA[oUpF8uMuAJO_M2pxb1Q9zNjWeS6o]]></openid><sign><![CDATA[3E50F5FFCC2A9B7A1DA4AFB4E50CF050]]></sign><result_code><![CDATA[SUCCESS]]></result_code><prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id><trade_type><![CDATA[JSAPI]]></trade_type>
</xml>
微信服务器会间断的请求商户服务器回调api接口,
请求时间间隔为:15s/15s/15s/18s/18s/30s/60s/180s/1800s/3600s;
我们可以继承sdk已经封装好的WxPay.Notify.php类进行回调函数的编写,好处是sdk直接将返回的xml数据转换成对象方便我们使用,还简单的做了安全验证,签名对比更加安全。
微信支付SDK使用总结相关推荐
- tp6中使用微信支付sdk
一.下载微信支付sdk 二.将lib文件夹下的文件复制到目录:extend->WxPay 将example文件夹下的WxPay.Config.php文件也复制到:extend->WxPay ...
- 7月第1周风控关注 微信支付SDK曝XXE漏洞 可伪造订单
易盾业务风控周报每周呈报值得关注的安全技术和事件,包括但不限于内容安全.移动安全.业务安全和网络安全,帮助企业提高警惕,规避这些似小实大.影响业务健康发展的安全风险. 1.微信支付SDK被曝XXE漏 ...
- 微信支付SDK的使用
在此记录一下微信支付sdk的使用 使用微信支付SDK理所应该去看官方文档,按步骤一步步来就好了,怎么还需要写博客呢? 答案是因为使用支付SDK时,遇到了很多弱智的坑,希望后来人不要和我一样SB就好. ...
- 微信支付SDK接入流程梳理
微信SDK的支付功能接入简单梳理. 首先说一下,你需要的官网都有,但是官网提供的东西不管新旧与否先给你放上去,部分地方提供的链接点击时还提示404,不同的页面提示相同的下载内容(demo)还不一样,表 ...
- tp5 微信支付sdk
接触到微信支付,然而微信官方给出的微信支付sdk用起来不太方便,在原来微信支付sdk上进行了修改,测试过能用,现在我的tp5项目都用这个,分享出来大家研究研究,新手一枚,望大神们能指出错处. git地 ...
- 微信支付SDK 中 PHP Certificate Downloader 微信支付 APIv3 平台证书的命令行下载工具 使用教程
使用环境 在linux 环境中使用 (没有服务器可以使用虚拟机 复制到本地) windows环境很麻烦 使用前准备 商户号.商户证书序列号.商户私匙文件(pem格式).ApiV3密钥 安装好 微信支付 ...
- iOS SDK开发系列三之微信支付SDK封装Demo以及xcodebuild简单打包脚本实现
前言 SDK开发系列文章一 SDK开发系列文章二 之前两个文章介绍了Cocoapods的原理,Xcode环境变量以及动态库和静态库的介绍,这些基本知识就单独抽出来了,方便以后翻阅.看了一遍网上的一些静 ...
- 微信支付sdk被曝xxe漏洞,漏洞原理分析
2019独角兽企业重金招聘Python工程师标准>>> 昨日在国外安全社区seclists有一个署名叫Rose Jackcode的白帽子公布了微信支付sdk的一个严重的安全漏洞(xx ...
- Unity接入微信支付SDK
最近1年转了UE开发,博客更新的比较少,技术栈宽了不少,以后有空尽量多更新,也方便总结记忆 Unity接入微信支付整个过程坑比较多,网上之前的教程要么比较老,要么比较零碎,只能东拼西凑摸索,跑通后还是 ...
- 微信小程序开发笔记 支付篇④——基于微信支付SDK实现Java后端接口使用
文章目录 一.前文 二.微信支付 Java SDK 三.示例 一.前文 微信小程序开发笔记--导读 微信支付-SDK与DEMO下载 先看README.md 二.微信支付 Java SDK 对微信支付开 ...
最新文章
- 去除RNA-seq数据批次效应
- 全球及中国车载扫地机行业销售前景态势与运营盈利分析报告2022版
- 赋能普通用户,面向专业级的视频内容制作技术
- LeetCode 2200. 找出数组中的所有 K 近邻下标
- 浙大PAT甲级1006
- 前端基础8:HTML5新增标签及CSS3新属性 viewport 动画
- 跟着 Microsoft 跑!
- c语言编程流水灯与交通灯实验,51单片机c语言交灯设计报告.doc
- NERSim v1.09a 1CD+HyperMILL 2018.1
- leetcode刷题之x的算术平方根
- 笔记本如何解除锁定计算机,笔记本键盘锁住了怎么解锁 有三种方法可以解决...
- Apache POI 之 初学实战篇 (四) --- 文本对齐
- 【翻译】BKZ 2.0: Better Lattice Security Estimates 论文翻译
- Python17_项目实操关卡-人机PK
- [机器学习] - 岭回归与Lasso回归
- SolidWorks宏工具介绍——初识宏工具
- GAN生成对抗网络基础知识
- GPS标准历书Yuma,Rinex,TLE,SEM是什么意思?
- 基于Inception v2实现判别mnist手写数据集
- 【学习笔记】状态转移矩阵
热门文章
- 2020江苏事业编计算机类真题,2020江苏事业单位计算机类岗位考情
- pacman 查询_Pacman 命令记录
- 南昌工学院计算机科学与技术专业,南昌工程学院特色专业介绍_计算机科学与技术_专业课程介绍_专业排名_就业方向...
- ​独家 | 为什么程序员不应该长期留在一家公司?
- Coursera 申请助学金流程和材料
- 部队计算机专业培训申请书,《计算机专业奖学金申请书》.docx
- Leetcode 2029. 石子游戏 IX
- Colorbox 参数设置-中文版
- IE8开发者工具 有打开却看不见
- python列表获取最后一项_如何在Python中获取列表的最后一项?