微信支付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使用总结相关推荐

  1. tp6中使用微信支付sdk

    一.下载微信支付sdk 二.将lib文件夹下的文件复制到目录:extend->WxPay 将example文件夹下的WxPay.Config.php文件也复制到:extend->WxPay ...

  2. 7月第1周风控关注 微信支付SDK曝XXE漏洞 可伪造订单

    ​易盾业务风控周报每周呈报值得关注的安全技术和事件,包括但不限于内容安全.移动安全.业务安全和网络安全,帮助企业提高警惕,规避这些似小实大.影响业务健康发展的安全风险. 1.微信支付SDK被曝XXE漏 ...

  3. 微信支付SDK的使用

    在此记录一下微信支付sdk的使用 使用微信支付SDK理所应该去看官方文档,按步骤一步步来就好了,怎么还需要写博客呢? 答案是因为使用支付SDK时,遇到了很多弱智的坑,希望后来人不要和我一样SB就好. ...

  4. 微信支付SDK接入流程梳理

    微信SDK的支付功能接入简单梳理. 首先说一下,你需要的官网都有,但是官网提供的东西不管新旧与否先给你放上去,部分地方提供的链接点击时还提示404,不同的页面提示相同的下载内容(demo)还不一样,表 ...

  5. tp5 微信支付sdk

    接触到微信支付,然而微信官方给出的微信支付sdk用起来不太方便,在原来微信支付sdk上进行了修改,测试过能用,现在我的tp5项目都用这个,分享出来大家研究研究,新手一枚,望大神们能指出错处. git地 ...

  6. 微信支付SDK 中 PHP Certificate Downloader 微信支付 APIv3 平台证书的命令行下载工具 使用教程

    使用环境 在linux 环境中使用 (没有服务器可以使用虚拟机 复制到本地) windows环境很麻烦 使用前准备 商户号.商户证书序列号.商户私匙文件(pem格式).ApiV3密钥 安装好 微信支付 ...

  7. iOS SDK开发系列三之微信支付SDK封装Demo以及xcodebuild简单打包脚本实现

    前言 SDK开发系列文章一 SDK开发系列文章二 之前两个文章介绍了Cocoapods的原理,Xcode环境变量以及动态库和静态库的介绍,这些基本知识就单独抽出来了,方便以后翻阅.看了一遍网上的一些静 ...

  8. 微信支付sdk被曝xxe漏洞,漏洞原理分析

    2019独角兽企业重金招聘Python工程师标准>>> 昨日在国外安全社区seclists有一个署名叫Rose Jackcode的白帽子公布了微信支付sdk的一个严重的安全漏洞(xx ...

  9. Unity接入微信支付SDK

    最近1年转了UE开发,博客更新的比较少,技术栈宽了不少,以后有空尽量多更新,也方便总结记忆 Unity接入微信支付整个过程坑比较多,网上之前的教程要么比较老,要么比较零碎,只能东拼西凑摸索,跑通后还是 ...

  10. 微信小程序开发笔记 支付篇④——基于微信支付SDK实现Java后端接口使用

    文章目录 一.前文 二.微信支付 Java SDK 三.示例 一.前文 微信小程序开发笔记--导读 微信支付-SDK与DEMO下载 先看README.md 二.微信支付 Java SDK 对微信支付开 ...

最新文章

  1. 去除RNA-seq数据批次效应
  2. 全球及中国车载扫地机行业销售前景态势与运营盈利分析报告2022版
  3. 赋能普通用户,面向专业级的视频内容制作技术
  4. LeetCode 2200. 找出数组中的所有 K 近邻下标
  5. 浙大PAT甲级1006
  6. 前端基础8:HTML5新增标签及CSS3新属性 viewport 动画
  7. 跟着 Microsoft 跑!
  8. c语言编程流水灯与交通灯实验,51单片机c语言交灯设计报告.doc
  9. NERSim v1.09a 1CD+HyperMILL 2018.1
  10. leetcode刷题之x的算术平方根
  11. 笔记本如何解除锁定计算机,笔记本键盘锁住了怎么解锁 有三种方法可以解决...
  12. Apache POI 之 初学实战篇 (四) --- 文本对齐
  13. 【翻译】BKZ 2.0: Better Lattice Security Estimates 论文翻译
  14. Python17_项目实操关卡-人机PK
  15. [机器学习] - 岭回归与Lasso回归
  16. SolidWorks宏工具介绍——初识宏工具
  17. GAN生成对抗网络基础知识
  18. GPS标准历书Yuma,Rinex,TLE,SEM是什么意思?
  19. 基于Inception v2实现判别mnist手写数据集
  20. 【学习笔记】状态转移矩阵

热门文章

  1. 2020江苏事业编计算机类真题,2020江苏事业单位计算机类岗位考情
  2. pacman 查询_Pacman 命令记录
  3. 南昌工学院计算机科学与技术专业,南昌工程学院特色专业介绍_计算机科学与技术_专业课程介绍_专业排名_就业方向...
  4. ​独家 | 为什么程序员不应该长期留在一家公司?
  5. Coursera 申请助学金流程和材料
  6. 部队计算机专业培训申请书,《计算机专业奖学金申请书》.docx
  7. Leetcode 2029. 石子游戏 IX
  8. Colorbox 参数设置-中文版
  9. IE8开发者工具 有打开却看不见
  10. python列表获取最后一项_如何在Python中获取列表的最后一项?