• 微信支付V3版本的那些事


    最近在接入微信支付这块功能,博客园也有很多博友发表了支付的各种吐槽和解决之道,基于那些经验分享之上,我也来说说我的填坑之路。

    1:准备工作,首先去申请注册一个公众号——服务号,然后将微信支付功能开通,获得一系列的微信给你分配的商户资料(重要的是商户号),然后在微信支付商户中心设置支付密钥,这个密钥在统一下单和微信签名里面要用到。

    2:搭建自己的支付框架项目,开始用自己熟悉的语言开发前台支付页面和后台接口,这里可能因技术栈不同,而会衍生出多种版本,你可以基于PHP,JAVA,C#,NODEJS。

    3:然后当你项目能生成订单,进入支付后,开始我们今天的核心介绍=》微信支付(暂只介绍网页支付方式JS-API),稍后会说明我的一些难点。

    4:调用微信支付统一下单接口(https://api.mch.weixin.qq.com/pay/unifiedorder),传递下单参数,主要是签名逻辑要正确,然后各个版本都已经有很多源码了,注意几个地方:

          4.1:终端IP是你微信商店线上(或测试)服务器IP。

          4.2:统一下单签名参数名都是小写。

          4.3:网页支付需要参数openid

          4.4:订单金额单位是分,整型,不能是浮点型

    5:统一下单成功后,返回预支付标识prepay_id,这个在网页支付中需要用到。

    6:开始调用javascript的支付方法,这里可以使用JS-SDK的支付方法chooseWXPay,也可以用微信浏览器原生对象WeixinJSBridge,不同的是里面的参数要注意大小写问题,由于微信内部编程人员可能不同,导致他们参数出现了一些大小写不统一的问题,深表失望,也给广大开发者上了一堂课,在做第三方开放接口的同时,一定要制定统一的编码规则(具体是timeStamp这个参数,注意appId这个参与签名的参数大小写问题,前台调用和后台签名参数大小写必须保持一致,但是统一下单接口签名是例外,这也是微信支付的一个坑)

    7:如果签名不正确,检查参数大小写,最后支付要设置授权目录,如果支付报 _invalid appid ,应该就是授权目录的问题,规则,授权目录一定是支付页面所在的目录,例如支付页面URL是:http://mydomain/weixin/pay/pay.php ,那授权目录是:http://mydomain/weixin/pay/ 最后有斜杠,特别注意,很多同学也已经开始开发SPA微信网页应用,最新版本微信已经支持Html5 pushstate 特性 本人用angularjs 开启了此特性 ,页面URL 经过angularjs 内部转换后呈现在地址栏 等价于真是的URL,只是基于URL友好性,而且能解决微信只需要授权一次的问题,不然每个页面都需要微信授权,授权目录也应该基于此友好URL来设置,不然会遇到支付失败的问题

    8:以上是经验总结,基于网上代码太多,不放置代码,任何问题可以留言讨论。

  • 相关阅读:
    《selenium2 python 自动化测试实战》(13)——上传文件
    《selenium2 python 自动化测试实战》(12)——跳过验证码登录add_cookie
    《selenium2 python 自动化测试实战》(11)——selenium安装版本
    《selenium2 python 自动化测试实战》(10)——下拉框和alert
    《selenium2 python 自动化测试实战》(9)——切换窗口
    《selenium2 python 自动化测试实战》(8)——定位iframe
    《selenium2 python 自动化测试实战》(7)——定位一组对象
    《selenium2 python 自动化测试实战》(6)——打印信息和设置等待时间
    个人前端碰到一些小问题
    ssh 免密登录
  • 原文地址:https://www.cnblogs.com/apsnet/p/4708781.html
Copyright © 2020-2023  润新知