关于微信支付的疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
evolify
V2EX    Java

关于微信支付的疑问

  •  
  •   evolify Oct 28, 2017 5145 views
    This topic created in 3105 days ago, the information mentioned may be changed or developed.

    微信文档里面的流程是:用户下单后,后台会调用统一支付 api,获取到 prepay_id 等参数,然后签名,返回相关数据给微信端,然后微信端发起支付。 现在我做的是,用户下单后。点击确认支付,然后付款。我不确定统一下单这一步放在哪儿。

    如果是放在用户点击确认支付这一步,那么用户在微信端发起付款后,可以取消支付,或者余额不足等等。然后当他再次点击确认支付的时候,后台会重复提交统一下单。这样会报错,因为订单号重复。 如果实在用户下单的时候,就请求了统一支付。这个时候还没到用户付款这一步,那这样做 prepay_id 这些信息就需要保存下来,放到数据库?或者 redis ?之后支付的时候直接取出来发给微信端,然后微信端付款。 不知以上哪种流程合理一点?请大家指点指点。 
    6 replies    2017-10-29 07:23:18 +08:00
    kechx
        1
    kechx  
       Oct 28, 2017 via iPhone
    第一种,同一个方式如果如果不发生价格变化,不会报重复,不同方式才会,公众号支付加固定后缀。
    arischow
        2
    arischow  
       Oct 28, 2017 via iPhone   1
    prepay_id 不需要保存起来,这个 id 有效期是两小时,期间有新的 prepay_id 生成,它也不会失效。所以如果用户取消支付了的话再去调用一次统一下单就可以了。
    pubby
        3
    pubby  
       Oct 28, 2017
    设计上有点问题,订单是订单,支付是支付

    order:
    O6789 "商品" ¥ 12.00 等待支付

    trade:
    T1234 O6789 "微信支付" ¥ 12.00 <prepay_id> 正在支付
    用户取消后再次支付就再生成一条,( prepay_id 超时之前可以继续用上面一条):
    T1235 O6789 "微信支付" ¥ 12.00 <prepay_id2> 支付完成 -> 操作 O6789 的状态 -> 已支付

    trade 可以扩展为支持不同的支付渠道,微信支付,支付宝,银联....
    dangyuluo
        4
    dangyuluo  
       Oct 29, 2017
    一楼回答没错,我们是这么做的,用户购买有个确认界面,要求输入地址、电话、备注等。用户输入完成后点击确认,服务器生成这个订单,并根据这个订单 id 及金额向微信统一下单服务器发送请求,得到 prepay_id,返回给前台。
    前端收到这个统一下单 id 后,调用支付接口,微信就会弹出来支付输入密码。支付完成后可以用成功的回调 js 代码。
    统一下单 api 被调用的时候一定要给一个通知地址,不能根据前端 js 来获取的支付结果,不安全。
    evolify
        5
    evolify  
    OP
       Oct 29, 2017 via iPhone
    @RihcardLu 嗯嗯,谢谢。我现在是这么做的。
    evolify
        6
    evolify  
    OP
       Oct 29, 2017 via iPhone
    @pubby 谢谢
    About     Help     Advertise     Blog     API     FAQ     Solana     5462 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 08:37 PVG 16:37 LAX 01:37 JFK 04:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86