V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
maliming
V2EX  ›  微信

微信支付这个回调传参方式也是无敌了.

  •  
  •   maliming · 2018-06-04 17:54:23 +08:00 · 3066 次点击
    这是一个创建于 2154 天前的主题,其中的信息可能已经有所发展或是发生改变。

    官方文档:支付结果通知

    代金券 ID coupon_id_$n 代金券或立减优惠 ID,$n 为下标,从 0 开始编号

    单个代金券支付金额 coupon_fee_$n 单个代金券或立减优惠支付金额,$n 为下标,从 0 开始编号

    <xml>
    <appid>wx2421b1c4370ec43b</appid>
    .........
    <coupon_id_0>balabala</coupon_id_0>
    <coupon_id_1>balabala</coupon_id_1>
    <coupon_id_2>balabala</coupon_id_2>
    ........
    <coupon_fee_0>balabala</coupon_fee_0>
    <coupon_fee_1>balabala</coupon_fee_1>
    <coupon_fee_2>balabala</coupon_fee_2>
    </xml>

    回调这么搞,后台没法定义模型呀! ╮(╯_╰)╭

    11 条回复    2019-08-09 11:10:18 +08:00
    torbrowserbridge
        1
    torbrowserbridge  
       2018-06-04 18:04:19 +08:00 via Android
    没法定义模型是什么鬼
    xgfan
        2
    xgfan  
       2018-06-04 18:06:20 +08:00
    估计腾讯自己用字符串拼起来的,压根没准备考虑反序列化的问题。
    est
        3
    est  
       2018-06-04 18:15:48 +08:00
    哈哈哈,谁叫你们用静态语言。。。

    动态语言一把梭!
    sdrzlyz
        4
    sdrzlyz  
       2018-06-04 18:21:41 +08:00 via Android
    意外不意外,惊喜不惊喜?
    jjianwen68
        5
    jjianwen68  
       2018-06-04 18:34:03 +08:00 via Android
    水平参差不齐
    moult
        6
    moult  
       2018-06-04 18:34:55 +08:00 via iPhone
    哈哈哈。。。php 用户表示很淡定。。。
    一定要定义模型的话只能单独处理了。。不能直接反序列化。。
    oovveeaarr
        7
    oovveeaarr  
       2018-06-04 19:19:58 +08:00
    dirty workaround 定于 100 个)
    prolic
        8
    prolic  
       2018-06-04 19:21:41 +08:00 via Android
    应该能处理成 map 吧
    param
        9
    param  
       2018-06-05 01:32:41 +08:00 via Android
    后台用的 Java ?
    maliming
        10
    maliming  
    OP
       2018-06-05 08:42:22 +08:00
    @param net
    ragnaroks
        11
    ragnaroks  
       2019-08-09 11:10:18 +08:00
    如果有人遇到这个问题的话:

    ```csharp
    String _originXml=WxpayResponse.Content;
    Regex regex_id=new Regex(@"^\<coupon_id_(?<id>\d+)\>\<\!\[CDATA\[(?<id>\d+)\]\]\>\<\/coupon_id_\d+\>$",RegexOptions.Compiled|RegexOptions.Multiline);
    Regex regex_fee=new Regex(@"^\<coupon_fee_(?<fee>\d+)\>(?<fee>\d+)\<\/coupon_fee_\d+\>$",RegexOptions.Compiled|RegexOptions.Multiline);
    MatchCollection mc_id=regex_id.Matches(_originXml);
    MatchCollection mc_fee=regex_fee.Matches(_originXml);
    if(mc_id.Count<1 || mc_fee.Count!=mc_id.Count){return;}
    StringBuilder sb=new StringBuilder();
    for(Int32 i = 0;i<mc_id.Count;i++) {
    Console.WriteLine($"coupon_id_{i}={mc_id[i].Groups[1].Value}");
    Console.WriteLine($"coupon_fee_{i}={mc_fee[i].Groups[1].Value}");
    }
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2984 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:21 · PVG 22:21 · LAX 07:21 · JFK 10:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.