需要超级管理员帐号登录才可操作

1) 所有使用公众号支付方式发起支付请求的链接地址,都必须在支付授权目录之下;

2) 支付授权目录最多可以设置5个目录

3) 头部要包含http或https,须细化到二级或三级目录,以左斜杠“/”结尾。

业务中发起支付的页面地址必须在授权目录下,否则调用下单接口时会提示“当前页面的URL未注册”。

4) 授权回调页面域名:(用来jsapi支付的必须)

位置:微信支付——>接口权限——>网页授权获取用户基本信息

用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下,以确保安全可靠。

注意事项:

1) 回调页面域名需使用字母、数字及“-”的组合,不支持IP地址及端口号。填写的域名需与实际回调URL中的域名相同;

2) 填写的域名须通过ICP备案的验证。

获取用户授权时redirect_uri对应的URL必须在此域名下,否则回调的地址会无法打开。

开发步骤

说明:整个微信公众号支付的流程如下:

【1】用户点击公众号内微信商城打开H5的支付页面

【2】H5页面通过JS调用微信支付接口

【3】微信服务器通过判断输入的JSON数据,返回给客户端相应的成功或失败信息

官方demo结构如下:

1.JSAPI支付——H5网页端调起支付接口

1)用户同意授权,获取code

请求链接:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#we-chat_redirect

2) 如果有code,直接就通过code能获取用户openid

如果没有code,通过createOauthUrlForCode方法,传入必要参数,获取code

3) 如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。

若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数

redirect_uri?state=STATE

4) code说明以及scope的两种方式说明

【1】code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

这里获取到code 和 state(订单号) 后, 对订单进行验证,用户余额也进行验证,如果条件都满足则才能进行下面的流程。

【2】scope的两种方式说明:

微信提供了两种授权方式:snsapi_base和snsapi_userinfo。

snsapi_base:不弹出授权页面,直接跳转,只能获取用户openid;

snsapi_userinfo:弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息。

想要获取code,需要构造如下地址:

2. 通过code换取网页授权access_token (这里也获取到了openid)

1)请求链接:https://api.weixin.qq.com/sns/oauth2/access_token

?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

2)获取openid:openid是微信支付jsapi支付接口必须的参数

【1】如果网页授权的作用域为snsapi_base(静默授权),则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。

【2】如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。

3)getOpenid方法中调用createOauthUrlForOpenid方法获取openid

3. 调用统一支付接口获取预付款id (这里有个小技巧:你如果直接把表单提交到这里,那就傻逼了。 你的服务器会和微信服务器交互2次,等拿到openid,你提交的数据早就被刷掉了,你可以把它放在session或者缓存里面,然后重定向到下面这个页面,等拿到openid后再从session里面拿数据。)

官方文档说明:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1

1) 设置必传参数,按照签名参数产生签名, 此时参与签名字段有 : appid, mch_id , nonce_str, openid, body , out_trade_no, total_fee, notify_url , trade_type

2) 将必传参数转成xml,createXml方法。

3) 使用xml,请求统一支付接口 https://api.mch.weixin.qq.com/pay/unifiedorder

4) 得到xml格式的返回值结果

5) 将结果转成数组,获取预支付id

4. 使用jsapi调起支付

1. 通过getParameters方法设置必传参数,接口输入数据为json

2. 根据官方demo中jsapi.php 调起支付,得到支付结果

注:使用以上方式判断前端返回,res.err_msg 将在用户支付成功后返回 ok,但不保证它绝对可靠。

可能遇到的问题

1. 返回参数是xml,而不是直接输出success ,这个与微信app支付有区别。

2. 参与签名字段要保证一致,保证前后签名一样。

3. 由于存在重新发送后台通知的情况,因此同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。比如在支付成功后写入了支付日志,那么第二次回调前前判断是否已经有了支付日志,如果有,直接退出不作处理就好了。

4 . 当用户有余额,先用余额支付,剩下的才是微信 , 支付成功时,回调扣去余额

5. 如果同一笔订单号修改多次价格进行支付,第二次支付时,会出现生成预支付订单失败,主要原因是同一笔订单支付时,支付金额不能一样,或者给到第三方的订单号不一样,所以解决方法就是订单号+标志位(比如Z或A)+ 时间戳生成给到的第三方的支付号即可。

