今天来讲讲支付。

  工作到现在,接入过好几个项目的支付,其中涉及到了微信支付支付宝支付银联支付

  三种支付的对接感受其实整体上大同小异。都遵循同一个流程:

    1)、商户APP向商户服务器请求生成订单

    2)、商户服务器通过生成的订单编号向第三方支付平台请求签名信息返回给商户APP

    3)、商户APP拿到授权签名信息向第三方支付平台调起支付

    4)、用户支付完成

    5)、第三方支付平台向商户服务器发起支付结果回调

    6)、商户服务器根据回调信息处理业务逻辑

  接下来谈谈对比。

  1.文档和SDK对比

   总体感受是支付宝的文档的SDK最好用。面向对象很舒服。

   微信的开放平台/商户平台/公众平台初次接入者很容易混淆,搞不清楚哪个是哪个。

     银联的demo很详细,基本不需作多大改动就可以拿来用,只不过在环境配置上多了几个证书,签名和验签时都需要证书,稍显麻烦。

  2.前端调起支付所需参数对比

  相比之下,支付宝的SDK最方便,把所有参数和方法都封装成了面向对象的方式,清晰易懂。

  3.需要注意的地方

   

补充:

  1.如果调起了支付,然后回到商户app取消了订单,此时再跳转到第三方支付页面去支付,并且支付成功了。这种情况,本来应该是请求第三方平台关闭订单,但是支付宝和微信都是在下单后的短时间内不能马上取消订单。解决办法是:在支付回调的方法里面加上判断,如果是错误或者重复支付,则退款给买家。

  2.支付宝收到多个支付成功回调的问题:

    支付宝的解释是:

    只要交易状态发生改变,符合满足支付宝异步触发条件,就会发送异步通知;
    其中,像即时到账,移动支付,手机网站支付等接口,默认都是支持3个月可退款的,支付成功之后,支付宝会发送一个trade_success(支付成功)的异步通知,3个月之后,此交易就不允许退款,此时支付宝会再次发送(trade_finished)的异步通知,因此会在3个月之后再次收到一次异步通知;
    注意,只trade_success状态下处理自己的业务逻辑;

    我遇到的问题是:如果调用了部分退款接口,会触发一个交易状态为TRADE_SUCCESS的支付成功回调回来。导致数据错乱。

    解决办法:判断回调是否有返回退款参数,gmt_refund,refund_fee(退款时间和退款金额)这些,以此来区分是退款成功之后的回调还是正常支付完成的回调。

 如果有朋友需要相关代码,可以留言。

收到代码的朋友,如果觉得我的文章帮助到了你,请酌情适当打赏楼主烟钱。

