支付这东西,说容易也容易,说难也难

代码这玩意还比较好说 但是 如果没有demo 直接去看官方文档

十有八九一脸懵逼 今天就整理一下 支付这块走过的坑 涉及 微信h5支付 支付宝h5支付

(api文档真的是给人类看的么 手动滑稽)

微信h5支付

一、支付账号申请

既然说是h5支付 那就要走手机网页

需要申请 微信公众号 和 微信商户号(相关材料注册时会提示)

此处有坑

微信商户号的注册地址不知为何 放的有点隐蔽

商户平台首页 -》 右上角帮助中心-》自助服务专区-》申请接入教程(新版)-》接入指引-》微信支付商户接入指引

-》找到立即申请 点击就可注册

放的这么里面 以至于 好几次都没发现

另外 开通h5支付 不需要去注册微信开放平台 因为开放平台的网页应用只涉及微信登录

此外 微信公众号的支付功能也不需要开通 只需要开通商户 绑定公众号的appid即可

二、支付环境配置

支付环境需要在商户平台配置

首先开通产品大全下的支付产品

接着 去账户中心下的api安全配置

配置key

此处有坑

版本比较早的 Chrome 可能无法安装腾讯的安全控件 切换到ie环境即可

最后去产品中心查看appid是否和公众号的appid绑定

三、支付代码

腾讯的h5支付没有sdk 验证 加密 验签 都需要自己来写

文档写的还算比较全

但是 还是有几处坑

支付完成的同步跳转(支持get形式传参)  正经的统一下单api接口没有提到

只是在开发步骤和常见问题里面提了一下

一、回调页面

正常流程用户支付完成后会返回至发起支付的页面,如需返回至指定页面,则可以在MWEB_URL后拼接上redirect_url参数,来指定回调页面。

如,您希望用户支付完成后跳转至https://www.wechatpay.com.cn,则可以做如下处理:

假设您通过统一下单接口获到的MWEB_URL= https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096

则拼接后的地址为MWEB_URL= https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096&redirect_url=https%3A%2F%2Fwww.wechatpay.com.cn

注意:
1.需对redirect_url进行urlencode处理 2.由于设置redirect_url后,回跳指定页面的操作可能发生在:
  1,微信支付中间页调起微信收银台后超过5秒
  2,用户点击“取消支付“或支付完成后点“完成”按钮。因此无法保证页面回跳时,支付流程已结束,所以商户设置的redirect_url地址不能自动执行查单操作,应让用户去点击按钮触发查单操作。回跳页面展示效果可参考下图

但是由于同步跳转无法判断用户是否支付完成

必须要手动让用户触发查单的申请

统一下单接口的sign生成也需要注意按照官方的排序和规则走

提供下面这个官方的工具 支持验证sign是否生成正确

微信公众平台支付接口调试工具

四、支付回调

回调也是需要验证 sign 也就是把官方给的xml数据去除sign 处理后 生成新的sign 对比是否合法即可

此处有坑

微信支付的金额都是以分为单位

sign验证时 注意转成大写

五、支付持续回调

支付持续回调需要在验证完数据之后 打印

 return sprintf("<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>");

即可停止

 微信app支付

app支付和h5支付相比 改变了些许参数 详细参数 统一下单文档

此处有坑

签名部分改动较大 从h5的签名一次 改为签名两次 且参数固定

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3

/**步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appid,partnerid,prepayid,noncestr,timestamp,package。注意:package的值格式为Sign=WXPay**/

后面的步骤就是app去处理 以及处理回调信息了

 

不管支付回调验证成功与否 记得保存回调日志

