# 支付
## 一、使用场景
**App帐号打通实现之后,支付变现是非常重要的场景。核心能力:支付。** <font color='red'> **SDK可以支持App无需开发任何支付功能,直接使用SDK自带的微信支付进行支付。** </font>
(资金去向:如果您在小鹅通后台绑定了微信支付商户号,钱将直接到您的微信支付商户号里。)
**可实现:**
1、APP用户在小鹅通支付的订单信息,可 <font color='red' >**关联用户订单到App帐号**</font>。(通过[订单异步推送](https://api-doc.xiaoe-tech.com/api_list/news_push/order_push.html)可以实时获得)
2、APP用户可以<font color='red' >**通过app自有的支付方式**</font>,完成对小鹅通店铺内课程的购买,无需跳转即可学习和观看直播。(sdk做为交付场所,打通课程权益)
3、<font style='background:yellow'>**APP用户支持的支付方式:微信支付、ios代币支付和app自带支付方式**</font>
## 二、支付方式——微信支付
SDK提供了一套完整的微信支付闭环,节省开发成本。

**技术说明**:小鹅通实现SDK中微信支付的**原理是**<font style='background:yellow'>**使用了微信支付中的H5支付**</font>**,所以并**<font style='background:yellow'>**不需要账号上给到openid,也可以进行支付。**</font>
[点击查看](https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_6_0.shtml)
<font color='red'>注:iOS</font>应用在支付上如果<font color='red'>虚拟商品(课程)直接使用微信支付,会有拒审和下架风险,建议选择下面iOS代币支付方案。操作如下:</font>
## 三、支付方式——iOS代币支付
必要知识:<font color='red'>代币指的的是App生态中的虚拟币(如喜币、得到贝等)</font>,目前iOS虚拟商品的支付上(IAP)<font color='red'>苹果必须收取30%的“苹果税”</font>,而苹果收取前提是需要将商品在苹果开发者平台上创建好,对于商品众多的业务场景中,无法做到。
实现方式:
所以业内<font style='background:yellow'>**(常规操作)是将商品弄成9.9、19.9、88、388不等的充值金额,类似充值卡。提前在苹果开发者平台创建好这类“商品”,供iOS用户充值支付,苹果再从这几种“商品”中进行抽成。**</font>
#### 流程图

技术说明:当iOS的SDK配置开启代币支付后,H5在发起确认订单请求时,不会直接拉起微信支付,而是<font color='red'>会通过SDK通知App支付信息</font>(订单号、商品名、商品ID、规格、数量、金额等),<font color='red'>App可跳转或拉起自己的代币扣款收银台,进行代币扣减(支付)</font>,扣减(支付)过程中<font color='red'>App服务端向小鹅通服务器</font>【小鹅通支付结果回调API】<font color='red'>发起请求</font>,告知该订单号支付成功,小鹅通服务器随即将订单状态改为已支付,<font color='red'>课程权益同时开通</font>。
#### 交互图

相关接口:
[代币支付签名算法](./../algorithm.md)
1.小鹅通支付结果回调API
url:https://pay.xiaoe-tech.com/pay/merchant/payCallback
method:POST
content-type:application/json
~~~
{
"sign": "5b94924ae2aa36dfb7b024839b363754", //sign签名
"timestamp": "1634550379",//时间戳(秒)
"app_id": "apphgnhaunj1360", //店铺ID
"out_trade_no": "oo_5ac1dd24803ae_GtfAOxiS1", //小鹅通系统订单号
"transaction_id": "order_12345678", //App侧订单号或交易流水号
"nonce": "abcdef" //随机字符串
}
~~~
2.App侧支付结果查询接口(用于小鹅通主动查询订单状态校验核准)
url:**<font color='red'>需要商家的App后台提供</font>**
method:POST
content-type:application/json
~~~
//请求示例
{
"sign": "5b94924ae2aa36dfb7b024839b363754",
"timestamp": "1634550379",
"out_trade_no": "oo_5ac1dd24803ae_GtfAOxiS1",
"transaction_id": "42000000682018040207188274111",
"nonce": "abcdef"
}
~~~
~~~
//返回示例
{
"code": 0, // 0 访问成功 1 系统错误 2 签名错误 3 参数错误 4 查无此单
"msg": "ok",
"data": {
"order_state": 'UNPAID',
// UNPAID 未支付 FAILED 付款失败 DELETED 已删除 PAID 已付款 REFUND 已退款 CLOSED 已关闭
"out_trade_id": 'oo_6247cdccddbc5_9xPY0N4g', //小鹅订单号
"transaction_id": '2022040222001406041408616653' //交易号
}
}
~~~
## 四、支付方式——自有支付
适用场景:App中本身就有完善的支付功能,包括<font style='background:yellow'>可以微信支付、支付宝、云闪付、银联</font>等等,<font style='background:yellow'>在App中售卖小鹅通的课程</font>,能够使用App中的支付。<font style='background:yellow'>支付后</font>,能够在<font style='background:yellow'>小鹅通中看到相对应权益的课。</font>
案例:

实现方式:
1. 首先将在小鹅通的课程通过<font color='red'>OpenAPI同步商品到App后台<font>,可以将课程封面,课程标题、课程ID等关键信息拿到,[点击查看接口详情](https://api-doc.xiaoe-tech.com/api_list/product/get_goods_relations_2.html)
(该案例商家故意将课程在小鹅通的价格设置的特别高,防止用户在H5购买,希望都在App上购买)

3. <font color='red'>将课程信息通过App原生的开发展示在App中售卖</font>

4. 当走完App支付流程后,App服务端需要将该App用户对应的<font color='red'>小鹅通用户(user\_id)开通课程权益</font>,[调用开通权益接口](https://api-doc.xiaoe-tech.com/api_list/start_class/xe_order_delivery.html),重要参数如课程ID,小鹅通用户ID等信息。
5. 支付完成后此时App可引导进入小鹅通SDK的H5中,<font color='red'>用户即可获得课程权益</font>,并且观看学习课程。
<font style='background:yellow' color='red'>优点:</font>App内全闭环,适合App支付功能相对完善,并且支付后有各种特殊续期逻辑的情况,因为支付流程完全在App自己掌握,<font style='background:yellow' color='red'>最终调用一个API通知小鹅通给用户开通课程权益即可。</font>
缺点:App具有一定的开发工作量。
- 开发前必读
- 小鹅云介绍
- 更新日志
- 开始开发
- 开发指南
- 创建并授权应用
- 获取access_token(含代码示例)
- 开通接口权限
- 全局返回码
- 常用工具
- 日志排查工具
- 场景方案
- 同步用户场景
- 同步商品场景
- 同步订购关系场景
- 同步积分场景
- 同步页面统计场景
- 同步学习数据场景
- 同步推广员场景
- 内嵌SDK服务场景
- 产品介绍
- 产品简介
- 客户案例
- 接入流程
- 业务文档
- 账号打通
- 支付
- 直播带货
- 商品同步
- 订单同步
- 学习数据同步
- 企业内训
- PCweb
- H5web
- 流量变现
- App分享
- 微页面装修
- 直播连麦
- 技术文档
- 小鹅通SDK开发者声明
- 小鹅通SDK个人信息保护政策(2022年9月28日生效)
- 小鹅通SDK个人信息保护政策(2022年9月28日失效)
- 开发指南
- 原生SDK登录态
- Android-SDK 接入
- iOS-SDK 接入
- WebSDK接入
- 小程序接入
- 小程序支付接入
- 代币支付签名算法
- SDK&H5账号详解
- 发布日志(iOS)
- 发布日志(Android)
- 常见问题
- 消息推送
- 使用说明
- 消息加/解密
- 消息接收URL校验说明
- 订单状态推送
- 用户手机号变更推送
- 用户状态变更推送
- 积分变更消息推送
- 商品变更推送
- 考试消息推送
- 活动签到推送
- 订单支付推送
- 账号合并推送
- 用户注册推送
- 优惠券消息推送
- 信息采集推送
- 权益变更推送
- 用户标签变更消息推送
- API列表
- 获取access_token(含代码示例)
- 用户管理
- 使用说明
- 注册新用户
- 更新用户信息
- 获取用户列表2.0
- 获取用户列表1.0
- 查询单个用户信息
- 批量查询用户信息
- 获取用户消费信息
- 获取课程学员列表
- 获取训练营pro学员列表
- 获取会员卡用户信息
- 查询单个用户标签列表
- 查询用户合并记录
- 获取标签列表
- 添加/修改标签
- 添加/修改用户标签
- 获取用户反馈列表
- 获取用户反馈回复列表
- 回复用户反馈
- 学习数据管理
- 获取学习记录列表
- 获取每日学习记录
- 获取指定资源学习记录信息
- 获取营期下用户的学习情况
- 获取训练营pro学员任务详情
- 直播管理
- 获取直播列表
- 批量查询指定直播间列表信息
- 获取班课列表
- 获取签到列表
- 获取签到学员列表
- 获取直播红包列表
- 获取红包领取记录
- 获取直播数据概览
- 获取直播详情
- 获取直播详情2.0
- 获取红包数据概况
- 获取直播间讨论区消息列表
- 获取直播间多段推流记录
- 创建直播
- 编辑直播
- 上架/下架直播
- 删除直播
- 获取直播间用户列表
- 商品管理
- 查询商品列表2.0
- 查询商品列表1.0
- 查询组合课资源列表4.0
- 查询组合课资源列表3.0
- 获取训练营营期任务
- 商品详情2.0
- 商品详情1.0
- 获取课程关联的助学工具
- 获取直播带货商品列表
- 获取实物商品评论列表
- 商品增加库存
- 商品减少库存
- 新建实物商品
- 编辑实物商品
- 删除实物商品
- 获取实物商品类目列表
- 获取C端搜索商品列表
- 商品分组管理
- 获取店铺商品分组列表
- 获取商品分组内商品列表
- 批量新建/更新商品分组
- 删除商品分组
- 素材管理
- 获取素材列表
- 获取素材分组列表
- 素材分组编辑
- 素材分组移动
- 素材分组删除
- 订单管理
- 获取订单列表2.0
- 获取订单详情2.0
- 获取订单列表1.1
- 获取订单列表1.0
- 查询用户订单列表
- 获取订单详情
- 获取买赠订单信息
- 待付款订单改价
- 获取售后订单列表
- 获取售后订单详情
- 订单退款
- 订购管理
- 用户开通产品包权益2.0
- 用户开通产品包权益
- 查询用户订购资源列表
- 用户购买关系查询
- 查询用户资源权益2.0
- 查询用户资源权益1.0
- 取消订购
- 批量开通用户产品包权益-创建任务
- 批量开通用户产品包权益-查询任务列表
- 批量开通用户产品包权益-查询任务详情
- 物流管理
- 普通实物单发货(即将下线)
- 获取物流公司信息列表
- 订单全部商品发货
- 订单部分商品发货
- 修改已发货订单的物流信息
- 获取运费模板列表
- 推广员管理
- 查询推广员列表
- 查询推广员客户列表
- 查询推广员的下级推广员列表
- 查询指定推广员的信息
- 查询客户所属推广员
- 查询推广员名下新增/过期客户
- 新增推广员
- 推广员绑定客户
- 修改/解除绑定关系
- 设置推广员上级
- 推广订单详情
- 按日期查询推广员的收益和新增加的下级
- 推广订单详情(支持购物车订单返回多条记录)
- 信息采集管理
- 获取信息采集列表
- 获取单个信息采集结果
- 获取用户信息采集结果
- 根据表单ID以及用户ID获取信息采集结果
- 营销码券管理
- 优惠券列表
- 获取优惠券详情2.0
- 获取优惠券详情
- 获取优惠券领券用户
- 发放优惠券2.0
- 发放优惠券
- 优惠券核销
- 获取优惠码列表
- 获取优惠码码库列表
- 获取优惠码效果数据
- 创建优惠码
- 优惠码添加库存
- 优惠码失效
- 编辑优惠码
- 优惠码删除
- 获取兑换码码库列表
- 追加兑换码库存
- 创建兑换码
- 编辑兑换码
- 兑换码失效
- 用户使用兑换码
- 获取兑换码批次列表
- 作废单个兑换码
- 积分管理
- 查询用户积分日志
- 获取单个用户积分信息
- 批量获取用户积分列表
- 获取店铺积分信息
- 批量发放积分
- 批量扣减积分
- 解冻冻结积分
- 设置店铺积分过期时间
- 业务类型说明
- 页面统计管理
- 新建页面统计
- 编辑页面统计
- 获取页面统计列表
- 获取页面统计详情
- 获取页面统计订单列表
- 新建投放渠道
- 获取投放渠道列表
- 打卡管理
- 获取打卡列表
- 获取打卡参与用户
- 获取指定学员活动日记列表
- 获取活动点赞列表
- 获取指定学员被点赞总数和列表
- 获取用户日记被点评/评论列表
- 获取指定打卡的作业列表
- 获取学员的打卡日记列表
- 获取打卡关联的课程信息
- 练习管理
- 获取练习基本信息列表
- 获取练习结果列表
- 获取练习详情
- 获取学员练习答题详情
- 作业管理
- 获取作业本列表
- 获取作业基本信息列表
- 获取作业结果列表
- 获取作业详情
- 获取学员作业答题详情
- 圈子管理
- 获取用户参与的圈子
- 考试管理
- 获取考试列表
- 获取考试详情
- 获取考试结果列表信息
- 获取考试结果详细信息
- 活动管理
- 获取活动列表
- 获取签到列表
- 获取活动报名列表
- 获取活动签到信息
- 组织管理
- 获取员工列表
- 获取员工详细信息
- 添加或者保存员工信息
- 启用员工
- 停用员工
- 删除员工
- 根据员工账号获取用户ID
- 获取组织结构树
- 添加或修改组织架构
- 移除组织架构
- 微页面管理
- 获取微页面列表
- 企学院专用(不对外开放)
- 学员管理(限企学院)
- 企学院获取学员列表
- 企学院添加学员
- 企学院修改学员
- 企学院删除学员
- 企学院添加组织架构
- 企学院删除组织架构
- 企学院编辑组织架构
- 企学院获取组织架构
- 企学院获取部门信息
- 活动管理(限企学院)
- 企学院用户签到活动列表
- 培训计划管理(限企学院)
- 获取培训计划列表
- 获取培训计划详情
- 获取用户培训学习数据
- 获取员工的培训计划列表
- 常见问题
- 问题汇总
- 问题反馈
