1. 提现查账
星驿支付文档中心
  • 文档说明
    • 阅读对象
    • 版本说明
  • 术语
    • 支付模式
    • 名词解释
    • 支付产品
      • 付款码支付
      • 聚合码支付
      • PC支付
      • 小程序支付
        • 微信小程序支付
        • 支付宝小程序支付
      • APP支付
        • 微信支付
        • 支付宝支付
      • H5支付
        • 微信H5支付
        • 支付宝H5支付
        • 云闪付H5支付
        • 手机浏览器H5支付
      • Native支付
        • 支付宝支付
        • 云闪付支付
      • 终端支付
        • 智能云MIS
        • 智能APP
  • 接口规则
    • 协议规则
    • 安全规范
  • 支付交易
    • 交易前指引
      • 微信认证操作流程
      • 支付宝认证操作流程
      • H5页面微信支付对接前准备
      • H5页面支付宝支付对接前准备
      • 支付流程
      • 支付接入注意事项
      • 消费者IP获取指引
    • 基础支付
      • 付款码支付
      • JSAPI支付
      • 订单查询
      • 扫码支付-星驿码
      • 扫码支付-官方码
      • 扫码支付-场景码
      • 关闭订单
      • 撤销订单
      • 退款
      • 退款查询
      • 授权码查询openid
      • 获取银联用户标识
      • 获取微信刷脸凭证
      • 成品油(现金/储值)开票
    • 小程序支付
      • 使用说明
      • 小程序半屏-星驿付
      • 小程序半屏-场景
    • 扫码预授权
      • 扫码预授权
      • 预授权查询
      • 预授权撤销
      • 预授权撤销查询
      • 预授权完成
      • 预授权完成查询
      • 预授权完成撤销
      • 预授权完成撤销查询
    • 订单推送
      • 推送终端交易
      • 关闭推送终端交易
      • 碰一下推单状态查询
      • 碰一下订单取消
      • 碰一下订单推送
    • 智能终端SDK
      • 智能终端SDK
    • 交易通知及对账
      • 交易对账文件-场景应用
      • 交易对账文件-ISV
      • 交易和退款结果通知
      • 交易手续费通知
    • 刷卡预授权
      • 预授权撤销
      • 预授权完成撤销
  • 商户管理
    • 前件前指引
      • 进件说明
      • 图片示例
      • 微信认证操作流程
      • 支付宝认证操作流程
      • 附件下载
    • 商户入网
      • 商户进件上传图片
      • 普通商户进件
      • 普通商户信息修改
      • 小微商户进件
      • 小微商户信息修改
      • 审核结果查询
      • 商户审核结果通知
      • 待审核商户撤回
      • 商户信息查询
      • 结算卡修改
      • 商户快捷修改
      • 受益人信息查询
      • 商户报备查询
      • 商户报备结果通知
      • 商户状态修改
      • 终端报备查询
      • 商户阶梯费率配置
      • 商户阶梯费率查询
    • 商户协议签约
      • 入网协议签约接口调用流程
      • 普通商户用户开户
      • 小微商户用户开户
      • 发短信验证码
      • 获取签约链接
      • 校验验证码
      • 校验验证码-补签
      • 签约结果通知
    • 微信支付宝认证
      • 微信申请单提交
      • 微信申请单撤销
      • 微信申请单状态查询
      • 微信商户授权状态查询
      • 支付宝申请单提交
      • 支付宝申请单撤销
      • 支付宝申请单状态查询
      • 支付宝商户授权状态查询
    • 微信开发配置
      • 微信APPID配置
      • 微信支付目录配置
      • 微信公众号查询
      • 微信开发配置查询
      • 指定渠道报备
      • 微信小程序冻结状态查询
      • 微信小程序冻结通知(非接口)
    • 商户限额调整
      • 商户限额查询
      • 商户提额申请
      • 商户提额记录查询
    • 商户风险处置
      • 商户风险处置通知
      • 风险商户图片上传
      • 微信官方风险商户文件
      • 支付宝官方风险商户文件
      • 风险商户异常流水查询
      • 风险商户调查列表
      • 风险商户调查详情
      • 风险调查单历史查询
      • 风险调查材料下载
      • 风险调查单处理
    • 商户手续费开票
      • 开具发票
      • 开票详情
      • 待开发票信息查询
      • 合并开票商户信息查询
      • 电子普票重发邮箱
      • 开票历史查询
    • 无界收款
      • 无界收款图片上传
      • 无界收款开通
      • 无界收款审核查询
      • 无界收款审核结果通知
  • 资金结算
    • D0结算业务
      • 产品介绍
      • 获取人脸识别链接
      • 人脸认证结果查询
      • D0开通
      • D0信息修改
      • D0状态查询
      • D0开通失败申诉
      • D0申诉结果查询
      • D0申诉结果通知
    • 特殊结算业务
      • 产品介绍
      • 结算业务申请
      • 结算业务变更
      • 结算业务结果查询
      • 结算业务结果通知
    • 提现查账
      • 手工提现
        POST
      • 到账记录查询
        POST
      • 到账记录批量查询
        POST
      • 秒到提现记录查询
        POST
      • 账户余额查询
        POST
      • 挂账记录查询
        POST
      • 补付申请
        POST
      • 提现结果通知
        POST
      • 账户余额变动通知
        POST
      • 提现对账文件
        POST
      • 批量结算提现通知
        POST
      • 到账附言配置
        POST
      • 查询到账附言
        POST
  • 星账云管家
    • 星账云管家
    • 功能开通
      • 功能开通(XZY001)
      • 编辑(XZY003)
      • 编辑上传付款凭证(XZY002)
      • 修改生效状态(XZY004)
      • 查询详情信息(XZY005)
      • 产品开通审核通知(XZY006)
    • 公共接口
      • 上传文件(XZY013)
    • 分账
      • 交易
        • 分账结算电子回单下载(XZY037)
        • 余额查询接口(XZY041)
        • 分账合并入账电子回单下载(XZY039)
        • 订单查询(XZY015)
        • 分账(XZY014)
        • 分账撤销退回(XZY017)
        • 分账结果回调(XZY016)
      • 客户管理
        • 新增客户(XZY018)
        • 分账授权申请接口-收单统一结算(XZY043)
        • 批量分账授权申请接口-收单统一结算(XZY044)
        • 合作状态调整(XZY020)
        • 解约/重启签约(XZY-001-002)
        • 编辑客户(XZY023)
        • 替换客户结算卡(XZY022)
        • 审核通知(XZY019)
        • 查询分账客户信息(XZY021)
    • 归集
      • 开户/授权
        • 归集授权申请接口-收单统一结算(XZY037)
        • 审核通知(XZY025)
        • 合作状态调整(XZY026)
        • 查询归集客户信息(XZY027)
        • 替换结算卡(XZY028)
        • 编辑信息(XZY029)
      • 交易
        • 归集合并入账电子回单下载(XZY040)
        • 归集结算电子回单下载(XZY038)
        • 余额查询接口(XZY042)
        • 订单查询(XZY031)
        • 归集-支持自定义服务费(XZY030)
        • 归集(XZY030)
        • 归集结果回调(XZY032)
        • 归集撤销退回(XZY033)
    • 提现
      • 提现订单查询(XZY035)
      • 结算回调通知(XZY050)
      • 提现电子回单下载(XZY040)
      • 提现(XZY036)
    • 账户
      • 结算资金流水查询(XZY047)
      • 结算卡资金流水查询(XZY049)
  • 设备管理与推送
    • 设备管理
      • 收款设备绑定
      • 收款设备解绑
      • 收款设备绑定查询
      • 设备绑定/解绑结果通知
      • 音箱绑定
      • 音箱绑定查询
      • 音箱解绑
    • 设备推送
      • 音箱播报
      • 交易打印
  • 营销活动
    • 银行活动
      • 产品介绍
      • 图片上传
      • 商户补贴列表查询
      • 银行活动报名
      • 银行活动报名结果查询
      • 银行活动报名结果通知
      • 银行活动列表查询
      • 银行活动退出
    • 特殊行业活动
      • 产品介绍
      • 特殊行业活动报名申请
      • 特殊活动报名结果通知
      • 特殊行业商户活动查询
      • 特殊行业活动图片上传
    • 综合账户
      • 营销增资-订单
      • 营销增资-金额
      • 营销增资查询
      • 综合账户余额查询
      • 综合账户流水查询
    • 增值服务
      • 获取增值营销产品列表
      • 获取增值营销产品明细
      • 获取分享链接
      • 推广结果列表查询
      • 推广结果详情
  • 慧徕店开放平台
    • 慧+SPI
      • 对接前准备
      • 商户同步
        • 开发配置
          • 请求域名
          • 加签&验签
        • 商户同步
        • 商户同步查询
        • 商户同步回调
      • 应用模块
        • 产品介绍
        • 开发配置
          • 请求域名
          • 加签&验签
        • 应用及增值服务查询
        • 商户应用注册及增值服务状态查询
        • 应用注册
        • 应用注册状态查询
        • 应用注册回调通知
        • 增值服务激活
        • 增值服务激活状态查询
        • 增值服务激活回调通知
      • 聚合支付SPI
        • 产品介绍
        • 开发配置
          • 签名方式
          • 验签方式
          • 公共参数
        • 支付API
        • 付款码支付
        • 扫码支付-官方码
        • JSAPI支付
        • 扫码支付-聚合码
        • 获取小程序支付信息
        • 订单查询
        • 交易结果通知
        • 退款
        • 退款查询
        • 关闭订单
        • 获取银联用户标识
    • 应用开发API
      • 验签说明
      • 应用支付
      • 门店信息同步
      • 门店增值服务激活
  • 支付广告
    • 微信小程序广告
    • 支付宝小程序广告
    • 支付宝H5广告
    • SDK资源文件
  • 数据字典
    • MCC
      • 搜索查询二级mcc
      • 获取一级mcc目录
      • 获取二级mcc目录
    • 地区码
      • 获取省
      • 获取市
      • 获取区县
    • 落地银行
      • 落地银行查询
      • 落地银行下级机构查询
    • 银行信息
      • 获取银行省信息-联行号
      • 获取银行市信息-联行号
      • 银行信息查询
      • 查询联行号信息
      • 根据银行卡号获取银行信息
    • 连锁品牌
      • 获取连锁品牌信息
  • 分账服务
    • 订单分账
      • 订单分账
      • 订单分账结果查询
      • 订单分账撤销
      • 订单分账对帐文件
    • 余额分账
      • 余额分账
      • 余额分账结果查询
      • 可分账余额查询
    • 分账配置
      • 分账图片上传
      • 分账商户配置
      • 分账商户配置结果查询
      • 分账商户配置结果通知
      • 分账商户移除
      • 快捷创建资金接收方
      • 修改分账比例与金额
      • 商圈信息查询
  • 数据模型
    • FileHeader
    • FileBody
    • StandardResponse
  1. 提现查账

