支付API相关

您所在的位置:网站首页 商户号受限 支付API相关

支付API相关

2023-11-29 05:29| 来源: 网络整理| 查看: 265

免费:不收取付款手续费,节省企业成本。 灵活:可通过页面或接口发起付款,灵活满足企业不同场景的付款需求。 友好:通过openid即可实现付款,用户授权即可,体验更好。 快速:在发起后,及时到账用户零钱。通过微信消息触达,用户及时获知入账详情。 安全:提供多种安全工具,满足不同场景安全需求。如:按需调整付款额度;支持收款账户限制;支持安全防刷,拦截恶意用户、小号、机器号码。 支持自定义大额通知等。

 

 

 

 

运营指南

更新时间:2023.01.11

已获得商家转账到零钱产品权限的商户号,可通过「商户平台 -> 产品中心 -> (运营工具)商家转账到零钱 -> 前往功能」完成各项设置、通过页面发起转账和查询转账记录。

#1. 充值资金

发起转账前,需要向运营账户中充值。在【微信支付商户平台 -> 交易中心 -> 充值/转入】选择入款账户为「运营账户」,支持网银充值、扫码充值和转账充值。

使用转账充值需在「商户平台 -> 产品中心 -> (资金解决方案模块)转账充值」先开通转账充值权限。

商家券样式 #2. 设置转账发起方式

商家转账的发起方式分为两种:「API发起转账」和「页面发起转账」,使用商家转账至少开启一种方式。

使用页面发起转账,无需开发,验证操作密码后即可开启页面发起转账功能。

使用API发起转账,需要额外设置转账验密人,并且在开启后设置「接口安全」才可发起转账,详见API发起转账的相关配置。

商家券样式 #3. API发起转账的相关配置 #3.1. 设置验密人

商家转账验密功能是商家转账产品下的资金安全管理工具,在转账请求发起后,验密人需要在微信支付商家助手进行安全确认后,才可发起转账交易。

在开启API发起转账模式后,可设置转账验密人,转账验密人必须为员工账号(可在「微信支付商户平台 -> 账户中心 -> 员工账号管理」中增加和管理)。

验密消息24小时内有效,过期后将自动关闭,可在微信支付商家助手小程序的消息中心查看已关闭的付款。

#3.2. 设置免密功能

转账验密是商家转账到零钱下的资金安全管理工具,商户可通过转账验密保障出资安全,即通过api发起转账请求后,需验密人在移动端确认信息才可出资。具体规则如下:

可通过商家助手/服务商助手小程序 - 商家转账进入出资管理页面,可逐笔确认,也可以批量选择最多50条进行确认。

在保障安全的前提下,为提高付款效率,商家可以申请一定的免密额度(0-2万),单次向单用户发起转账(单个明细单)的金额若在该额度内,将跳过转账验密流程,直接执行转账。

在免密额度内,若平台监测到出资风险,仍会向验密人发起验密请求,请留意验密消息。

验密确认不代表转账成功,实际转账结果需以接口查询的明细单状态、转账记录或转账账单为准。

示例1

免密额度最高可设置为20,000元,需按提示完成安全设置后才可设置成功。

安全设置包括设置操作密码、安全联系人 (opens new window)及安全医生 (opens new window)。

商家券样式 #3.3. 设置接口安全

此处填写用于API发起转账的服务器IP地址,具体IP可以自行联系贵司内部技术同事获取。

只有指定的IP地址才可通过API接口发起商家转账,设置该项可以有效避免计划外IP发起转账,保障资金安全。

同时微信支付提供了免费的系统安全检测服务,请求商家转账API的服务器IP地址,应先在安全医生中通过安全诊断。

#4. 设置转账额度

商户在功能页面可以操作调整的额度包括“商户号单日转账额度”和“单笔转账最低金额”。

