SnapPay Developer Documents
3.3订单支付结果异步通知
描述
支付完成后,开放服务网关会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。
对后台通知交互时,如果开放服务网关收到商户的应答不是成功,开放服务网关认为通知失败,开放服务网关会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但开放服务网关不保证通知最终能成功。
(通知频率为15/15/30/180/1800/1800/1800/1800/3600,单位:秒)注意:同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。
推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。特别提醒:商户系统对于支付结果通知的内容一定要做签名验证,并校验返回的订单金额是否与商户侧的订单金额一致,防止数据泄漏导致出现“假通知”,造成资金损失。
接口地址
该链接是通过交易请求时提交的参数notify_url设置,如果链接无法访问,商户将无法接收到开放服务网关异步通知。
请求参数
公共参数
参见【请求报文 - 公共参数】
业务参数
参数KEY | 参数名称 | 类型 | 必要性 | 描述 |
method | 请求方法 | TEXT(128) | M | 接口固定值为:pay.notify |
merchant_no | 商户号 | TEXT(32) | M | 商户号,在SnapPay入驻后生成的定常数字,用于标识商户身份 |
trans_no | 交易号 | TEXT(32) | M | 开放服务网关平台交易号 |
out_order_no | 商户订单号 | TEXT(32) | M | 商户系统内部订单号,只允许数字或英文字母。同一商户下订单号不能重复 |
trans_status | 交易状态 | TEXT | M | SUCCESS-交易成功 |
payment_method | 支付方式 | TEXT(16) | M | 目前支持的支付方式有: ALIPAY 支付宝 WECHATPAY 微信支付 UNIONPAY 中国银联 |
pay_user_account_id | 买家账号标识 | TEXT(32) | M | 支付宝返回支付用户的ID,例如: 2088101117955611
微信返回商户appid下用户唯一标识,例如:wx37150978513678 银行卡交易返回加*脱敏的卡号信息,例如: 6226****1982 |
pay_user_account_name | 买家账号名称 | TEXT(32) | O | 159****5620或zhangsan@sina.com注:支付宝支付返回账号登录名,微信支付时返回为空 |
trans_currency | 标价币种 | TEXT(32) | O | 符合ISO 4217标准的三位字母代码,币种列表详见货币类型 |
exchange_rate | 汇率 | TEXT(16) | O | 标价币种兑换支付币种汇率,非RMB标价时有值 |
trans_amount | 交易总金额 | AMOUNT | M | 交易总金额 |
c_trans_fee | 顾客承担手续费 | AMOUNT | O | 交易手续费由商家承担部分的金额 |
customer_paid_amount | 顾客实付金额 | AMOUNT | M | 交易过程中从顾客资金账户中实际扣减的金额 |
discount_bmopc | 支付通道商户优惠金额 | AMOUNT | O | 商户在支付通道的服务提供方(微信、支付宝等)的系统发布营销活动(优惠券、代金券、满减、单品优惠),用户支付时享受的金额减免 |
discount_bpc | 支付通道优惠金额 | AMOUNT | O | 支付通道提供方(微信、支付宝等)给用户提供的优惠,在交易过程中直接减免,如:鼓励金、立减、红包等营销活动 |
trans_end_time | 交易完成时间 | DATE | M | |
attach | 商户附加信息 | JSON(127) | O | 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 |
响应参数
商户处理后同步返回给开放服务网关的参数:
参数KEY | 参数名称 | 类型 | 必要性 | 描述 |
code | 返回状态码 | TEXT(32) | M | 固定值:0 |
Copyright reserved for SnapPay Inc 2019.