天下支付分久必合合久必分,而微信小程序支付的异军突起成为了互联网支付的半壁江山。可支付通道的门槛与分账功能的不完善逐渐影响着广大老板的信心。不过现在,小编将简单介绍我们产品的接入方式(有需求可以私信哦~)。
1.产品介绍
1.1简介
微信小程序:商户自行申请的微信小程序,进行商品信息和订单管理,在用户确认商户订单信息后调用微信支付完成下单购买的流程。
1.2应用场景
适用对象:开通了微信线上、线下小程序支付权限的商户;
我们支持:
- 小程序支付开通、小程序支付配置(小程序参数)、小程序支付(AT)、AT活动报名、手续费配置(内扣、外扣、实收、后收、线上、线下);
- 支持AT代金券、支持AT商家券。
流程图:
2.进入前准备
2.1商务准备
1.选择接入模式
商户选择对应模式并与我们完成签约,即可通过接口或控台方式完成商户入网。(记得私信哦~)具体流程:完成协议签署后,将准备好的入网材料提供给支付机构人员,由三方人员发起入网申请,待审核通过入网成功后,联系人将收到短信通知控台账号及密码。
2.商户进件入网
API企业商户调用 企业商户基本信息入驻接口 、小微商户调用 个人商户基本信息入驻接口完成开户、绑卡、结算配置。
3.选择接入功能并准备相关材料
微信支付:提供商户或服务商主体的小程序APPID。
2.2对接准备
第一步:密钥获取
联调之前需要先获取公私钥(记得私信哦~);
第二步:公共参数获取
登录商户控台后,可在开发设置-开发者信息中,获取sys_id,product_id参数信息;
第三步:业务开通及配置
步骤一:服务商功能及权限开通。服务商通过线下签约方式申请微信功能,支付机构人员在审核好服务商资料之后,为服务商开通相关支付功能,及费率配置。
步骤二:为商户开通功能及权限。服务商权限及费率配置完成后,服务商可在服务商控台为下属商户申请开通相关支付功能,或通过调用商户业务开通接口开通。具体流程请参考商户进件API文档。
3.开发指引
3.1对接规范
调用接口,均采取POST形式提交,数据格式统一为JSON格式(记得私信哦~);
3.2确认业务配置
3.2.1 微信侧准备:
商户在微信公众平台有账号而且有小程序,开发阶段可以使用体验版本进行测试,需要将小程序先上线,小程序上线需通过微信审核。
3.2.2 渠道侧准备:
商户微信小程序业务已开通、小程序appid已配置、小程序费率已配置;
查询方式
1)服务商控台:【商户信息】【查看】【商户变更】【业务信息】【基础支付】
2)商户控台:【我的信息】
3)通过微信配置查询接口来确认相关配置。
商户微信实名认证状态已完成,实名认证状态显示已授权。
查询方式
1)服务商控台:【商户信息】
2)通过微信实名认证状态查询接口来确认相关配置。
3.3系统调用流程
3.3.1交易流程
接入步骤说明:
1.通过授权获取用户 open_id
a.小程序端调用 wx.login(Object object)接口获取登录凭证(code)示例:
wx.login({
success (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://test.com/onLogin',
data: {
code: res.code
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
b. 商户服务端使用第一步获取的code 换取 open_id ,后台调用接口获取openID示例代码如下:
/*GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code*/
url = 'https://api.weixin.qq.com/sns/jscode2session'
params = {
'appid': app_id,
'secret': 'wx_secret',
'js_code': wx_code,
'grant_type': 'authorization_code',
}
resp = requests.get(url, params, timeout=15)
result_dict = json.loads(resp.text)
openid=result_dict.get('openid')
2.商户服务端使用open_id下单
调用聚合正扫接口下单拉起支付,需要传入前端调用获得的 open_id 获取微信返回支付 pay_info信息。
聚合正扫接口需关注以下字段:
参数 | 中文名 | 必填 | 说明 |
---|---|---|---|
trade_type | 交易类型 | Y | T_MINIAPP: 微信小程序 |
time_expire | 交易有效期 | N | 指定交易失效时间,不指定微信默认是2小时,超过有效时间的订单会默认被关闭 |
+wx_data | 微信拓展参数集合 | N | 通过前端调服微信获取的数据换取pay_info; |
sub_appid | 子商户公众账号ID | N | 微信小程序app_id |
openid | 用户标识 | Y | 前端调用微信获取的用户在商户appid下的唯一标识; |
sub_openid | 子商户用户标识 | N | 前端调用微信获取的用户在子商户appid下的唯一标识; |
notify_url | 异步通知地址 | N | 交易异步通知地址,http或https开头 |
*其中wx_data中,如填写openid则无需填写sub_appid+sub_openid。如不填openid,则需填写sub_appid和sub_openid。
同步返回关注以下字段:
参数 | 中文名 | 说明 |
---|---|---|
trans_stat | 交易状态 | 同步通常返回“处理中”,交易终态以异步返回为准 |
resp_desc | 业务响应信息 | 关注失败原因 |
bank_message | 通道返回描述 | 关注通道返回的失败原因 |
pay_info | 支付信息 | 这个字段后续调用微信需要用到的 |
hf_seq_id | 全局流水号 | 系统生成全局流水号,后续可以用这个流水号查询交易 |
3.小程序端发起支付
小程序端使用聚合正扫返回的pay_info 调用wx.requestPayment(OBJECT)发起微信支付。
wx.requestPayment(
{
'timeStamp': '',
'nonceStr': '',
'package': '',
'signType': 'MD5',
'paySign': '',
'success':function(res){},
'fail':function(res){},
'complete':function(res){}
})
4.交易终态获取
客户支付完成后汇付会将支付结果推送到客户异步地址,主要关注参数如下
参数 | 中文名 | 说明 |
---|---|---|
settlement_amt | 结算金额 | 用户实际支付金额。如有优惠该金额小于交易金额; |
fee_amount | 手续费金额 | 系统扣收的支付手续费金额 |
trans_stat | 交易状态 | 交易的最终结果;S:成功、F:失败 |
out_trans_id | 用户账单上的交易订单号 | 交易在微信侧的流水号 |
party_order_id | 用户账单上的商户订单号 | 交易在微信侧生成的订单号 |
wx_user_id | 微信用户唯一标识码 | 用户在微信侧的ID号 |
wx_response | 微信返回的响应报文 | Json格式 |
bank_message | 通道返回描述 | 如交易失败可以关注一下通道返回的错误描述 |
如果长时间未收到异步结果可以调用扫码交易查询接口查询交易状态;
3.3.2退款流程
完整的交易流程还要包括退款。由于用户或者商户的原因需要退款时,商户可以通过本接口将支付款退还给用户,退款成功资金将原路返回。
关注以下请参:
参数 | 中文名 | 必填 | 说明 |
---|---|---|---|
org_req_date | 原交易请求日期 | Y | 用户发起支付的日期 |
org_req_seq_id | 原交易请求流水号 | C | 商户系统发给斗拱的指令流水号 |
org_hf_seq_id | 原交易全局流水号 | C | 支付机构生成的系统流水号 |
org_party_order_id | 原交易微信支付宝的商户单号 | C | 该笔交易在微信端的流水号 |
ord_amt | 申请退款金额 | Y | 退款金额<=原交易金额 |
- 原交易请求流水号、原交易全局流水号、原交易微信支付宝的商户单号三选一即可;
- 退款金额不能大于交易金额;由于接口支持多次部分退款,多次退款场景下退款总额不能高于原交易金额;
- 退款也是以异步返回的成功或失败状态为最终结果;
- 一些特殊场景下退款时效可能比较长,注意接口描述文档中的退款时效说明;
3.3.3对账流程
为了满足商户财务的对账需求,系统提供了对账功能。
方案一:控台下载;
方案二:接口获取;
- 接口下载的对账文件包括以下四类:
- 日对账单类型:包括日结算对账单、日分账对账单、日出金对账单;
- 日交易数据:主要是各种支付交易记录;
- 月结算对账单:按月汇总的结算对账单;
- 月交易数据:按月汇总支付交易记录;
3.3.4异步通知
针对交易结果,支付机构会通过异步消息的方式通知客户系统。
调用接口时上送的异步通知地址为http/https路径:服务器为POST回调,默认超时时间为5秒,超时后会重试3次;不支持HTTP重定向;服务器对应答不是200~300之间的错误,会默认重试3次;异步通知服务器对HTTPS不认证验签和ALLOW_ALL_HOSTNAME_VERIFIER;如商户自定义通知端口,请使用8000-9005内端口,否则无法通知;URL 上请勿附带参数;异步回调请求编码集为:UTF-8;收到通知后请返回状态码“200”,响应异步通知。
注意事项:
同样的异步消息可能会通知多次,因此接收异步消息的处理需做好幂等,保障多次接收到同样的消息处理后结果不变。
在实现异步消息接收的同时,都建议您在重要的业务环节,通过反查接口确认 非终态 支付订单的状态,以保证在发生异步消息延迟或无法送达情况下的支付结果一致性。
4.分账功能
因为微信端的大力监管,微信仅可以进行30%的分账比例且只能在微信全家桶中使用。为了广大老板的分账需求,我们特别推出了分账产品,最高支持100%分账比例,不限分账人数,资金不落地,不会产生额外税务,费率还比官方低,也支持不同的业务场景哦(H5,PC,APP...)
由于篇幅问题,分账功能详细内容小编我将在不久后更新哦,有意向者也可以私信哦,我们将根据您的产品给你匹配完美的解决方案。
标签:异步,场景,商户,微信,程序,接口,之微信,支付,id From: https://blog.csdn.net/weixin_58684273/article/details/140465240