微信H5支付整理

官方 流程图 https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_3

官方案例 http://wxpay.wxutil.com/mch/pay/h5.v2.php

首先要申请开通微信H5支付

开通中可能会遇到的问题:

(1)网站域名ICP备案主体与商户号主体不一致。

解决版本:申请域名的授权即可。

开通成功后H5支付流程:

调用统一下单接口:https://api.mch.weixin.qq.com/pay/unifiedorder

1、用户在商户侧完成下单,使用微信支付进行支付

2、由商户后台向微信支付发起下单请求(调用统一下单接口)注:交易类型trade_type=MWEB

3、统一下单接口返回支付相关参数给商户后台,如支付跳转url(参数名“mweb_url”),商户通过mweb_url调起微信支付中间页

4、中间页进行H5权限的校验,安全性检查(此处常见错误请见下文)

5、如支付成功,商户后台会接收到微信侧的异步通知

6、用户在微信支付收银台完成支付或取消支付,返回商户页面(默认为返回支付发起页面)

7、商户在展示页面,引导用户主动发起支付结果的查询

8,商户后台判断是否接到收微信侧的支付结果通知,如没有,后台调用我们的订单查询接口确认订单状态

9、展示最终的订单支付结果给用户

代码实现:

       $body= $data['body']; //商品描述             $total_amount = $data['total_amount']*100; //金额$order_id = $data['order_id']; ////订单号$nonce_str=MD5($order_id);//随机字符串$spbill_create_ip = $data['spbill_create_ip']; //终端ip$trade_type = 'MWEB';//交易类型 具体看API 里面有详细介绍$notify_url = 'http://xy.xxx.com/callback'; //回调地址$scene_info ='{"h5_info":{"type":"Wap","wap_url":"http://xy.xxx.com","wap_name":"测试支付"}}'; //场景信息
        //对参数按照key=value的格式,并按照参数名ASCII字典序排序生成字符串$signA = "appid=$appid&body=$body&mch_id=$mch_id&nonce_str=$nonce_str&notify_url=$notify_url&out_trade_no=$order_id      &scene_info=$scene_info&spbill_create_ip=$spbill_create_ip&total_fee=$total_amount&trade_type=$trade_type";$strSignTmp = $signA."&key=$key"; //拼接字符串$sign = strtoupper(MD5($strSignTmp)); // MD5 后转换成大写$post_data = "<xml><appid>$appid</appid><body>$subject</body><mch_id>$mch_id</mch_id><nonce_str>$nonce_str</nonce_str><notify_url>$notify_url</notify_url><out_trade_no>$order_id</out_trade_no><scene_info>$scene_info</scene_info><spbill_create_ip>$spbill_create_ip</spbill_create_ip><total_fee>$total_amount</total_fee><trade_type>$trade_type</trade_type><sign>$sign</sign></xml>";//拼接成XML 格式$url = "https://api.mch.weixin.qq.com/pay/unifiedorder";//微信传参地址$dataxml = $this->http_post($url,$post_data); //后台POST微信传参地址  同时取得微信返回的参数,http_post方法请看下文$objectxml = (array)simplexml_load_string($dataxml, 'SimpleXMLElement', LIBXML_NOCDATA); //将微信返回的XML 转换成数组if($objectxml['return_code'] == 'SUCCESS')  {if($objectxml['result_code'] == 'SUCCESS'){//如果这两个都为此状态则返回mweb_url,详情看‘统一下单’接口文档return $objectxml['mweb_url']; //mweb_url是微信返回的支付连接要把这个连接分配到前台}if($objectxml['result_code'] == 'FAIL'){        return $err_code_des = $objectxml['err_code_des'];

      }}

成功的回调信息

<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>

支付过程中会遇到一些错误,大多为配置原因造成可参照官网中的错误信息进行配置调整:

错误信息对照地址:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4