微信支付/支付宝支付/银联支付,对比加总结(Java服务端)的更多相关文章

  1. 支付sdk —— 该组件为封装了 微信,支付宝,银联支付

    [精品]  支付组件 简要说明该组件为封装了 微信,支付宝,银联支付, 一键快速集成,几行代码即可集成 微信,支付宝,银联支付. ## 示例: # 测试账号:1.银联支付:提供测试使用卡号.手机号信息 ...

  2. iOS 支付 [支付宝、银联、微信]

    这是开头语 前不久做了一个项目,涉及到支付宝和银联支付,支付宝和银联都是业界的老大哥,文档.SDK都是很屌,屌的找不到,屌的看不懂,屌到没朋友(吐槽而已),本文将涉及到的最新可用SDK.文档,以及本人 ...

  3. 记录:c#实现微信,支付宝扫码支付(一)

    因为公司系统业务需要,这几天了解了一下微信和支付宝扫码支付的接口,并用c#实现了微信和支付宝扫码支付的功能. 微信支付分为6种支付模式:1.付款码支付,2.native支付,3.jsapi支付,4.a ...

  4. 李洪强iOS开发支付集成之银联支付

    iOS开发支付集成之银联支付 银联官网在这里,这里能下载SDK或者是看文档.最新的版本写的简单了很多,看文档一直做下去基本上就没问题了. 首先,SDK在这里下载,里面包含需要的库文件和详细的文档. 银 ...

  5. 支付宝ios支付请求Java服务端签名报的一个错(ALI40247) 原创

    今天做app的支付宝支付,遇到些问题,以前做支付宝支付签名都是直接在客户端App进行,今天下了最新版本ios的支付宝支付demo,运行demo时底部有红色的显眼字体,告知用户签名必须在服务端进行... ...

  6. java服务端微信小程序支付

    发布时间:2018-10-05   技术:springboot+maven   概述 java微信小程序demo支付只需配置支付一下参数即可运行 详细 代码下载:http://www.demodash ...

  7. app支付宝支付java服务端代码

    app支付java服务端生成支付单文档 public String aliPay(String amount,Map<String,Object> body){ //实例化客户端 Alip ...

  8. IOS IAP APP内支付 Java服务端代码

    IOS IAP APP内支付 Java服务端代码   场景:作为后台需要为app提供服务,在ios中,app内进行支付购买时需要进行二次验证. 基础:可以参考上一篇转载的博文In-App Purcha ...

  9. IOS开发之—— iOS 支付 [支付宝、银联、微信]

    支付宝iOSsdk官方下载sdk地址:https://b.alipay.com/order/productDetail.htm?productId=2013080604609654&tabId ...

随机推荐

  1. 黑客练手入门| pwnable.kr—幼儿瓶—01:fd

    目录 前言 pwnable.kr介绍 该怎么玩 幼儿瓶第一道题:fd 0x00 问题描述 0x01 源码分析 0x02 解题方法 0x03 知识点总结 前言 担心有人不知道pwnable.kr是什么, ...

  2. DoTween动画插件学习

    一.简单的变量插值运算 using System.Collections; using System.Collections.Generic; using UnityEngine; using DG. ...

  3. Codeforces Round #625 Div. 2 D E

    D题:https://codeforces.com/contest/1321/problem/D 题意:题目给个有向图,然后给一段序列,我们要沿着这个序列走,问走的过程中当前点到t的最短路会重构多少次 ...

  4. CF 666E Forensic Examination 【SAM 倍增 线段树合并】

    CF 666E Forensic Examination 题意: 给出一个串\(s\)和\(n\)个串\(t_i\),\(q\)次询问,每次询问串\(s\)的子串\(s[p_l:p_r]\)在串\(t ...

  5. KMP浅谈

    关于KMP ​ KMP其实是三个人名字的缩写,因为是他们同时发现的(大佬惹不起); ​ KMP作为CSP考点,主要亮点是其优秀的匹配复杂度,而且消耗空间小,比起hash虽然有些局限性,但是因为其正确率 ...

  6. Find a multiple POJ - 2356

    The input contains N natural (i.e. positive integer) numbers ( N <= 10000 ). Each of that numbers ...

  7. python代理池的构建3——爬取代理ip

    上篇博客地址:python代理池的构建2--代理ip是否可用的处理和检查 一.基础爬虫模块(Base_spider.py) #-*-coding:utf-8-*- ''' 目标: 实现可以指定不同UR ...

  8. PowerShell启用多跳远程控制

    有些场景下,我们使用远程连接了某个Server,在远程Server中再想进行远程操作,就会提示错误.因为默认的认证信息只会传递一跳. 对此,微软官方文档给出的解决方案是:https://docs.mi ...

  9. DSSM在召回和粗排的应用举例

    0.写在前面的话 DSSM(Deep Structured Semantic Models)又称双塔模型,因其结构简单,在推荐系统中应用广泛:下面仅以召回.粗排两个阶段的应用举例,具体描述下DSSM在 ...

  10. Redis 的缓存淘汰机制(Eviction)

    本文从源码层面分析了 redis 的缓存淘汰机制,并在文章末尾描述使用 Java 实现的思路,以供参考. 相关配置 为了适配用作缓存的场景,redis 支持缓存淘汰(eviction)并提供相应的了配 ...