其他额度不支持修改(“单笔转账最高额度”、“单日向单用户转账额度”,详见产品介绍-商家转账到零钱转账规则

#4.1. 设置单日转账额度

单日转账额度为商户号单日累计可出资的最大额度。为保障资金安全,建议根据业务实际出资情况设置合理值。

单日转账额度最高可设置为1000,000元,需按提示完成安全设置后才可设置成功。

安全设置包括设置操作密码、安全联系人 (opens new window)及安全医生 (opens new window)。

商家券样式 #4.2. 设置单笔转账最低金额

单笔转账最低金额是指商户单次向一名用户转账的最低金额,系统默认为0.3元,也可在商户平台中修改为0.1元。

若单笔转账金额低于0.3元时,用户端收款凭证将不展示转账备注信息,区别如下图

商家券样式 #5. 场景管理

每个商户最多可在商户平台申请3种转账场景 (opens new window)。

商户平台支持新增、删除、管理转账场景,也可查看申请时提交的场景证明材料。

首个获得的转账场景为默认场景,在发起商家转账时需传入实际的场景id,若发起转账时未填入场景id,则使用默认场景id。

管理收款用户列表:

佣金报销、企业报销、企业补贴、服务款项、采购款项场景 只支持向已添加为收款用户列表中的用户发起转账,且该用户已完成微信支付实名认证。

使用这几种场景的商户,请提前添加收款用户至收款用户列表,否则将导致转账失败。

商家券样式 #6. 使用页面发起转账(无需开发)

可从「我的产品-商家转账-产品功能-转账发起方式-页面发起-去使用」进入转账页面,

使用流程:下载模版 -> 填写转账信息并上传 -> 确认出资。

转账规则请至平台下载模版后查看。若超过24小时未确认,系统将关闭转账。确认后资金将转入用户的微信零钱,不可取消。

发起转账 #7. 查询转帐记录及转账账单 #7.1 查询转账记录及获取电子回单

发起转账后可在「商户平台 -> 产品中心 -> (运营工具模块)商家转账到零钱 - 前往功能」,查看转账记录及获取电子回单。

支持查询2年内的转账记录,可查询当前的转账记录及批次状态(转账中、转账成功及转账失败)。

仅支持传入通过实名校验的用户姓名,来申请电子回单。电子回单可用于证明转账行为的真实性,便于审计、报税。

#7.2 查询账单

商家转账账单支持在商户平台下载5年内账单,次日9点可下载前一天账单(不包括转账状态为转账中的账单)。

点击查看账单样式 (opens new window)。

https://pay.weixin.qq.com/docs/merchant/products/batch-transfer-to-balance/operation.html#_5-%E5%9C%BA%E6%99%AF%E7%AE%A1%E7%90%86

 

 

发起商家转账

更新时间:2023.06.06

发起商家转账接口。商户可以通过该接口同时向多个用户微信零钱进行转账操作。请求消息中应包含商家批次单号、转账名称、appid、转账总金额、转账总笔数、转账openid、收款用户姓名等信息。注意受理成功将返回批次单号,此时并不代表转账成功,请通过查单接口查询单据的付款状态。

#接口说明 支持商户: 【普通商户】 请求方式: 【POST】/v3/transfer/batches 请求域名: 【主域名】 https://api.mch.weixin.qq.com    使用该域名将访问就近的接入点 【备域名】 https://api2.mch.weixin.qq.com    使用该域名将访问异地的接入点 ,指引点击查看 #请求参数 HeaderHTTP头参数 Authorization必填string 请参考 签名认证 生成认证信息 Accept必填string 请设置为 application/json Content-Type必填string 请设置为 application/json Wechatpay-Serial必填string 【微信支付平台证书序列号】 请求参数中的敏感字段,需要使用微信支付平台证书公钥加密。请设置为该证书的证书序列号。详见敏感信息加解密 Body包体参数 appid必填string(32) 【商户appid】 申请商户号的appid或商户号绑定的appid(企业号corpid即为此appid) out_batch_no必填string(32) 【商家批次单号】 商户系统内部的商家批次单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一 batch_name必填string(32) 【批次名称】 该笔批量转账的名称 batch_remark必填string(32) 【批次备注】 转账说明,UTF8编码,最多允许32个字符 total_amount必填integer 【转账总金额】 转账金额单位为“分”。转账总金额必须与批次内所有明细转账金额之和保持一致,否则无法发起转账操作 total_num必填integer 【转账总笔数】 一个转账批次单最多发起一千笔转账。转账总笔数必须与批次内所有明细之和保持一致,否则无法发起转账操作 transfer_detail_list必填array[TransferDetailInput] 【转账明细列表】 发起批量转账的明细列表,最多一千笔 属性   transfer_scene_id选填string(36) 【转账场景ID】 该批次转账使用的转账场景,如不填写则使用商家的默认场景,如无默认场景可为空,可前往“商家转账到零钱-前往功能”中申请。如:1001-现金营销

请求示例

POST package com.wechat.pay.java.service.transferbatch; import com.wechat.pay.java.core.RSAConfig; import com.wechat.pay.java.service.transferbatch.model.InitiateBatchTransferRequest; import com.wechat.pay.java.service.transferbatch.model.InitiateBatchTransferResponse; import com.wechat.pay.java.service.transferbatch.model.TransferDetailInput; import java.util.ArrayList; import java.util.List; public class InitiateBatchTransfer { public static String merchantId = ""; public static String privateKeyPath = ""; public static String merchantSerialNumber = ""; public static String wechatPayCertificatePath = ""; public static TransferBatchService service; public static void main(String[] args) { RSAConfig config = new RSAConfig.Builder() .merchantId(merchantId) .privateKeyFromPath(privateKeyPath) .merchantSerialNumber(merchantSerialNumber) .wechatPayCertificatesFromPath(wechatPayCertificatePath) .build(); service = new TransferBatchService.Builder().config(config).build(); InitiateBatchTransferRequest initiateBatchTransferRequest = new InitiateBatchTransferRequest(); initiateBatchTransferRequest.setAppid("wxf636efh567hg4356"); initiateBatchTransferRequest.setOutBatchNo("plfk2020042013"); initiateBatchTransferRequest.setBatchName("2019年1月深圳分部报销单"); initiateBatchTransferRequest.setBatchRemark("2019年1月深圳分部报销单"); initiateBatchTransferRequest.setTotalAmount(4000000L); initiateBatchTransferRequest.setTotalNum(200); { List transferDetailListList = new ArrayList(); { TransferDetailInput transferDetailInput = new TransferDetailInput(); transferDetailInput.setOutDetailNo("x23zy545Bd5436"); transferDetailInput.setTransferAmount(200000L); transferDetailInput.setTransferRemark("2020年4月报销"); transferDetailInput.setOpenid("o-MYE42l80oelYMDE34nYD456Xoy"); transferDetailInput.setUserName( "757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45"); transferDetailListList.add(transferDetailInput); } initiateBatchTransferRequest.setTransferDetailList( transferDetailListList); } initiateBatchTransferRequest.setTransferSceneId("1000"); InitiateBatchTransferResponse response = service.initiateBatchTransfer(initiateBatchTransferRequest); } }

 

  #应答参数 200OK out_batch_no必填string(32) 【商家批次单号】 商户系统内部的商家批次单号,在商户系统内部唯一 batch_id必填string(64) 【微信批次单号】 微信批次单号,微信商家转账系统返回的唯一标识 create_time必填string(32) 【批次创建时间】 批次受理成功时返回,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE batch_status选填string 【批次状态】 ACCEPTED:已受理。批次已受理成功,若发起批量转账的30分钟后,转账批次单仍处于该状态,可能原因是商户账户余额不足等。商户可查询账户资金流水,若该笔转账批次单的扣款已经发生,则表示批次已经进入转账中,请再次查单确认PROCESSING:转账中。已开始处理批次内的转账明细单FINISHED:已完成。批次内的所有转账明细单都已处理完成CLOSED:已关闭。可查询具体的批次关闭原因确认

应答示例

200 OK { "out_batch_no" : "plfk2020042013", "batch_id" : "1030000071100999991182020050700019480001", "create_time" : "2015-05-20T13:29:35.120+08:00", "batch_status" : "ACCEPTED" }   #错误码 #公共错误码 状态码错误码描述解决方案 400 PARAM_ERROR 参数错误 请根据错误提示正确传入参数 400 INVALID_REQUEST HTTP 请求不符合微信支付 APIv3 接口规则 请参阅 接口规则(opens new window) 401 SIGN_ERROR 验证不通过 请参阅 签名常见问题(opens new window) 500 SYSTEM_ERROR 系统异常,请稍后重试 请稍后重试 #业务错误码 状态码错误码描述解决方案 400 INVALID_REQUEST 请求参数符合参数格式,但不符合业务规则 根据错误提示,传入正确参数 400 INVALID_REQUEST 创建订单冲突,请勿并发调用 根据错误提示调整调用策略 400 INVALID_REQUEST 对应单号已超出重试期,请查单确认后决定是否换单请求 根据错误提示调整调用策略 400 INVALID_REQUEST 此IP地址不允许调用该接口 请在商户平台-商家转账产品详情-转账发起方式-API发起-接口安全 中配置发起转账的IP地址 400 INVALID_REQUEST API通道未开启 请在商户平台-商家转账产品设置中配置API发起转账 400 INVALID_REQUEST 产品权限异常 请在商户平台-商家转账产品设置中开通产品权限 400 INVALID_REQUEST 超出商户单日转账额度,请核实产品设置是否准确 请在商户平台-商家转账产品设置中配置转账日限额 400 INVALID_REQUEST 你尚未获取该转账场景 请在商户平台-商家转账产品设置中申请该场景 400 INVALID_REQUEST 未配置收款用户列表 请前往商户平台-商家转账到零钱-转账场景中添加 400 PARAM_ERROR 参数错误 根据错误提示,传入正确参数 400 PARAM_ERROR 单批次明细笔数不合法,最高支持1000笔明细用 根据错误提示调整策略 401 APPID_MCHID_NOT_MATCH 商户号和appid没有绑定关系 商户号和appid没有绑定关系 403 ACCOUNTERROR 商户账户付款受限 可前往商户平台-违约记录获取解除功能限制指引 403 NO_AUTH 商户信息不合法 登录商户平台核对,传入正确信息 403 NOT_ENOUGH 资金不足 商户账户资金不足,请充值后原单重试,请勿更换商家转账批次单号 429 FREQUENCY_LIMITED 频率超限 该笔请求未受理,请降低频率后原单重试,请勿更换商家转账批次单号 500 SYSTEM_ERROR 系统错误 请勿更换商家转账批次单号,请使用相同参数再次调用API。否则可能造成资金损失

 https://pay.weixin.qq.com/docs/merchant/apis/batch-transfer-to-balance/transfer-batch/initiate-batch-transfer.html

 

 

概述

更新时间:2023.04.28

#关于API v3

为了在保证支付安全 的前提下,带给商户简单、一致且易用 的开发体验,我们推出了全新的微信支付API v3。

相较于之前的微信支付API,主要区别是:

遵循统一的REST的设计风格 使用JSON作为数据交互的格式,不再使用XML 使用基于非对称密钥的SHA256-RSA的数字签名算法,不再使用MD5或HMAC-SHA256 使用第三方证书颁发机构颁发的证书。其中: 商户API证书,由商户申请。商户使用商户的私钥为请求报文生成签名。微信支付使用商户API证书验证签名,以验证商户的身份和数据的完整性。 微信支付平台证书,由微信支付申请。微信支付使用微信支付的私钥为应答和回调报文生成签名。商户使用微信支付平台证书验证签名,以验证微信支付的身份和数据的完整性。 使用AES-256-GCM,对回调中的关键信息进行加密保护 #SDK接入

我们提供了微信支付API v3官方SDK(目前包含Java (opens new window)、PHP (opens new window)、Go (opens new window)三种语言版本)。此外,我们也提供API v3的Postman调试工具、微信支付平台证书下载工具,你可以通过我们的GitHub (opens new window)获取。

我们建议商户基于微信支付官方提供的SDK来开发应用。SDK为商户的技术人员封装了请求的签名和应答的验签,简化了商户系统的开发工作。

#自行接入

在规则说明中,你将了解到微信支付API v3的基础约定,如数据格式、参数兼容性等。我们还重点介绍了微信支付API v3新的认证机制 (证书/密钥/签名)。你可以跟随着 开发指南,使用命令行或者你熟悉的编程语言,一步一步实践签名生成、签名验证、证书和回调报文解密和敏感信息加解密。在最后的常见问题中,我们总结了商户接入过程遇到的各种问题。

如果你有任何问题,欢迎访问我们的开发者社区 (opens new window)。

 

https://pay.weixin.qq.com/docs/merchant/development/interface-rules/introduction.html

 

 

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3