微信H5支付功能小结相关推荐

  1. 微信开发h5支付功能,配置单价和商品信息无法更新问题解决方法!

    微信开发h5支付功能,配置单价和商品信息无法更新是因为没有开通h5支付的问题,登录微信商户平台后台开通h5支付产品即可.

  2. android微信支付都需要什么意思,Android开发微信APP支付功能的要点小结

    基本概念 包名值得是你APP的包,在创建工程时候设置的,需要在微信支付平台上面设置. 签名指的是你生成APK时候所用的签名文件的md5,去掉:全部小写,需要在微信支付平台上面设置. 调试阶段,签名文件 ...

  3. Android 应用内微信 H5 支付

    一般情况下,要实现应用内支付接入 App 支付 SDK 即可满足业务需求,不过考虑到对于一些类似游戏中心的场景,更多是需要支持 H5 支付.相对微信来说,支付宝的对接简单完善很多,所以本篇文章主要说说 ...

  4. php微信h5支付demo,微信h5支付 demo-HTML5微信支付DEMO下载 最新版--pc6下载站

    在微信支付已经霸占了大部分人生活习惯的年代,一个不支持微信支付的商家都不好意思开店了,程序猿们可以下载查看HTML5微信支付DEMO来帮助您熟悉微信支付的代码,马上下载查看微信h5支付demo的内容吧 ...

  5. 【第二十篇】C#微信H5支付 非微信内浏览器H5支付 浏览器微信支付

    微信开发者文档 微信H5支付官方文档   请阅读清楚  最起码把所有参数看一遍 这个地方也可以看看 微信案例 http://wxpay.wxutil.com/mch/pay/h5.v2.php,请在微 ...

  6. h5支付不能打开支付宝 ios_iOS 解决微信h5支付,支付宝h5支付无法直接返回APP的问题...

    由于公司的业务需要,为了节省申请开通微信支付的时间和人力,公司决定使用微信h5支付.这样即节省了时间,同时以后所有的APP都能使用h5支付,既方便又快捷. 但是真正做的时候问题来了,当你支付成功之后或 ...

  7. 【微信开发第四章】SpringBoot实现微信H5支付

    前言 在进行微信公众号业务开发的时候,微信支付可以说是非常重要的一环.该篇文章每一步都有记录,力争理解的同时各位小伙伴也能够实现功能 文章目录 前言 1.公众号配置 2.微信支付实现代码 总结 1.公 ...

  8. app中接入微信H5支付总结

    1. 支付宝app支付  2. 支付宝当面付 3. 支付宝手机网站支付 1.为什么没有直接接入微信app支付,而是采用H5支付? 因为app支付需要另外去微信开放平台申请一个appId,而公司的app ...

  9. 解决iOS微信H5支付跳转微信后不返回App问题(Swift-WKWebview)(转)

    解决iOS微信H5支付跳转微信后不返回App问题(Swift-WKWebview)(转) 参考文章: (1)解决iOS微信H5支付跳转微信后不返回App问题(Swift-WKWebview)(转) ( ...

最新文章

  1. 字节跳动AI Lab社招以及实习生内推
  2. 深度学习多变量时间序列预测:GRU算法构建时间序列多变量模型预测交通流量+代码实战
  3. html你可能还不知道的一些知识点
  4. Java实现根据地理位置获取经纬度
  5. 操作 实例 / dom
  6. 浏览器加载js的阻塞与非阻塞
  7. Python3连接MySQL
  8. spring boot项目下的application.properties中的logging.level设置日志级别
  9. 如何在硅谷一夜暴富?
  10. Ubuntu系统日志分析
  11. [转载] python通过反射执行代码
  12. Xeen的Source Safe 备份
  13. 二手笔记本电脑电池测试软件,笔记本电池修复软件Battery Doubler V1.2.1免费已注册版...
  14. 查看各大网站服务器操作系统
  15. 什么是抽象类?抽象类有什么特点?举例说明抽象类及其成员的定义方法。
  16. 科兴新冠疫苗获准紧急用于巴西3至5岁儿童
  17. 推荐一个在上海买中老年服饰的地方
  18. Java工具集-哈希(HashUtil)
  19. BZOJ 1123 POI2008 BLO Tarjan+树形DP
  20. iso转cue mac_mac如何播放cue文件?

热门文章

  1. Ubuntu NVIDIA Intel双显卡,安装NVIDIA驱动
  2. Python学习日记 第九天 EX20-21
  3. hi3531的pcie atu资源重映射
  4. Lombok之@NonNull使用
  5. 专利申请所需资料、手续有哪些?
  6. Java题库后台管理系统
  7. C语言实现拉格朗日插值法和牛顿插值法
  8. 三大运营商官方防骚扰电话屏蔽教程
  9. Linux下chmod命令的含义
  10. 《Android App开发进阶与项目实战》资源下载和内容勘误