账户余额变动通知

测试环境
https://xyf-server-test.postar.cn
测试环境
https://xyf-server-test.postar.cn
POST
/账户余额变动通知
使用场景:商户、ISV

请注意:邮驿付&星驿付后期会对返回参数保留扩展的权力,扩展方式为新增参数但不会删除参数,请商户在解析邮驿付&星驿付返回参数时要支持邮驿付&星驿付可能扩展参数这种情况。#

返回值必带:{"rspCod":"","rspMsg":"success"}
正向交易成功、反向退款成功都可异步通知(早期机构需要反向退款通知,可联系运营后台配置),如果首次通知失败,则会每隔1分钟通知一次,
所以在接收成功时,请务必带上"rspMsg":"success",否则平台将一直发送该条通知,直到超过15分钟后就不再发送。
异步通知demo数据(以实际机构的公钥加密的sign和参数为准):
{"CUST_ID":"60000001024352","AGET_ID":"61000000102493","sign":"bts3e+OhE8r0F57UHMvAYVAQw8sQQjfBYQ+AnRk2WlfXk9CoNXVg6xEVPl3ygyQR0ps7vVFyaOhgw40WwVCvJvoDOc2Kyz44AZ90ce2TeYjBTH9ptulxMxgsJULxJDlpIJpbChZdPcUHAoLSTcQK0fHFO66j9EeWcpltwu4vd8TzRhhLHR/09b+Dc0EHw3g0jFHhNgKxaAFsbFfXp67sUUjF08W5Z+fR7wek+7c5JAcW/mkc9fPfD5J6v0O+0Fc7/OdO1U716ypcoMNV5K6TWQHlzlmMqgF+x55d+bwq1gDL4xoynFf8RU99NselnL9x3aiNrO1tDX4MZSEB8lsHuA==","ACC_TYPE":"3","ACC_AMT":"8950"}

