• 微信支付之无感支付


    停车免密支付功能的开发  首先我们需要做的是申请微信商户号并开通微信代扣

    场景图

    前端功能开发:
    车辆进场
    车辆入场,停车场将用户车牌信息传给小程序。小程序根据车牌信息查询用户是否开通微信免密支付,将查询结果返回给停车场。
    车辆出场
    1、针对开通免密支付的车辆,车辆出场时停车场请求小程序的免密支付,小程序请求车主服务申请扣款将微信受理的结果返回给停车场。
    2、小程序订单受理成功,停车场受理失败,由用户线下缴费,停车场调取小程序接口冲正。小程序接到冲正提示,小程序判断用户是否支付成功,状态为支付成功时将用户付款原单退回。
    3、小程序订单受理失败,停车场受理失败,由用户线下缴费。
    4、小程序与停车场均受理成功,微信返回的异步返回扣款结果失败。
    1)已开通微信垫支,会由微信垫支给到第三方,再由微信通知用户缴费。
    2)未开通微信垫支,小程序后端会记录异常订单,由第三方联系用户缴费。

    开通免密支付流程
    1、车主服务 用户状态查询API对接;
    2、车主服务 授权开通API对接;
    3、车主服务 车牌状态变更通知API对接;(3是2的回调)
    4、停车场 2.5免密支付车辆签约接口;(如入场调取4)(查看停车场接口 RecordDensityPay实现)

    冲正流程
    1、提供冲正接口 (查看停车场接口PostCarCorrect实现)
    2、调用车主服务的申请退款。车主服务,申请退款API对接;
    3、车主服务 退款结果通知API对接;

    线下流程
    1、车主服务 申请退款API对接;
    2、车主服务 查询退款API对接;
    3、车主服务 查询订单API对接;
    4、车主服务 退款结果通知API对接;

    垫支流程:
    1、车主服务 微信垫支还款API对接;

    后端微信免密支付订单管理功能:
    1、订单查询管理(支付失败,已支付,已退款,冲正退款)
    2、异常订单查询管理(异步扣款失败)

    需要与停车场对接 微信支付对接 小程序对接

    小程序方面 需要开通微信免密支付 验证用户是否绑定车牌号

    删除车牌时 需要提示用户已经开通免密支付 需要解绑才能删除车牌

    与车主服务小程序对接,在用户点击微信免密支付时唤起车主服务小程序,将用户微信号及车牌号传给车主服务小程序。

    微信开发文档:https://pay.weixin.qq.com/wiki/doc/api/pap.php?chapter=18_3&index=8

    字典排序帮助类

    //字典排序
            public static string DictionaryRank(Dictionary<string, string> dic)
            {
                StringBuilder sb = new StringBuilder();
                if (dic.Count > 0)
                {
                    dic.OrderBy(r => r.Key).ToDictionary(r => r.Key, r => r.Value);
                    List<KeyValuePair<string, string>> lst = new List<KeyValuePair<string, string>>(dic);
                    lst.Sort(delegate (KeyValuePair<string, string> s1, KeyValuePair<string, string> s2)
                    {
                        return s1.Key.CompareTo(s2.Key);
                    });
                    dic.Clear();
    
                    for (int i = 0; i < lst.Count; i++)
                    {
                        sb.Append((i == 0 ? "" : "&") + lst[i].Key + "=" + lst[i].Value);
                    }
                }
                return sb.ToString();
            }

    调用微信支付接口并回调(具体参数查看接口文档)

  • 相关阅读:
    try? try! try do catch try 使用详解
    Swift Write to file 到电脑桌面
    NSLayoutConstraint 使用详解 VFL使用介绍
    automaticallyAdjustsScrollViewInsets 详解
    Swift 给UITableView 写extension 时 报错 does not conform to protocol 'UITableViewDataSource'
    OC Swift中检查代码行数
    Swift中 @objc 使用介绍
    SWift中 '?' must be followed by a call, member lookup, or subscript 错误解决方案
    Swift 中 insetBy(dx: CGFloat, dy: CGFloat) -> CGRect 用法详解
    求1000之内所有“完数”(注:C程序设计(第四版) 谭浩强/著 P141-9)
  • 原文地址:https://www.cnblogs.com/dujian123/p/11990349.html
Copyright © 2020-2023  润新知