支付成功异步通知接口


用户支付成功后,平台会发送异步通知到订单携带的notify_url(如果有该参数的话),请求方式为 POST

请求参数:

字段名称 字段类型 必填参数 说明
return_code int(1) Y 1:支付成功
total_fee int(16) Y 金额。单位:分
out_trade_no string(32) Y 用户端自主生成的订单号
payjs_order_id string(32) Y PAYJS 订单号
transaction_id string(32) Y 微信用户手机显示订单号
time_end string(32) Y 支付成功时间
openid string(32) Y 用户OPENID标示,本参数没有实际意义,旨在方便用户端区分不同用户
attach string(127) N 用户自定义数据
mchid string(16) Y PAYJS 商户号
type string(16) N 支付类型。微信订单不返回该字段;支付宝订单返回:alipay
sign string(32) Y 数据签名 详见签名算法

提示:

  1. 接收通知的服务器请在3秒钟内响应(http状态码200则标记通知成功,其它状态码则标记通知失败,推送结束)
  2. 为保障推送到达率,系统可能多次进行通知推送,请做好去重逻辑
  3. 推送可能增加参数,请做好冗余处理,勿使用 hard code
  4. 商户系统对于支付结果通知的内容一定要验签,并校验返回的订单金额是否与商户侧的订单金额一致
  5. 通知频率(秒):0,15,30,180,1800,3600。超过1小时后如需推送,可以在后台手动补发
  6. 异步通知过程中,如果该订单接收到check接口的成功查询,则异步通知在执行完当前任务后终止,不再继续通知

特别提醒:接收异步通知的服务器需在大陆境内备案服务器

接收回调流程示例:

<?php
$data = $_POST;

if($data['return_code'] == 1){
    // 1.验签逻辑

    // 2.验重逻辑

    // 3.自身业务逻辑

    // 4.返回 success 字符串(http状态码为200)
    echo 'success';
}

?>

php

<?php
$data = $_POST;

if($data['return_code'] == 1){
    // 1.验签逻辑

    // 2.验重逻辑

    // 3.自身业务逻辑

    // 4.返回 success 字符串(http状态码为200)
    echo 'success';
}

?>

python

# 以flask为例

from flask import Flask
from flask import request
import logging
app = Flask(__name__)
app.logger.setLevel(logging.DEBUG)

@app.route('/api[您的接口]/',methods=['GET','POST'])
def api():
    if request.method == 'POST':
        data = request.form
        if data.get('return_code') == '1':
            # 1.验签逻辑

            # 2.验重逻辑

            # 3.自身业务逻辑

            # 4.返回 success 字符串(http状态码为200)
            return 'success!'
    return 'fail!'


if __name__ == '__main__':
    app.run()

powered by Gitbook最后更新: 2020-07-28