支付
支付交易场景为商户需要在手机应用(APP)、手机网页(Wap)、PC 网页上集成第三方支付时,可以选择 Ping++ SDK 中的支付 Charge 功能,Ping++ 支付 Charge 功能需要 同时使用客户端 SDK 和服务端 SDK。该场景和 扫码支付流程 略微有所差别,所以请参考对应的流程。
- 用户在客户端选择商品并提交订单,客户端需要向你的服务端传递支付要素。注意:Ping++ SDK 不涉及你的客户端和你的服务端之间的数据交互,此处请你自定义通信方式。
- 服务端接收到客户端请求参数,并调用 Server-SDK封装的创建支付 Charge 的方法请求 Ping++ 。
- Ping++ 响应你的服务端请求,返回 Charge(支付凭据)给你的服务端。
- 你的服务端响应你的客户端请求,需要将该 Charge 对象完整的返回给你的客户端,注意:这里的 Charge 返回类型必须是 JSON 格式,你可以参考:服务端应传递怎样的支付凭证给前端?
- 客户端拿到支付凭据 Charge 对象后,需要调用 Client-SDK 封装的方法调起支付控件,用户输入密码完成支付。
- 第三方支付渠道会直接在客户端返回支付结果,请 不要 使用客户端的成功结果更新订单的最终状态。
- 在 Ping++ 管理平台配置 Webhooks 的
charge.succeeded
事件。支付完成时,Ping++ 会主动以POST
方式向你配置在管理平台上的 Webhooks 通知地址发送支付结果,建议订单状态的更新对比客户端的渠道同步回调信息和服务端的 Ping++ Webhooks 通知来确定是否修改。 - 同时,建议在处理逻辑中添加主动查询机制:如果在可接受的时间范围内没有收到 Webhooks 通知,你也可以调用 Server-SDK 封装的查询方法,主动向 Ping++ 发起请求来获得订单状态,该查询结果可以作为交易结果。
注意事项
请勿直接使用客户端支付结果作为最终判定订单状态的依据,由于 Ping++ 没有参与你的客户端和第三方渠道的交互,无法保证客户端支付结果的安全性,建议订单状态的更新对比客户端的渠道同步回调信息和服务端的 Ping++ Webhooks 通知来确定是否修改。
下一步扫码支付