微信扫码支付开发流程和分析

1 分类说明

  • 1.1 模式一
模式一
  • 1.2 模式二
模式二

总结:根据官方文档配合现有网站业务,选择模式二来作为微信扫码支付方式。原因是:
流程更加简单 2. 支付二维码有效期控制在2小时 3. 支付请求更加主动

2 业务流程

  • 2.1 选择充值金额
  • 2.2 调用微信统一下单方法,同时网站内部产生支付订单
  • 2.3 获取微信统一支付方法返回的支付链接
  • 2.4 将支付链接作为内容生成支付二维码
  • 2.5 支付二维码展示给用户
  • 2.6 手机端用户长按二维码,微信调用支付功能
  • 2.7 网站主动发起订单查询方法
  • 2.8 对微信异步通知结果进行处理

3 功能实现

  • 3.1 微信充值接口
    url: http://api.xx/wxpay/recharge
    method: POST
    params:
    u 用户有效token
    quantity 充值数量
    openid 用户在微信公众号下唯一识别编号
    type 微信支付类型,JSAPI(公众号支付)、NATIVE(扫码支付)

  • 3.2 微信支付下单组件
    Core\Unlity\WxPay\WxPayCoreAPI::unifiedorder()

  • 3.3 bacon-qr-code composer package 生成二维码
    composer.json 添加 bacon/bacon-qr-code使用:

      $renderer = new \BaconQrCode\Renderer\Image\Png();
      $renderer->setHeight(256);
      $renderer->setWidth(256);
      $writer = new \BaconQrCode\Writer($renderer);
      $writer->writeFile('Hello World!', 'qr.png');
    
  • 3.4 展示支付二维码
    因为需要在模板中显示,所以在生成二维码时将图片保存在服务器静态域下通过 http 或 https 访问显示支付二维码。

  • 3.5 调用支付功能(微信自身调用)
    微信客户端中长按二维码微信会自动识别支付链接然后调用支付功能插件。

  • 3.6 订单查询(网站主动查询)
    因为微信扫码支付未提供有效的同步通知结果,所以最后想到的办法就是手动向微信服务器查询订单处理结果,然后配合网站业务完成支付操作所有步骤。

  • 3.7 异步通知结果处理
    微信异步通知是直接对服务器响应处理结果,内网无法获取。所以做好日志记录操作,然后根据响应结果和现有网站记录信息来验证订单,验证通过后内部订单状态更新并对微信响应处理结果。因为微信通知频率为15/15/30/180/1800/1800/1800/1800/3600,单位:秒,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知。

4 Q&A

  • 4.1 微信扫码支付方式选择
    微信提供 2 种扫码支付方式,从开发时间和业务实际考虑上,选择模式二更有优点。
  • 4.2 支付二维码生成
    微信官方提供的 SDK 中有提供生成二维码的工具类文件,但是因为和现有框架不能很好兼容,调整时间较长所以最后解决办法是在composer中找到一个被很多人使用的包来作为生成二维码的工具。
  • 4.3 下单帐号和支付帐号不一致问题
    个人在开发环境中调试不存在这个问题,当多人同时验证支付功能时候就会出现,原因是在早期生成支付二维码时只生成一张图片但是被多人使用,这样就会存在下单帐号和支付帐号不一致问题并且有时候会出现本人充值的金额前后不一致问题,原因都是因为支付二维码不存在唯一性。
  • 4.4 二维码在微信客户端页面显示问题
    目前在微信客户端中存在微信支付二维码无法显示内容,从生成二维码方法中未检查到原因,所以这个问题在后期优化中需要继续研究。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容