php支付走过的坑(微信篇 包含h5支付和app支付 注册 秘钥 环境等等配置)的更多相关文章

  1. php支付走过的坑(支付宝篇 注册 秘钥 环境等等配置)

    支付这东西,说容易也容易,说难也难 代码这玩意还比较好说 但是 如果没有demo 直接去看官方文档 十有八九一脸懵逼 今天就整理一下 支付这块走过的坑 涉及 微信h5支付 支付宝h5支付 (api文档 ...

  2. 微信小程序笔记<三>入口app.js —— 注册小程序

    小程序开发框架在逻辑层使用的语言就是JavaScript,所以想玩小程序JavaScript的基本功一定要扎实.但小程序基于js做了一些修改,以方便开发者更方便的使用微信的一些功能,使得小程序更好的贴 ...

  3. 微信浏览器内 h5 直接唤醒 app 之 微信开放标签 wx-open-launch-app

    以前微信浏览器内想要直接唤醒 app 要么接微信的应用宝要么你是腾讯的干儿子. 而在微信在2020年5月分推出了“微信开放标签”功能 wx-open-launch-app 用于微信浏览器内直接唤醒 a ...

  4. 拼多多(7pdd)微信跳转h5页面打开app跳转任意url关注技术weixin://dl/business/?ticket

    拼多多微信跳转接口利用了微信官方的weixin://dl/business/?ticket技术,此类接口可以在官方接口中找到,分析代码如下: <title>拼多多</title> ...

  5. 微信支付遇到的坑---缺少参数total_fee

    今天在做微信砍价成功后支付,出现了这个报错 看到报错后,去找total_fee这个参数,调试了半天,total_fee是确定有值的 微信支付的步骤 ① 预支付 商户号,商户秘钥,appid,appse ...

  6. 浅析微信支付:微信支付简单介绍(小程序、公众号、App、H5)

    本文是[浅析微信支付]系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处. 上篇文章讲了本系列的大纲,没有看过的朋友们可以看一下. 浅析微信支付:前篇大纲 微信支付是集成在微信客户 ...

  7. APP支付报错ALI40247处理方案!

    简直日狗!这里要吐槽支付宝: 1.支付宝文档太复杂,分类虽然详细,但是我找不到app支付 对应服务端的demo 2.提供下载的sdk都是全整合的 用下来都是一条龙服务,还有一些客户端(app)的请求也 ...

  8. 支付宝APP支付之Java后台生成签名具体步骤

    /** *支付宝支付 * @param orderId 订单编号 * @param actualPay 实际支付金额 * @return */ private String getOrderInfoB ...

  9. 支付宝 app支付 沙盘使用

    文档说明 沙箱测试: App支付沙箱接入注意点 1.app支付支持沙箱接入:在沙箱调通接口后,必须在线上进行测试与验收,所有返回码及业务逻辑以线上为准:2.app支付只支持余额支付,不支持银行卡.余额 ...

随机推荐

  1. Chrome 67 以后版本无法离线安装crx插件

    原文链接:https://blog.csdn.net/wanwuguicang/article/details/80716178 升级了Chrome后无法离线安装扩展 如图: 谷歌自Chrome 67 ...

  2. 【NOIP 2009】靶形数独

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶 ...

  3. Leetcode 121. Best Time to Buy and Sell Stock 最佳股票售卖时(动态规划,数组,模拟)

    题目描述 已知一个数组,第i个元素表示第i天股票的价格,你只能进行一次交易(买卖各一次),设计算法找出最大收益 测试样例 Input: [7, 1, 5, 3, 6, 4] Output: 5 最大收 ...

  4. angularJs分层服务开发

    //控制层 app.controller('brandController' ,function($scope,$controller ,brandService){ $controller('bas ...

  5. java 的开发工具IDEA使用 中Debug 调试工具使用

    IDEA JetBrains(这个公司的名称翻译过来就是“大脑喷射?”) 公司的宣传语是这么说的:Develop with pleasure!(带着快乐开发!)   话不多说 开始debug   1, ...

  6. vs 部署SharePoint项目时, package丢失

    bug描述:vs部署sharepoint项目时报错:重启iis应用池失败,未将对象设置引用到实例. 解决方案:查看项目文件(包括隐藏文件),发现package文件不见了,在回收站内能找到被删除的pac ...

  7. Gym - 101572D Distinctive Character bfs 思维

    题目传送门 题目大意: 给出n个01串,让你构造一个字符串,使这个字符串和这些字符串中相似程度最高 尽可能低.如果两个字符串对应位置相同,则相似程度加一. 思路: 每一个01串更改自己的一部分后,都可 ...

  8. 江西财经大学第一届程序设计竞赛 B

    链接:https://www.nowcoder.com/acm/contest/115/B来源:牛客网 题目描述 给出一个出生日期,比如:1999-09-09, 问:从出生那一天开始起,到今天2018 ...

  9. 74th LeetCode Weekly Contest Number of Subarrays with Bounded Maximum

    We are given an array A of positive integers, and two positive integers L and R (L <= R). Return ...

  10. linux dns高速缓存

    1.安装部署dns yum install bind -y systemctl start  named systemctl  enable  named systemctl  stop  firew ...