异步通知验签Demo-java#

备注:升级影响,建议获取全参数校验
展开查看完整demo
/**
验证sign
plainText 返回数据报文
publicKey 公钥
@return
*/
public static boolean checkSign(String plainText,String publicKey){
    TreeMap<String, Object> map = JSONObject.parseObject(data, new TypeReference<TreeMap<String, Object>>() {});
StringBuilder sb = new StringBuilder();
String sign = "";
for (String key : map.keySet()){
if("sign".equals(key)){
sign =(String) map.get(key);
continue;
}
sb.append(key).append("=").append(map.get(key)).append("&");
}
String res = sb.substring(0,sb.lastIndexOf("&"));
String sha256 = SHA256.getSHA256(res);
String decodeSha256 = decrypt(publicKey,sign);
return sha256.equals(decodeSha256);
}
/**
公钥解密过程
@param key 公钥
@param data 密文数据
@return 明文
@throws Exception 解密过程中的异常信息
/
public static String decrypt(String key, String data) throws Exception {
if (key == null) {
throw new Exception("解密公钥为空, 请设置");
}
PublicKey publicKey = getPublicKey(key);
byte[] cipherData = Base64Util.decode(data);
Cipher cipher = null;
try {
// 使用默认RSA
cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, publicKey);
byte[] buf = (byte[]) null;
for (int i = 0; i < cipherData.length; i += 256) {
byte[] doFinal = cipher.doFinal(ArrayUtils.subarray(cipherData, i, i + 256));
if(buf == null) {
            buf = doFinal;
            } else {
            buf = addBytes(buf,doFinal);
            }
}
return new String(buf);
} catch (NoSuchAlgorithmException e) {
throw new Exception("无此解密算法");
} catch (NoSuchPaddingException e) {
e.printStackTrace();
return null;
} catch (InvalidKeyException e) {
throw new Exception("解密公钥非法,请检查");
} catch (IllegalBlockSizeException e) {
throw new Exception("密文长度非法");
} catch (BadPaddingException e) {
throw new Exception("密文数据已损坏");
}
}
/
*
数组拼接
@param data1 数组1
@param data2 数组2
@return
*/
public static byte[] addBytes(byte[] data1, byte[] data2) { 
    byte[] data3 = new byte[data1.length + data2.length]; 
    System.arraycopy(data1, 0, data3, 0, data1.length); 
    System.arraycopy(data2, 0, data3, data1.length, data2.length); 
    return data3;
}
/**
得到公钥
@param key 密钥字符串(经过base64编码)
@throws Exception
*/
public static PublicKey getPublicKey(String key) throws Exception {
byte[] keyBytes;
keyBytes = new BASE64Decoder().decodeBuffer(key);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec);
return publicKey;
}