微信app支付统一下单设置回调地址php,微信支付配置回调地址相关推荐

  1. APP 对接 java 微信支付统一下单接口

    首先插入微信支付的时序图 统一下单时候的请求对象,需要把这个转为xml 文件格式所以需要在pom.xml 文件中导入 .和微信支付的sdk <dependency> <groupId ...

  2. 微信支付-----统一下单接口对接

    本以为没有机会接触鼎鼎大名的支付宝和微信接口(公司本身是做第三方支付的),最近由于一个售货机项目需要对接银联,支付宝和微信接口,因为我自身已经对接了银联,之后根据安排,由我对接微信的相关接口.话不多说 ...

  3. 微信V3 - 微信支付统一下单 --01

    准备工作: private static PrivateKey merchantPrivateKey; static { try { merchantPrivateKey = PemUtil.load ...

  4. SpringBoot实现小程序微信支付统一下单

    SpringBoot实现微信支付统一下单 最近做小程序有需要用到微信支付,而在页面拉起微信支付前需要先进行统一下单,然后再返回参数给前端调用微信支付wx.requestPayment.网上参考了很多代 ...

  5. 微信支付 统一下单 字段 body 为中文时 报【签名错误】解决方案(C# SDK)

    微信支付 统一下单 字段 body 为中文时 报[签名错误]解决方案(C# SDK) 参考文章: (1)微信支付 统一下单 字段 body 为中文时 报[签名错误]解决方案(C# SDK) (2)ht ...

  6. 【微信支付统一下单】JAVA与XML请求内容体的双向映射

    在微信支付统一下单接口文档中,请求体body和微信端返回值都是xml格式的内容. 例如: <!-- 请求微信端的内容 ---> <xml><appid>wx2421 ...

  7. 微信小程序快递java_java调用微信小程序统一下单接口

    java调用微信小程序统一下单接口 今天项目中对接微信支付这一块,记录一下 这是对接微信支付的开发文档地址 微信支付流程 流程分析: 我们可以看到,前端人员只用给我们一个code,我们通过code去获 ...

  8. 微信小程序支付统一下单接口and异步回调

     统一下单接口: <?phpnamespace pay;class WxPay {protected $appid;protected $mch_id;protected $key;protec ...

  9. app微信支付统一下单

    php版的 需要注意的地方记录一下 签名的加密方式为sha256 返回给客户端的参数全小写,不是驼峰 返回给客户端调起支付的签名统一下单的加密方式要一样,即sha256 open_id不用传(传了还有 ...

最新文章

  1. python随机画散点图-python散点图实例之随机漫步
  2. 使用泛型 ,做计算器
  3. Ubuntu用命令行发邮件mutt,报警发短信通知
  4. LeetCode 1122 数组的相对排序-简单-unordered_map容器的应用
  5. c语言从文件查找字符串,C语言文件中字符串的查找与替换?
  6. C语言小程序显示心形,如何用vc6.0编出来一个心形
  7. latex转为html效果好吗,latex2html
  8. uniapp滑动图片验证
  9. 进阶之路 | 奇妙的Activity之旅
  10. 计算机专业暑假实践心得7篇,计算机专业实习周记总结10篇
  11. python中终结一个循环的保留字_【单选题】以下可以终结一个循环的保留字是() (2.0分) A. if B. break C. exit D. continue...
  12. Laravel 留言评论功能
  13. 一、Numpy-4.数组的运算
  14. python画图y轴在右侧_Python 使用matplotlib画图添加标注、及移动坐标轴位置
  15. Among Us 限时免费下载
  16. 嵌入式是什么?arm是什么?
  17. 输入一个包含若干数据的列表,先将列表中的数由小到大进行排序,然后将值为负数的元素进行平方运算
  18. java-php-python-ssm记事网页计算机毕业设计
  19. 什么是流量网站流量的概念
  20. 深入理解CSS:font metrics, line-height 以及 vertical-align

热门文章

  1. jfinal mysql存储过程_jfinal如何调用存储过程?
  2. AI英雄 | 对话Gregory:机器智能和人类智力的不同 就像飞机和鸟的区别
  3. Flutter——Isolate主线机制
  4. 【云计算与虚拟化概论复习】
  5. 数值分析(五):C++实现一般实矩阵的QR分解
  6. 信息安全web入门——南邮ctf解题
  7. 互动媒体技术——创意编程
  8. 在主机使用代理上外网,如何使得docker容器可以上外网
  9. 威纶通触摸屏与台达变频器modbus通讯
  10. 日本蜡烛图分析技术:从入门到精通:读书笔记