剪刀手 是为移动端应用以及 PC 网页量身打造的下一代支付系统,通过一个 SDK 便可以同时支持移动端以及 PC 端网页的多种主流支付渠道,你只需要一次接入即可完成多个渠道的接入。 剪刀手 SDK 包括 Client SDK 和 Server SDK 两部分,支持主流的七种后端开发语言,适配了 Android,iOS 和 HTML5 三种移动端平台以及 PC 端网页。
在开发之前,你需要知道一些 剪刀手 的开发配置信息,这些开发配置信息是 剪刀手 给你的身份凭证,你需要配置在代码中并妥善保管好,以下是对开发配置信息的说明以及获取入口。
为了提高接入效率,剪刀手 提供了 Live 和 Test 两个工作模式供开发者接入时使用,两个环境均需要设置 App ID ,两个环境的变更可以通过代码中的 Live Key 和 Test Key 的切换。
调用 Test 环境只需要注册 剪刀手 账户, Test 环境便于商户在没有申请下来渠道参数时先跑通支付流程,Test 开发中支付页面是 剪刀手 提供的模拟页面,不需要输入密码,直接点击支付即完成模拟付款。
调用 Live 环境需要商户已经和 剪刀手 签约并且成功完成渠道申请,将渠道参数填写在 剪刀手 管理平台上对应的渠道。 在 Live 环境下可以调用第三方渠道控件完成真实的付款。
Test 和 Live 环境的 Key 均需要登录 剪刀手 管理平台获得,具体获取路径:点击管理平台右上角公司名称->企业面板->开发参数->基本密钥
App ID 是你在 剪刀手 平台上创建的应用标识,具体获取路径:登陆管理平台->点击「主页」按钮->对应的应用名称下方会显示 App_ID
剪刀手 公钥用于 Webhooks 真实性验证,验证该异步通知是否来自于 剪刀手 。 剪刀手 公钥具体获取路径:点击管理平台右上角公司名称->企业面板->开发参数->基本密钥
为方便你接入后能更好的管理你的账户和订单,剪刀手 提供了管理平台帮助你管理你的账户信息、订单信息以及交易报表下载等。你不再需要分别去每个渠道的管理平台处理对应的订单,你的账户、渠道等信息直接在管理平台上面配置即可。
提交注册申请后,请前往注册邮箱,在邮件中点击注册链接,创建密码后进入管理平台。
在开通渠道并完成 Live Key 联调后,你的 App 即成功上线。你可以随时登录管理平台查看交易信息,并完成相应订单操作。剪刀手 管理平台目前提供收入统计图、订单搜索、退款、Webhooks 通知等功能,你可以在管理平台轻松管理你的交易。
您可以通过「交易」->「支付订单」或者「业务订单」->「业务订单查询」处进行对订单数据的查询或者退款。
剪刀手 管理平台提供各种维度的交易情况数据展示。
为了方便公司内部管理,剪刀手 提供了权限管理系统。第一个注册用户为管理员,管理员拥有最高管理权限,可以邀请管理员、技术、运营、财务四种角色共同对管理平台进行管理。点击管理平台右上角公司名称->企业面板->成员管理,点击「邀请成员」,输入成员邮箱并勾选该成员可进行管理的应用,选择角色以添加成员。
剪刀手 管理平台中提供几种默认的角色:系统管理员、管理员、财务、运营、技术,其中系统管理员为第一个提交企业审核的人,拥有全部应用的全部权限。如果默认的角色不能满足需求,您可以按需创建一个新的角色并勾选相应的页面访问权限。
目前 剪刀手 支持支付、退款、红包以及企业转账,交易流程对于不同的渠道略微有些差异。详情请点击左侧的子目录,以下为简要概括。
接入 剪刀手 支付的流程请点击 支付。剪刀手 没有提供扫码支付的客户端 SDK ,所以在扫码支付接入时需要用户自己处理客户端的二维码显示以及交易结果轮询,具体可参见交易流程中的 扫码支付。若接入的是「线下扫码」通道,请直接参考 线下扫码 。
接入 剪刀手 撤销的流程请点击 撤销。此接口仅接受 isv_scan、isv_wap、isv_qr渠道的订单调用。接口支持对于未成功付款或状态不明的订单进行撤销,则关闭交易。调用此接口后用户后期不能支付成功。
接入 剪刀手 退款的流程请点击 退款。由于支付宝 1.0(mapi) 接口的退款需要商家输入支付宝的支付密码,与其他渠道的退款流程有差异,剪刀手 单独列出来支付宝 1.0 的退款交易流程说明,具体可参见 支付宝退款。
接入 剪刀手 红包的流程请点击 红包,红包的接入只需要服务端 SDK ,不需要客户端 SDK 。
接入 剪刀手 企业转账的流程请点击 企业转账,企业转账的接入只需要服务端 SDK ,不需要客户端 SDK 。
扫码支付只需要服务端 SDK ,拿到二维码链接后的流程由商户自行设计,目前 剪刀手 支持支付宝扫码 (当面付) 和微信扫码,可参考以下流程:
1.服务端调用 Server-SDK 封装的创建支付 Charge 的方法请求 剪刀手 。
2.剪刀手 响应你的服务端请求,返回 支付 Charge 对象,在 Charge 对象中有 credential 字段,该字段中包含可以生成二维码的alipay_qr或wx_pub_qr链接。
3.商户需要截取出alipay_qr或wx_pub_qr的链接并自行生成二维码,显示在你的 PC 端或任意你需要展示二维码的平台。
4.在 剪刀手 管理平台配置 Webhooks 的 charge.succeeded 事件。支付完成时,剪刀手 会主动以 POST 方式向你配置在管理平台上的 Webhooks 通知地址发送支付结果,服务端的订单状态请根据 Webhooks 通知更新。
5.同时,建议在处理逻辑中添加主动查询机制:如果在可接受的时间范围内没有收到 Webhooks 通知,你也可以调用 Server-SDK 封装的查询方法,主动向 剪刀手 发起请求来获得订单状态,该查询结果可以作为交易结果。
1.剪刀手 没有针对扫码提供客户端 SDK ,所以请不要将服务端拿到的 charge 传给 剪刀手 的 Client-SDK ,会出现报错 no_such_channel。
2.支付完成后,第三方渠道不会给你的客户端任何结果,所以你需要设计客户端主动轮询服务端查询扫码的支付结果。
「线下扫码」渠道的场景描述如下:
1.用户主扫:channel 为 isv_qr,商户针对某一笔订单/商品生成二维码显示在终端,用户使用支付宝/微信进行扫码支付(该二维码分渠道,支付宝只能扫支付宝对应产生的二维码,微信只能扫微信对应产生的二维码)。
2.用户被扫:channel 为 isv_scan ,用户展示支付宝/微信中的付款码,商户使用扫描设备扫描。
3.固定码:channel 为 isv_wap,商户展示一个固定码(实际就是支付页面的链接)在终端,用户使用微信/支付宝扫码,进入一个支付页面,在该支付页面输入金额(此处可省略),点击支付按钮之后,如果使用微信扫码的就直接调起微信支付,使用支付宝扫码的就直接调起支付宝支付。
其中,isv_qr和isv_scan只需要服务端 SDK,isv_wap需要服务端 SDK 和客户端 H5 SDK。
1.使用isv_qr和isv_scan渠道时,请不要将服务端拿到的 Charge 传给 剪刀手 的 Client-SDK。
2.请勿直接使用客户端支付结果作为最终判定订单状态的依据,由于 剪刀手 没有参与你的客户端和第三方渠道的交互,无法保证客户端支付结果的安全性,建议订单状态的更新对比客户端的渠道同步回调信息和服务端的 剪刀手 Webhooks 通知来确定是否修改。
此接口仅接受 isv_scan、isv_wap、isv_qr 渠道的订单调用,在订单状态不明时可以调用该接口撤销订单。对于未成功付款的订单进行撤销,则关闭交易。调用此接口后用户后期不能支付成功。 注: 对于成功付款的订单请使用 退款 接口进行退款处理。
1.isv_scan、isv_wap、isv_qr渠道可在交易产生当天调用撤销接口。
2.对于成功付款的订单请使用 退款 接口进行退款处理。只有针对未支付或状态不明的订单,我们建议你调用撤销接口。
3.若接入的是中信银行的线下扫码,则撤销接口仅支持isv_scan。
商户想给用户发送微信红包福利时,可以看这里的流程:
1.服务端调用 Server-SDK 封装的发送红包的方法请求 剪刀手 。
2.剪刀手 响应你的服务端请求,返回红包 Redenvelope 对象,此时订单状态为 pending,此时仅代表发送红包请求成功,不代表红包成功发送与拆开;使用剪刀手 测试模式发起的红包请求,必须主动调用红包查询接口查询订单状态才能触发 Webhooks 回调。
3.在 剪刀手 管理平台配置 Webhooks 的 red_envelope.sent 和 red_envelope.received 事件。红包发送成功时,剪刀手 会主动以 POST 方式向你配置在管理平台上的 Webhooks 通知地址发送红包发送和接收结果。
4.同时,建议在处理逻辑中添加主动查询机制:如果在可接受的时间范围内没有收到 Webhooks 通知,你也可以调用 Server-SDK 封装的查询方法,主动向 剪刀手 发起请求来获得订单状态,该查询结果可以作为交易结果。
1.发送频率规则:每分钟发送红包数量不能超过 1800 个;
2.红包规则:单个红包金额介于人民币 1 元 ~ 200 元之间;同一个红包只能发送给一个用户;红包发放后 24 小时未被领取,将退回商户账户。
3.确保可用余额充足。发放现金红包将扣除商户的可用余额,可用余额并不是微信支付交易额,需要预先充值,确保可用余额充足。
商户需要给用户打款转账时,可以参考如下的流程图。剪刀手 企业付款 Transfer 功能只需要服务端 SDK 。目前企业付款 Transfer 接口支持的渠道请参考 企业付款 channel 参数 ,剪刀手 管理平台支持 批量企业付款 操作,且提供 批量企业付款的接口。
1.服务端调用 Server-SDK 封装的企业付款 Transfer 的方法请求 剪刀手 。
2.剪刀手 响应你的服务端请求,返回企业付款 Transfer 对象,此时订单状态为 pending 仅代表企业付款请求成功,并不代表企业付款成功。
3.在 剪刀手 管理平台配置 Webhooks 的 transfer.succeeded 事件。企业付款成功时,剪刀手 会主动以 POST 方式向你配置在管理平台上的 Webhooks 通知地址发送企业付款的结果,此时 Transfer 对象中 status 字段值为 paid,表示企业付款完成。
4.同时,建议在处理逻辑中添加主动查询机制:如果在可接受的时间范围内没有收到 Webhooks 通知,你也可以调用 Server-SDK 封装的查询方法,主动向 剪刀手 发起请求来获得订单状态,该查询结果可以作为交易结果。
关于微信企业付款,请注意以下几点:
1.微信企业付款支持向指定微信用户的 open_id 付款。
2.发送微信企业付款将扣除商户的可用余额,可用余额并不是微信支付交易额,需要预先充值,确保可用余额充足。 查看可用余额、充值、提现请登录 微信支付商户平台 ,进入资金管理菜单,进行操作。
3.付款资金将进入目标用户的零钱(微信—我—钱包—零钱),微信支付会有零钱入账消息的通知,零钱收支明细会展示相应记录。
关于银联电子代付,请注意以下几点:
1.限额:单笔限额 1000 元;单日限额 20000 元;单日不超过 50 笔(上线后可根据实际需求申请提高额度)
2.商户在发起代付请求前,请确定其第三方机构企业账户金额充足,确保代付顺利完成。
3.建议商户对新增的未实名认证的收款人,先进行实名认证,减小风险。
4.目前支持的收款人银行为:工行、农行、中行、建行、交行、招商银行、光大银行、中信银行、浦发银行、广发银行、民生银行、兴业银行、平安银行等。
用户完成付款后在商家同意的情况下需要退款时,剪刀手 的管理平台提供了退款功能,也可以通过 剪刀手 Server SDK 发起退款:
剪刀手 退款 Refund 功能只需要服务端 SDK,所以需要你在客户端为用户设计退款入口。
1.服务端调用 Server-SDK 封装的发起退款方法请求 剪刀手 。
2.剪刀手 响应你的服务端请求,返回退款 Refund 对象,请求是否成功可以根据返回的 Refund 中的 failure_msg 来判断。如果该字段为空则代表退款请求成功,不代表退款已经成功到账。
3.在 剪刀手 管理平台配置 Webhooks 的 refund.succeeded 事件。退款成功时,剪刀手 会主动以 POST 方式向你配置在管理平台上的 Webhooks 通知地址发送退款结果。
4.同时,建议在处理逻辑中添加主动查询机制:在可接受的时间范围内,如果你服务端没有收到 Webhooks 的通知或退款失败,你也可以调用 Server-SDK 封装的查询方法,主动向 剪刀手 发起请求来获得退款状态,该查询结果可以作为交易结果。
1.使用 剪刀手 退款功能的前提是你已经通过 剪刀手 支付接口完成付款。
2.如果未通过 剪刀手 进行退款(即直接从渠道的平台退款),则 剪刀手 不会同步渠道退款状态。
3.若退款订单较多,可使用 剪刀手 管理平台上的批量退款功能 或者 API 接口 批量退款 。
用户完成付款后在商家同意的情况下需要退款时,剪刀手 的管理平台提供了退款功能,也可以通过 剪刀手 Server SDK 发起退款。由于支付宝 1.0(mapi) 接口的退款流程有异于其他渠道,以下为支付宝 1.0 接口退款流程的特别说明(支付宝 2.0 "openapi" 接口的退款请直接参考 退款):
剪刀手 退款 Refund 功能只需要使用服务端 SDK,所以需要你在客户端为用户设计退款入口。
1.服务端调用 Server-SDK 封装的创建退款方法请求 剪刀手 。
2.剪刀手 响应你的服务端请求,返回 退款 Refund 对象。 Refund 对象中的 failure_msg 字段包含支付宝退款链接。
3.商户需要截取 failure_msg 中的退款链接并点击链接进入支付宝退款页面,需要商家输入支付宝支付密码完成退款。注意:支付宝退款链接当日有效,隔日作废,需要重新请求 退款查询 接口或者重新请求 创建退款 接口,均会返回新的链接。
4.在 剪刀手 管理平台配置 Webhooks 的 refund.succeeded 事件。退款完成时,剪刀手 会主动以 POST 方式向你配置在管理平台上的 Webhooks 通知地址发送退款结果。
在可接受的时间范围内,如果你服务端没有收到 Webhooks 的通知或退款失败,你也可以调用 Server-SDK 封装的查询方法,主动向 剪刀手 发起请求来获得退款状态,该查询结果可以作为交易结果。
1.使用 剪刀手 退款功能的前提是你已经通过 剪刀手 支付接口完成付款。
2.支付宝已付款订单在 3 个月内均可以退款;微信允许交易时间在 1 年内的订单进行退款;其他支付渠道均为 1 个月内可退款,超过 1 个月则渠道不允许退款。
3.如果未通过 剪刀手 进行退款(即直接从渠道的平台退款),则不会同步渠道退款状态。
4.调用 剪刀手 退款接口返回的支付宝退款链接当日有效,隔日作废,需要重新请求 退款查询 接口或者重新请求 创建退款 接口,均会返回新的链接。
5.支付宝当面付(即 alipay_qr)渠道的退款属于免密退款,不需要以上步骤。
用户作为使用其他功能模块(订单、余额、优惠券等)的媒介,记录了用户的个人信息、余额、优惠券、结算账户等数据。
剪刀手 用户系统不是独立存在的,你不需要为 剪刀手 创建新用户,只需要将你系统内的用户和 剪刀手 关联即可。
用户 ID 在一个 剪刀手 应用下唯一,这些用户通过该应用的相关接口生成,并且属于该应用。
用户一般情况下不需要主动创建,在使用其他系统功能(如余额充值)时,如果你传入的用户 ID 在 剪刀手 系统内的该应用下不存在时,会自动为你创建。
剪刀手 用户系统的用户分为三类:
在测试模式下,有最大用户数量上限(500 个)。因暂不提供用户删除接口,请勿在测试模式大量创建用户以免造成不便。
商户层级是指商户在业务中作为平台,管理其下多个子商户的交易和业务数据。使用商户层级模块时,发起请求的应用称为平台(应用)。
子商户和平台一样,以 剪刀手 应用的形式存在系统内,且子商户有自己独立的 剪刀手 账号(API KEY,Dashboard 账号等),由子商户独立管理或由平台统一管理。本文所说的子商户一般指子商户应用。
商户层级是为了解决以下需求:
为你的用户提供余额功能,你可以根据自己的业务场景,选择使用余额系统的充值、消费、提现、转账、退款以及余额赠送(用户收款 API )等其中的一个或多个功能。在使用这些功能时,剪刀手 会同时在用户端创建用户交易明细对象和在商家端创建企业清算明细对象,通过这些明细对象,可以记录用户的余额操作情况和企业的收支情况。
剪刀手 余额类型分为(真实)余额和受赠余额,具体区别如下:
订单实现了一套商品购买流程,包括下单、支付、退款、取消等步骤。
订单可以实现渠道交易本身不能很好支持的复杂场景功能,这些功能包括:
优惠券产品是为商家提供各种电子优惠券的运营增值服务,协助商家方便地实现营销优惠措施。用户使用优惠券后,订单将根据优惠券的优惠策略减去相应的金额后再进行付款。优惠券分为现金券和折扣券,进行金额折扣或者百分比折扣。
分润是指在订单交易完成后,订单收款方将订单中的一部分资金转账给分润用户。
分润的分为订单清分和分润结算两步。
分润支持给个人用户和企业用户分润。给子商户分润时,需要使用子商户关联的企业用户 ID。
PHP 版本要求 5.4 及以上,你可以使用 Composer 或直接手动引入,以下分别提供了两种引入方法:
在你自己的 composer.json 中添加 composer require pingplusplus/pingpp-php 代码
然后执行composer install
使用 Composer 的 autoload 引入:require_once('vendor/autoload.php');
手动引入:require_once('/path/to/pingpp-php/init.php');
要求 JDK 版本 1.7 及以上,你可以手动安装、maven安装或 gradle安装,以下分别提供了三种引入方法:
在 Github 下载 SDK,将 libs/ 下面的 jar 包导入工程。
nodejs 版本 v0.8.0 及以上,可选择如下两种方式安装:
① 直接运行:npm install pingpp
② 下载源码后,在目录下运行:npm install
目前 剪刀手 支持支付、退款、红包以及企业转账,交易流程对于不同的渠道略微有些差异。详情请点击左侧的子目录,以下为简要概括。
接入 剪刀手 支付的流程请点击 支付。剪刀手 没有提供扫码支付的客户端 SDK ,所以在扫码支付接入时需要用户自己处理客户端的二维码显示以及交易结果轮询,具体可参见交易流程中的 扫码支付。若接入的是「线下扫码」通道,请直接参考 线下扫码 。
接入 剪刀手 撤销的流程请点击 撤销。此接口仅接受 isv_scan、isv_wap、isv_qr渠道的订单调用。接口支持对于未成功付款或状态不明的订单进行撤销,则关闭交易。调用此接口后用户后期不能支付成功。
接入 剪刀手 退款的流程请点击 退款。由于支付宝 1.0(mapi) 接口的退款需要商家输入支付宝的支付密码,与其他渠道的退款流程有差异,剪刀手 单独列出来支付宝 1.0 的退款交易流程说明,具体可参见 支付宝退款。
接入 剪刀手 红包的流程请点击 红包,红包的接入只需要服务端 SDK ,不需要客户端 SDK 。
接入 剪刀手 企业转账的流程请点击 企业转账,企业转账的接入只需要服务端 SDK ,不需要客户端 SDK 。
扫码支付只需要服务端 SDK ,拿到二维码链接后的流程由商户自行设计,目前 剪刀手 支持支付宝扫码 (当面付) 和微信扫码,可参考以下流程:
1.服务端调用 Server-SDK 封装的创建支付 Charge 的方法请求 剪刀手 。
2.剪刀手 响应你的服务端请求,返回 支付 Charge 对象,在 Charge 对象中有 credential 字段,该字段中包含可以生成二维码的alipay_qr或wx_pub_qr链接。
3.商户需要截取出alipay_qr或wx_pub_qr的链接并自行生成二维码,显示在你的 PC 端或任意你需要展示二维码的平台。
4.在 剪刀手 管理平台配置 Webhooks 的 charge.succeeded 事件。支付完成时,剪刀手 会主动以 POST 方式向你配置在管理平台上的 Webhooks 通知地址发送支付结果,服务端的订单状态请根据 Webhooks 通知更新。
5.同时,建议在处理逻辑中添加主动查询机制:如果在可接受的时间范围内没有收到 Webhooks 通知,你也可以调用 Server-SDK 封装的查询方法,主动向 剪刀手 发起请求来获得订单状态,该查询结果可以作为交易结果。
1.剪刀手 没有针对扫码提供客户端 SDK ,所以请不要将服务端拿到的 charge 传给 剪刀手 的 Client-SDK ,会出现报错 no_such_channel。
2.支付完成后,第三方渠道不会给你的客户端任何结果,所以你需要设计客户端主动轮询服务端查询扫码的支付结果。
「线下扫码」渠道的场景描述如下:
1.用户主扫:channel 为 isv_qr,商户针对某一笔订单/商品生成二维码显示在终端,用户使用支付宝/微信进行扫码支付(该二维码分渠道,支付宝只能扫支付宝对应产生的二维码,微信只能扫微信对应产生的二维码)。
2.用户被扫:channel 为 isv_scan ,用户展示支付宝/微信中的付款码,商户使用扫描设备扫描。
3.固定码:channel 为 isv_wap,商户展示一个固定码(实际就是支付页面的链接)在终端,用户使用微信/支付宝扫码,进入一个支付页面,在该支付页面输入金额(此处可省略),点击支付按钮之后,如果使用微信扫码的就直接调起微信支付,使用支付宝扫码的就直接调起支付宝支付。
其中,isv_qr和isv_scan只需要服务端 SDK,isv_wap需要服务端 SDK 和客户端 H5 SDK。
1.使用isv_qr和isv_scan渠道时,请不要将服务端拿到的 Charge 传给 剪刀手 的 Client-SDK。
2.请勿直接使用客户端支付结果作为最终判定订单状态的依据,由于 剪刀手 没有参与你的客户端和第三方渠道的交互,无法保证客户端支付结果的安全性,建议订单状态的更新对比客户端的渠道同步回调信息和服务端的 剪刀手 Webhooks 通知来确定是否修改。
此接口仅接受 isv_scan、isv_wap、isv_qr 渠道的订单调用,在订单状态不明时可以调用该接口撤销订单。对于未成功付款的订单进行撤销,则关闭交易。调用此接口后用户后期不能支付成功。 注: 对于成功付款的订单请使用 退款 接口进行退款处理。
1.isv_scan、isv_wap、isv_qr渠道可在交易产生当天调用撤销接口。
2.对于成功付款的订单请使用 退款 接口进行退款处理。只有针对未支付或状态不明的订单,我们建议你调用撤销接口。
3.若接入的是中信银行的线下扫码,则撤销接口仅支持isv_scan。
商户想给用户发送微信红包福利时,可以看这里的流程:
1.服务端调用 Server-SDK 封装的发送红包的方法请求 剪刀手 。
2.剪刀手 响应你的服务端请求,返回红包 Redenvelope 对象,此时订单状态为 pending,此时仅代表发送红包请求成功,不代表红包成功发送与拆开;使用剪刀手 测试模式发起的红包请求,必须主动调用红包查询接口查询订单状态才能触发 Webhooks 回调。
3.在 剪刀手 管理平台配置 Webhooks 的 red_envelope.sent 和 red_envelope.received 事件。红包发送成功时,剪刀手 会主动以 POST 方式向你配置在管理平台上的 Webhooks 通知地址发送红包发送和接收结果。
4.同时,建议在处理逻辑中添加主动查询机制:如果在可接受的时间范围内没有收到 Webhooks 通知,你也可以调用 Server-SDK 封装的查询方法,主动向 剪刀手 发起请求来获得订单状态,该查询结果可以作为交易结果。
1.发送频率规则:每分钟发送红包数量不能超过 1800 个;
2.红包规则:单个红包金额介于人民币 1 元 ~ 200 元之间;同一个红包只能发送给一个用户;红包发放后 24 小时未被领取,将退回商户账户。
3.确保可用余额充足。发放现金红包将扣除商户的可用余额,可用余额并不是微信支付交易额,需要预先充值,确保可用余额充足。
商户需要给用户打款转账时,可以参考如下的流程图。剪刀手 企业付款 Transfer 功能只需要服务端 SDK 。目前企业付款 Transfer 接口支持的渠道请参考 企业付款 channel 参数 ,剪刀手 管理平台支持 批量企业付款 操作,且提供 批量企业付款的接口。
1.服务端调用 Server-SDK 封装的企业付款 Transfer 的方法请求 剪刀手 。
2.剪刀手 响应你的服务端请求,返回企业付款 Transfer 对象,此时订单状态为 pending 仅代表企业付款请求成功,并不代表企业付款成功。
3.在 剪刀手 管理平台配置 Webhooks 的 transfer.succeeded 事件。企业付款成功时,剪刀手 会主动以 POST 方式向你配置在管理平台上的 Webhooks 通知地址发送企业付款的结果,此时 Transfer 对象中 status 字段值为 paid,表示企业付款完成。
4.同时,建议在处理逻辑中添加主动查询机制:如果在可接受的时间范围内没有收到 Webhooks 通知,你也可以调用 Server-SDK 封装的查询方法,主动向 剪刀手 发起请求来获得订单状态,该查询结果可以作为交易结果。
关于微信企业付款,请注意以下几点:
1.微信企业付款支持向指定微信用户的 open_id 付款。
2.发送微信企业付款将扣除商户的可用余额,可用余额并不是微信支付交易额,需要预先充值,确保可用余额充足。 查看可用余额、充值、提现请登录 微信支付商户平台 ,进入资金管理菜单,进行操作。
3.付款资金将进入目标用户的零钱(微信—我—钱包—零钱),微信支付会有零钱入账消息的通知,零钱收支明细会展示相应记录。
关于银联电子代付,请注意以下几点:
1.限额:单笔限额 1000 元;单日限额 20000 元;单日不超过 50 笔(上线后可根据实际需求申请提高额度)
2.商户在发起代付请求前,请确定其第三方机构企业账户金额充足,确保代付顺利完成。
3.建议商户对新增的未实名认证的收款人,先进行实名认证,减小风险。
4.目前支持的收款人银行为:工行、农行、中行、建行、交行、招商银行、光大银行、中信银行、浦发银行、广发银行、民生银行、兴业银行、平安银行等。
用户完成付款后在商家同意的情况下需要退款时,剪刀手 的管理平台提供了退款功能,也可以通过 剪刀手 Server SDK 发起退款:
剪刀手 退款 Refund 功能只需要服务端 SDK,所以需要你在客户端为用户设计退款入口。
1.服务端调用 Server-SDK 封装的发起退款方法请求 剪刀手 。
2.剪刀手 响应你的服务端请求,返回退款 Refund 对象,请求是否成功可以根据返回的 Refund 中的 failure_msg 来判断。如果该字段为空则代表退款请求成功,不代表退款已经成功到账。
3.在 剪刀手 管理平台配置 Webhooks 的 refund.succeeded 事件。退款成功时,剪刀手 会主动以 POST 方式向你配置在管理平台上的 Webhooks 通知地址发送退款结果。
4.同时,建议在处理逻辑中添加主动查询机制:在可接受的时间范围内,如果你服务端没有收到 Webhooks 的通知或退款失败,你也可以调用 Server-SDK 封装的查询方法,主动向 剪刀手 发起请求来获得退款状态,该查询结果可以作为交易结果。
1.使用 剪刀手 退款功能的前提是你已经通过 剪刀手 支付接口完成付款。
2.如果未通过 剪刀手 进行退款(即直接从渠道的平台退款),则 剪刀手 不会同步渠道退款状态。
3.若退款订单较多,可使用 剪刀手 管理平台上的批量退款功能 或者 API 接口 批量退款 。
用户完成付款后在商家同意的情况下需要退款时,剪刀手 的管理平台提供了退款功能,也可以通过 剪刀手 Server SDK 发起退款。由于支付宝 1.0(mapi) 接口的退款流程有异于其他渠道,以下为支付宝 1.0 接口退款流程的特别说明(支付宝 2.0 "openapi" 接口的退款请直接参考 退款):
剪刀手 退款 Refund 功能只需要使用服务端 SDK,所以需要你在客户端为用户设计退款入口。
1.服务端调用 Server-SDK 封装的创建退款方法请求 剪刀手 。
2.剪刀手 响应你的服务端请求,返回 退款 Refund 对象。 Refund 对象中的 failure_msg 字段包含支付宝退款链接。
3.商户需要截取 failure_msg 中的退款链接并点击链接进入支付宝退款页面,需要商家输入支付宝支付密码完成退款。注意:支付宝退款链接当日有效,隔日作废,需要重新请求 退款查询 接口或者重新请求 创建退款 接口,均会返回新的链接。
4.在 剪刀手 管理平台配置 Webhooks 的 refund.succeeded 事件。退款完成时,剪刀手 会主动以 POST 方式向你配置在管理平台上的 Webhooks 通知地址发送退款结果。
在可接受的时间范围内,如果你服务端没有收到 Webhooks 的通知或退款失败,你也可以调用 Server-SDK 封装的查询方法,主动向 剪刀手 发起请求来获得退款状态,该查询结果可以作为交易结果。
1.使用 剪刀手 退款功能的前提是你已经通过 剪刀手 支付接口完成付款。
2.支付宝已付款订单在 3 个月内均可以退款;微信允许交易时间在 1 年内的订单进行退款;其他支付渠道均为 1 个月内可退款,超过 1 个月则渠道不允许退款。
3.如果未通过 剪刀手 进行退款(即直接从渠道的平台退款),则不会同步渠道退款状态。
4.调用 剪刀手 退款接口返回的支付宝退款链接当日有效,隔日作废,需要重新请求 退款查询 接口或者重新请求 创建退款 接口,均会返回新的链接。
5.支付宝当面付(即 alipay_qr)渠道的退款属于免密退款,不需要以上步骤。
用户作为使用其他功能模块(订单、余额、优惠券等)的媒介,记录了用户的个人信息、余额、优惠券、结算账户等数据。
剪刀手 用户系统不是独立存在的,你不需要为 剪刀手 创建新用户,只需要将你系统内的用户和 剪刀手 关联即可。
用户 ID 在一个 剪刀手 应用下唯一,这些用户通过该应用的相关接口生成,并且属于该应用。
用户一般情况下不需要主动创建,在使用其他系统功能(如余额充值)时,如果你传入的用户 ID 在 剪刀手 系统内的该应用下不存在时,会自动为你创建。
剪刀手 用户系统的用户分为三类:
在测试模式下,有最大用户数量上限(500 个)。因暂不提供用户删除接口,请勿在测试模式大量创建用户以免造成不便。
商户层级是指商户在业务中作为平台,管理其下多个子商户的交易和业务数据。使用商户层级模块时,发起请求的应用称为平台(应用)。
子商户和平台一样,以 剪刀手 应用的形式存在系统内,且子商户有自己独立的 剪刀手 账号(API KEY,Dashboard 账号等),由子商户独立管理或由平台统一管理。本文所说的子商户一般指子商户应用。
商户层级是为了解决以下需求:
为你的用户提供余额功能,你可以根据自己的业务场景,选择使用余额系统的充值、消费、提现、转账、退款以及余额赠送(用户收款 API )等其中的一个或多个功能。在使用这些功能时,剪刀手 会同时在用户端创建用户交易明细对象和在商家端创建企业清算明细对象,通过这些明细对象,可以记录用户的余额操作情况和企业的收支情况。
剪刀手 余额类型分为(真实)余额和受赠余额,具体区别如下:
订单实现了一套商品购买流程,包括下单、支付、退款、取消等步骤。
订单可以实现渠道交易本身不能很好支持的复杂场景功能,这些功能包括:
优惠券产品是为商家提供各种电子优惠券的运营增值服务,协助商家方便地实现营销优惠措施。用户使用优惠券后,订单将根据优惠券的优惠策略减去相应的金额后再进行付款。优惠券分为现金券和折扣券,进行金额折扣或者百分比折扣。
分润是指在订单交易完成后,订单收款方将订单中的一部分资金转账给分润用户。
分润的分为订单清分和分润结算两步。
分润支持给个人用户和企业用户分润。给子商户分润时,需要使用子商户关联的企业用户 ID。
在使用 剪刀手 接入 支付、订单、充值 时,你的用户需要在客户端唤起支付页面(如支付宝、微信等)并完成付款。使用 剪刀手 Client SDK 可以方便、快速地完成这个步骤,一个完整的支付流程示例如下:
1.用户在客户端点击付款按钮时,弹出支付渠道列表(以你开通的支付渠道为准)。用户在选择其中一个支付渠道(如支付宝)后,客户端向服务端请求获取支付凭证。
2.服务端接收请求后通过 剪刀手 Server SDK 生成支付凭证(Charge 对象、Order 对象、Recharge 对象),并将支付凭证以 JSON 字符串格式返回给客户端。
3.客户端获取到服务端传回的支付凭证后,通过 Client SDK 唤起支付页面。
4.此时,用户可以在唤起的支付页面完成付款。
5.一旦用户完成付款,Client SDK 会同步使用回调的方式告诉你的 APP 支付结果。
6.如果结果是支付成功,客户端再次请求服务端获取真实的最终支付结果(以服务端接收的 Webhooks 为准),或者由服务端直接处理后续发货逻辑。
1.由于客户端网络不稳定、数据易篡改、安全性差等特点,请务必使用服务端的支付结果作为最终的发货凭证。
2.如果你的支付场景是扫码支付,你无需使用 Client SDK,仅需要将服务端传回的支付凭据内的链接展示为二维码即可。(链接转换成二维码由你自行实现)
3.微信公众号支付只能在微信浏览器内;微信浏览器外进行支付,可以使用微信 H5 支付;如果是 H5 封装的 APP 需要使用微信支付,请自行使用 webview 调用微信原生支付方式。
4.如果你的支付场景是手机网页或者 PC 网页支付,请参照 H5 SDK 接入指南 ,两者在申请支付渠道时有区分,不要混用。
目前 剪刀手 的 Android SDK 包含标准及 UI 类库版,你只需选择两者之一进行接入即可。
支持的渠道包含:支付宝 APP 支付(alipay)、微信 APP 支付(wx)、银联 APP 支付(upacp)、招行一网通(cmb_wallet)、QQ 钱包支付(qpay)、百度钱包手机网页支付(bfb_wap)、易宝手机网页支付(yeepay_wap)、京东手机网页支付(jdpay_wap)。
注:
【剪刀手 对象】包含:Charge、Order、Recharge。
此 SDK 要求 Android 2.3 及以上版本,且请使用 Java 7 及以上版本。
剪刀手 SDK 为开发者提供了 Demo 程序,可以快速体验Android SDK接入流程。
支持在线导入和下载 SDK 导入两种方式,后者可以在 Github 下载 Android SDK ,以下我们提供针对 Android Studio 和 Eclipse ADT 两种工具的导入方式。
1.可能会与友盟、百度地图等其他第三方 jar 包冲突,当同时使用这些 jar 包的时候,你需要根据情况判断保留哪一方的 jar 包。
2.wx 渠道是通过向微信客户端发起请求进行支付的,要求: 手机必须安装微信。 应用包名和签名必须与填写在微信开放平台上的一致,微信平台上的签名需是 MD5 且不带冒号的格式。 调试的时候必须打包出来测试,否则无法调用微信支付控件。
3.若安装了银联云闪付 app,那么使用upacp渠道时会直接调起云闪付,反之则默认使用网页版的银联支付。
目前 剪刀手 的 H5 SDK 包含标准
使用 剪刀手 标准 SDK :你的 APP 内的渠道选择页面和支付完成页面(布局、样式等)由你自行实现,你仅需要将支付凭证传给 剪刀手 Client SDK,由 剪刀手 Client SDK 完成唤起支付页面的功能。
注: 【剪刀手 对象】包含: Charge 、Order、Recharge。
手机网页支付:支付宝手机网页支付(alipay_wap)、百度钱包手机网页支付(bfb_wap)、银联手机网页支付(upacp_wap)、微信 H5 支付(wx_wap)、微信小程序支付(wx_lite)、易宝手机网页支付(yeepay_wap)、京东手机网页支付(jdpay_wap)、招行一网通支付(cmb_wallet)
PC 网页支付:支付宝电脑网站支付 (alipay_pc_direct) 、银联网关支付 (upacp_pc) 、银联企业网银支付 (cp_b2b)
其他:微信公众号支付(wx_pub)、QQ 公众号支付(qpay_pub)、线下扫码固定码(isv_wap)
dist 目录下提供了已经构建好的 SDK ,你可以采取以下某一种方式直接引用。
注: 如果你对集成支付插件有定制的需求,请自行构建。
1.微信公众号支付必须在微信浏览器内调试;
2.支付宝在微信浏览器中调用的解决方案请参考:alipay_in_weixin 部分;
3.接入微信公众号支付需要额外去 微信公众平台 配置 安全域名 用以获取 open_id 以及 授权目录 用以支付。
目前 剪刀手 的 iOS SDK 包含标准及 UI 类库版,你只需选择两者之一进行接入即可。
支持的渠道包含:支付宝 APP 支付(alipay)、微信 APP 支付(wx)、银联 APP 支付(upacp)、招行一网通(cmb_wallet)、QQ 钱包支付(qpay)、百度钱包手机网页支付(bfb_wap)、易宝手机网页支付(yeepay_wap)、京东手机网页支付(jdpay_wap)。
注:
【剪刀手 对象】包含:Charge、Order、Recharge。
当仅使用名称包含 _wap 的渠道时,均需要使用 webview 加载,并且不需要导入第三方渠道的 SDK 库包,只需导入 剪刀手 SDK 即可。
当前版本不需要额外添加微信的 SDK,可以正常调用微信支付。
iOS SDK 要求 iOS 7.0 及以上版本。
使用 CocoaPods
在 Podfile 添加:pod 'Pingpp', '~> 2.2.20'
目前 剪刀手 提供 Webhooks 以及联调工具,方便用户接收异步通知以及开发调试,以下为简要介绍。
为了便于客户系统或者第三方系统处理客户的交易信息,剪刀手 系统支持 Webhooks 功能,可以按照客户要求把特定的事件结果推送到指定的地址以便于客户做后续处理。目前支持的事件包括周期性交易汇总信息、支付结果、红包结果、企业转账结果、退款结果、充值结果等。详细的配置流程和发送规则请参考 Webhooks 使用指南
可以查询生产模式下 Webhooks 发送的情况、请求 log 日志查询、检查服务端输出的 charge 格式以及测试 Webhooks 发送数据等功能,协助你解决开发中常见问题。联调工具的功能以及如何使用,请参考 联调工具 的说明
为了满足客户对不同事件的特定处理需求,剪刀手 推出了 Webhooks 功能,以更替原有的异步通知系统。点此查看异步通知系统迁移到 Webhooks 的方法
为了便于客户系统或者第三方系统处理客户的交易信息,剪刀手 系统支持 Webhooks 功能,可以按照客户要求把特定的事件结果推送到指定的地址以便于客户做后续处理。目前支持的事件包括周期性交易汇总信息、支付结果、红包结果、企业转账结果和退款结果等,如果你需要其他类型事件,请联系我们。
登录 剪刀手 管理平台,点击你创建的应用,点击左侧「应用设置」->「Webhooks」选项。新建一个 Webhooks 事件的基本操作如下图所示:用户需要设置接收 Webhooks 事件的地址、模式和事件类型。
为了进一步确保安全性, 剪刀手 Webhooks 提供了签名验证。你需要验证该通知是来自于 剪刀手 后再更新你的订单状态。
剪刀手 在管理平台中提供了 RSA 公钥,供验证签名,该公钥具体获取路径:点击管理平台右上角公司名称->开发信息-> 剪刀手 公钥。
用于检测你服务端返回给客户端的 Charge (支付凭据)格式是否正确。
用于 test / live 模式下查询或确认你服务器是否收到 剪刀手 Webhooks 通知。
当你发现自己服务器没有收到 剪刀手 Webhooks 通知或需要确认实际发送情况以及原因时,在上图的 webhooks通知查询工具 处选择相应的「查询事件」、「webhooks url」、「查询条件」后,输入商户订单号或者 剪刀手 流水号进行查询。该工具包含的查询结果为:webhooks 是否发送、发送的内容、何时发送、你响应的内容和状态码。当然,如果出现你自己服务器响应问题后,你依然想重新触发 Webhooks 发送以更新自己的订单状态的话,可以点击 重新发送 按钮来触发。
用于开发者查询针对已登录的 剪刀手 账号在某个时间段内,服务器请求 剪刀手 的日志记录。请求概要信息包括:请求地址、请求时间、响应状态码、请求IP 以及 请求方法。查询出来的 list 中每条记录都可以点开查看详情,详情中还有更加具体的请求信息。该日志查询工具方便开发者查询 剪刀手 接口响应时间,在自己本身日志记录不完全的情况下,也可以在调试阶段使用 剪刀手 的日志查询工具查看每条记录具体的请求参数和响应的信息,方便排错等等。查询时,如果出现【数据处理中,请稍后重试】的提示,请等待一段时间,稍后继续加载更多数据。