首次接入 Ping++ 会员账户系统或多级商户系统的商户,经常会遇到如标题这样类似的疑问,可参考以下解释:
【Order 和 Charge 的关系】
Order 包含 Charge,Order 可以理解为一个订单对象,包含了商品信息和支付信息,其中支付信息就是 Chagre 对象;
接入会员账户系统或多级商户系统的商户可以只关注 Order 接口,在服务端请求创建及支付 Order 对象后,将 Order 对象传给客户端 SDK 并调用支付方法即可完成支付;
对于非系统类即聚合支付商户,可以仅使用 Charge 接口接入支付。
【一个 Order 多 Charge】
一个 Order 对象可能会包含多个 Charge 对象。当一个 Order 在未支付的情况下,多次切换支付渠道时,就会在 Order 中产生多个对应的 Charge 对象。当某个渠道支付成功后,其 Charge 对象的 paid 字段就会变成 true;
当然,若用户同时在多个支付渠道完成了支付(此为小概率事件,例如打开支付宝控件,在未关闭的情况下再次打开微信进行支付,支付完成后再切回支付宝进行支付),此时多个 Charge 都会是支付成功状态,你可以对其中任何一笔支付 Charge 做退款处理。
【Webhooks 推送】
一个 Order 订单支付成功后,Ping++ 会同一时间推送对应 Order 和 Charge 的 Webhooks 事件,即 order.succeeded 和 charge.succeeded;
对于会员账户系统或多级商户系统的商户,只需要在 Dashboard 配置接收 order.succeeded 事件的回调 URL 即可。