maliming
V2EX  ›  微信

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

  •  
  •   maliming · Jun 4, 2018 · 3775 views
    This topic created in 2908 days ago, the information mentioned may be changed or developed.

    官方文档:支付结果通知

    代金券 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 replies    2019-08-09 11:10:18 +08:00
    torbrowserbridge
        1
    torbrowserbridge  
       Jun 4, 2018 via Android
    没法定义模型是什么鬼
    6IbA2bj5ip3tK49j
        2
    6IbA2bj5ip3tK49j  
       Jun 4, 2018
    估计腾讯自己用字符串拼起来的,压根没准备考虑反序列化的问题。
    est
        3
    est  
       Jun 4, 2018
    哈哈哈,谁叫你们用静态语言。。。

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

    ```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}");
    }
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3580 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 309ms · UTC 10:31 · PVG 18:31 · LAX 03:31 · JFK 06:31
    ♥ Do have faith in what you're doing.