中信银行微信、支付宝支付接口文档问题集锦

  • 关于重复下单的问题

    • Q:支付宝支付的时候,重复提交同一个支付宝订单会提示“订单账号重复”。
      • A:每次请求下单接口,订单号需要更换,不能重复。
    • Q:微信可以重复下单吗?
      • A: 可以,微信下单没有提示重复。当天,微信未支付的订单 可以采用原支付单号在再次请求支付,当天微信未支付的订单 第二天采用原支付单号再去请求接口就会返回 “订单重复提交,请调用订单查询接口查询订单状态!”。
  • 关于支付查询超时

    • Q: 设定时间内,如2分钟,未检测到支付成功,是不是要调用撤销订单的接口?
      • A:2分钟之内未检测到支付成功,刷卡支付需要调用撤销接口,扫码支付需要调用关闭接口。
  • 技术常见问题

    • 关于关闭订单,分两种情况

      • 对于扫码支付接口

        • 扫码支付成功了会有后台消息通知,如果在收款客户端做订单查询轮询,时间可以长一些,例如2分钟(一般这个时间够用),如果到达了轮询最大时间还是未支付状态,要关闭订单,关于关闭订单,分两种情况:
          • 对于微信,调用关闭订单接口,只有未支付的订单才可以调用关闭订单,支付成功的订单调用关闭订单不起作用
          • 对于支付宝,调用撤销接口,如果支付成功了不允许撤销,撤销接口会返回提示"交易成功,请使用退款接口撤销订单"。
      • 对于刷卡支付接口

        • 刷卡支付是没有后台消息通知的,如果消费者端没有出现输入密码的情况,接口当即返回是否支付成功;如果消费者端有出现输入密码的情况,需要调用订单查询接口做轮询对于刷卡支付,如果到达了轮询最大时间还是未支付状态,需要调用撤销接口,这个也分两种情况:
          • 对于微信,如果支付成功了,撤销会自动退款,相当于消费者未支付
          • 对于支付宝,如果支付成功了不允许撤销,撤销接口会返回提示"交易成功,请使用退款接口撤销订单"
    • 订单为什么不停的发送消息通知

      • 订单支付完成,银行会把微信相关的支付和用户信息通过url发送到商户,商户需要接受并且处理,消息通知是通过下单传的notify_url接收的,格式 xml 格式 接收到的参数,空值不参与签名,有值的参数参与签名进行验签,接收到消息通知需要给我们返回一个xml格式的SUCCESS的报文,我们就不会重复发送消息通知

      • 当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。

      • 推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接给我们返回一个xml格式的success的报文,我们就不会重复发送消息通知。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重复插入数据造成的数据混乱。这是返给我们的xml格式success报文。SUCCESS

    • 消息通知发送规则

      • 发送16次消息通知 前8次10s,
      • 后8次规则 (x-8)(x-8)20;
      • StreamUtils.copyToString(request.getInputStream(), Charset.forName("utf-8"))
    • 下单支付出现sub_appid and sub_openid not match错误?

      • 中信微信后台未配置“子商户appid”,JSAPI时,商户未传openid或openid有误,请检查openid是否正确(openid是由哪个公众号获取的)。订阅号无法支付,要服务号才可以。

    • body参数格式错误?

      • body参数不能为空。

    • 商户数据包attach格式错误?

      • 缺少“`”字符;门店Id填写(格式)错误。

    • 微信服务端添加子商户移动appid时提示“该appid未完成微信认证”?

      • 由于开放平台未认证开发者资质,请申请认证后重试。

    • 支付成功通知不断的给用户下发?

      • 商户返回的成功信息有误,商户提供的通知地址有误。

    • sub_mch_id与sub_appid不匹配?

      • 商户openid生成错误。

    • 统一支付时返回“签名错误”?

      • key不统一,或者加密方法不一样。

    • 支付成功,未推荐关注

      • 支付成功后推荐关注栏目规则:

        • ① 刷卡支付默认有推荐关注
        • ② 公众号支付和扫码支付需要5元以上才有推荐关注。
        • ③ APP支付默认没有,需要申请配置,需要有一定用户规模才可以申请。
        • ④ 已经关注的不展示推荐栏。
        • ⑤ 服务号未设置头像的在IOS不展示推荐关注栏。
        • ⑥ 用户取消过关注的默认不勾选。
    • 多个公众号ID,openid以哪个为准?

      • openid必须与所传的wx_appid对应。

    • 透传接口

      • 透传接口是微信要求的,大商户交易过程中,要附加子商户信息。

    • 调用支付JSAPI缺少参数:appid 是因为授权的原因吗?

      • 用微信返回的参数直接调起jsapi,不用再做签名了,paySign也用返回的。

    • 缺少参数sub_appid,扫码支付?

      • 跟新绑的公众号有关系,参数有修改。

    • 地址报不信任证书的错误

      • 采用无证书模式,可以参考以下这篇文章:http://blog.csdn.net/yatusiter/article/details/9090721 。或者:搜索Java调用单向认证的https服务, 无证书调用https服务https://my.oschina.net/ososchina/blog/500925。
    • 返回xml格式错误?

      • 头部是否有设置为Content-Type:text/xml。

    • 公众号支付终端获取不到二维码?

      • 看下调用统一下单接口是否成功,能否获取到core-url,是否是前端生成二维码出的问题。

    • openid如何获取?

      • openid无法查看,只能通过微信提供的方式获取,具体操作https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_4。openid要和您传的wx_appid相对应。

    • 微信可以做长按识别支付吗?

      • 微信把长摁识别二维码付款的功能限制了,要想实现这个效果需要使用公众号接口自己生成二维码,形式上和扫码接口生成的二维码一样,但是是可以直接长按识别二维码支付的。

    • 每天的结算金额,我是不是可以直接用账单做累加就可以了?

      • 要当天(00:00:00-23:59:59)交易的净额-相对应的手续费=当天的清算金额。

  • 关于对账文件的问题

    • Q:如果获取到了对账单,能否确保对账单的数据是全的无遗漏的。

      • A:一般情况下文件数据是全的。
    • Q:对账单是如何获取的,是根据一个渠道商全部获取到还是一个商户一个商户获取的。

      • A:对账单是根据商户号(一户一报)获取的。

    • Q:下载对账文件时,有的商户没有获取到对账文件,如何判断商户是没有交易 还是数据不全。

      • A:商户没有交易情况,对于支付宝返回return_msg为“账单不存在”,对微信返回return_msg为"No Bill Exist"。
      • 对账文件是我们通过接口自动获取的,我们希望能从接口上确定商户D日是否有交易,这个有判断标记吗?

        • 商户没有交易情况,对于支付宝返回return_msg为“账单不存在”;微信返回return_msg为"No Bill Exist"。

      • 支付宝退款接口返回成功,查询接口返回失败的原因是什么?

        • 判断请求是否请求成功:商户可使用该接口查询自已通过alipay.trade.refund提交的退款请求是否执行成功。 该接口的返回码10000,仅代表本次查询操作成功,不代表退款成功。如果该接口返回了查询数据,则代表退款成功,如果没有查询到则代表未退款成功,可以调用退款接口进行重试。重试时请务必保证退款请求号一致。请求退款接口必须返回的字段,您再看一下您提供的退款报文,请求退款接口成功了,但是返回的报文中支付宝订单号transaction_id 是空的。

      • 验签失败可能的原因有哪些?

        • 1、秘钥是否正确;

        • 2、参数为空值的不参与签名;

      • 拉起app支付时用的是微信的appid,还是用中信给的appid?

        • app拉起微信支付使用统一下单接口返回的pay_info里对应的数据,不能做任何修改,这一点和公众号支付是一样的;

      • 中信银行的appid有包名吗?

        • 中信appid不会和包名发生关系,中信提供的appid、商户号、秘钥key只用于中信支付接口的调用,你所说的包名和你们在微信开发者平台申请的微信appid是关联的;

      • 直联微信APP支付和间联中信APP支付的区别是什么?

        • app使用什么样的包名和微信的appid和原来一样,使用中信APP支付的区别是:

          • 1、拉起微信支付需要的七个参数appid、partnerid、prepayid、timeStamp、nonceStr、package、sign要全部使用中信app支付返回的pay_info里对应的数据;
          • 2、 中信提供的appid、商户号、秘钥key只用于中信支付接口的调用;
          • 其他和原来一样;
      • 微信和支付宝二维码有效期是多久?

        • 支付宝默认的有效时间是20十分钟,微信默认的有效时间是2个小时

      • 当天未支付的订单,重复下单支付宝不允许,但是微信可以;

      • code_url生成的二维码和code_img_url生成的二维码有什么区别?

        • 采用code_url生成二维码好处就是便于你们控制自己产品UI做的好看点,使用code_img_url二维码图片样式固定无法定制

    • Q:用户有可能点击微信支付,扫描支付了,网络问题没有反应或收到支付通知,以为没有支付成功,又点击支付宝进行支付了,一个订单号共支付2次这种情况

      • A:客户的业务系统做互斥处理;切换前需要业务系统先确认一下这笔是否支付成功,然后再决定后面的业务流程。

        • Q:在切换前我们这边也没有收到支付成功的回调通知,我们业务流程还是未支付的状态,这种情况用户还是可以选择其他支付方式的
        • A:这个时候您可以调用查询接口,查询订单状态。
    • 什么是支付授权目录?

      • 支付授权目录指的是支付页面所在的目录(只要是这个目录下的页面都可以);通俗来讲就是用户选完商品然后点击支付这个页面的全路径(不包括页面)最后以 / 结尾

    • 商户验签类问题:

      • 空值不参与签名,有值的参数都参与签名;建议返回的参数不要写死

    • 微信公众号:signType是MD5,为什么pay_info不是MD5而是RSA?

      • 中信新规定。

    • 商户退款报错"退款订单号重复提交",第二次更换退款订单号后报错"退款金额超限",如何处理。

      • 次日对账后发起新的退款即可。

    • 微信固定二维码(公众号)用户完成支付,微信弹出支付完成页面,下面有个完成按钮,点击完成跳转的页面是客户自己配置还是我们配置?

      • 中信通道商户可以用我们的;其它通道客户需要自己配置,否则点击完成会回到输入密码页面,开发如何配置这个页面可以参考微信JS支付官方文档

    • 刷卡接口没有支付结果通知接口,如何判断订单支付成功?

      • 刷卡接口没有支付结果通知接口,需要调用查询接口来判断接口是否返回成功;如果想查询订单是否支付成功,根据trade_state判断即可(result_code和return_code都返回success,trade_state才可以正常返回结果。)

        • 微信:REFUND代表有退款(部分退款或全额退款)。
        • 支付宝:CLOSED代表已关闭(超时关闭,或调用了关闭接口关闭,或已经全额退款)。
    • 聚合扫码提示“获取预支付信息失败”是什么原因?

      • 商户管理端没有配置。
    • 聚合扫码和普通扫码有什么区别?

      • 聚合码并不是一种实际的支付类型,而是一种产品。(它实际还是指向微信js、支付宝服务窗、银联扫码【一般不说】)

    • 微信公众号支付时商户传入xxx参数不正确,请联系商户

      • 商户要将下单返回的pay_info里的6个参数原封不动的传给支付js

    • 关于微信和支付宝的time_start 和 time_expire问题

      • 扫码接口支付宝二维码默认有效期20分钟,微信没有控制需要商户自己下单控制。

      • 支付宝的time_start 和 time_expire 相差时间 最低1分钟,不足1分钟按1分钟计算,例如1分1秒,按照2分钟计算,1秒按照1分钟计算。

    • 关于支付宝订单超过有效期调用查询接口返回userpaying和colse问题

      • 有两种情况

        • ①商户下单后,用户完成了扫码动作,超过订单有效期也未支付的情况,调用查询接口则返回CLOSED;

        • ②商户下单后,用户未扫码,超过订单有效期后,调用查询接口则返回USERPAYING;

      如果您想超过订单有效期后都返回CLOSED,可以在超过订单有效期后调用关闭
      • 刷卡接口问题

        • 对于刷卡接口,不管返回成功或失败都要做订单查询。
      • 为什么对账单要先做xml解析

        • 因为有账单文件才会返回,没有就会返回xml提示未生成或者在生成

      • 关于return_code和result_code的问题

      • 我们在协议级做了拦截,只有当协议级正确的情况下才会有业务级数据产生,应该先判断return_code,如成功再判断result_code;如果return_code返回了fail,可直接将本次请求调用接口定义为失败。

      • 退款状态异常如何处理,银盈通:

      • 1.调用退款接口,result_code返回FAIL, 或者 return_code 返回FAIL,就代表这笔订单退款接口调用失败,可以认定为退款失败。

      • 2.如果返回信息是“xxx异常”,或“xxx超时”。条件1不能完全作为判断标准,需要调用查询接口,确认最终状态。

      • 3.根据对账单处理:对账单第二天生成后,当天退款异常的订单,可以根据第二天的对账结果处理。

你可能感兴趣的:(中信银行微信、支付宝支付接口文档问题集锦)