其中用到的工具类Base64Util:

```java
public class Base64Util {
    private static final char[] base64EncodeChars = new char[] { &#039;A&#039;, &#039;B&#039;, &#039;C&#039;, &#039;D&#039;, &#039;E&#039;, &#039;F&#039;, &#039;G&#039;, &#039;H&#039;, &#039;I&#039;, &#039;J&#039;, &#039;K&#039;, &#039;L&#039;, &#039;M&#039;, &#039;N&#039;, &#039;O&#039;, &#039;P&#039;, &#039;Q&#039;, &#039;R&#039;, &#039;S&#039;, &#039;T&#039;, &#039;U&#039;, &#039;V&#039;, &#039;W&#039;, &#039;X&#039;, &#039;Y&#039;, &#039;Z&#039;, &#039;a&#039;, &#039;b&#039;, &#039;c&#039;, &#039;d&#039;, &#039;e&#039;, &#039;f&#039;, &#039;g&#039;, &#039;h&#039;, &#039;i&#039;, &#039;j&#039;, &#039;k&#039;, &#039;l&#039;, &#039;m&#039;, &#039;n&#039;, &#039;o&#039;, &#039;p&#039;, &#039;q&#039;, &#039;r&#039;, &#039;s&#039;, &#039;t&#039;, &#039;u&#039;, &#039;v&#039;, &#039;w&#039;, &#039;x&#039;, &#039;y&#039;, &#039;z&#039;, &#039;0&#039;, &#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;, &#039;5&#039;, &#039;6&#039;, &#039;7&#039;, &#039;8&#039;, &#039;9&#039;, &#039;+&#039;, &#039;/&#039; };
    private static byte[] base64DecodeChars = new byte[] { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 };
    private Base64Util() {}

    /**
     * 将字节数组编码为字符串
     *
     * @param data
     */
    public static String encode(byte[] data) {
        StringBuffer sb = new StringBuffer();
        int len = data.length;
        int i = 0;
        int b1, b2, b3;
        while (i &lt; len) {
            b1 = data[i++] &amp; 0xff;
            if (i == len) {
                sb.append(base64EncodeChars[b1 &gt;&gt;&gt; 2]);
                sb.append(base64EncodeChars[(b1 &amp; 0x3) &lt;&lt; 4]);
                sb.append(&quot;==&quot;);
                break;
            }
            b2 = data[i++] &amp; 0xff;
            if (i == len) {
                sb.append(base64EncodeChars[b1 &gt;&gt;&gt; 2]);
                sb.append(base64EncodeChars[((b1 &amp; 0x03) &lt;&lt; 4) | ((b2 &amp; 0xf0) &gt;&gt;&gt; 4)]);
                sb.append(base64EncodeChars[(b2 &amp; 0x0f) &lt;&lt; 2]);
                sb.append(&quot;=&quot;);
                break;
            }
            b3 = data[i++] &amp; 0xff;
            sb.append(base64EncodeChars[b1 &gt;&gt;&gt; 2]);
            sb.append(base64EncodeChars[((b1 &amp; 0x03) &lt;&lt; 4) | ((b2 &amp; 0xf0) &gt;&gt;&gt; 4)]);
            sb.append(base64EncodeChars[((b2 &amp; 0x0f) &lt;&lt; 2) | ((b3 &amp; 0xc0) &gt;&gt;&gt; 6)]);
            sb.append(base64EncodeChars[b3 &amp; 0x3f]);
        }
        return sb.toString();
    }


    /**
     * 将base64字符串解码为字节数组
     *
     * @param str
     */
    public static byte[] decode(String str) throws Exception{
        byte[] data = str.getBytes(&quot;GBK&quot;);
        int len = data.length;
        ByteArrayOutputStream buf = new ByteArrayOutputStream(len);
        int i = 0;
        int b1, b2, b3, b4;
        while (i &lt; len) {


            /* b1 */
            do {
                b1 = base64DecodeChars[data[i++]];
            } while (i &lt; len &amp;&amp; b1 == -1);
            if (b1 == -1) {
                break;
            }


            /* b2 */
            do {
                b2 = base64DecodeChars[data[i++]];
            } while (i &lt; len &amp;&amp; b2 == -1);
            if (b2 == -1) {
                break;
            }
            buf.write((int) ((b1 &lt;&lt; 2) | ((b2 &amp; 0x30) &gt;&gt;&gt; 4)));


            /* b3 */
            do {
                b3 = data[i++];
                if (b3 == 61) {
                    return buf.toByteArray();
                }
                b3 = base64DecodeChars[b3];
            } while (i &lt; len &amp;&amp; b3 == -1);
            if (b3 == -1) {
                break;
            }
            buf.write((int) (((b2 &amp; 0x0f) &lt;&lt; 4) | ((b3 &amp; 0x3c) &gt;&gt;&gt; 2)));


            /* b4 */
            do {
                b4 = data[i++];
                if (b4 == 61) {
                    return buf.toByteArray();
                }
                b4 = base64DecodeChars[b4];
            } while (i &lt; len &amp;&amp; b4 == -1);
            if (b4 == -1) {
                break;
            }
            buf.write((int) (((b3 &amp; 0x03) &lt;&lt; 6) | b4));
        }
        return buf.toByteArray();
    }
}
SHA256.java

请求参数

Header 参数

Body 参数application/json

示例

返回响应

🟢200成功
application/json
Body

请求示例请求示例
Java
Shell
C#
PHP
响应示例响应示例
{
    "rspCod": "string",
    "rspMsg": "string"
}
修改于 2025-10-28 06:03:25
上一页
提现结果通知
下一页
提现对账文件
Built with