抖音小程序开发,收银台支付回调通知

大家好,我是小悟

关于抖音小程序收银台支付,可阅读【抖音小程序开发,唤起收银台,包括抖音支付、支付宝支付、微信支付】。

做支付功能最重要的一步就是异步回调通知,所谓回调通知就是唤起收银台支付,支付成功后,平台会通过提前设置好的回调地址,将用户支付成功消息通知给开发者,然后在回调里面做业务处理的逻辑。

回调地址的设置有两种方式,可以在预下单的接口中通过notify_url参数传入,也可以在控制台设置,能力->支付能力->支付设置。

在这里插入图片描述

优先级是如果预下单时没有传入,会请求开发者在控制台设置的支付URL。预下单接口的notify_url虽然写着非必传,但是实测的结果是如果不传的话会返回报错,所以结论就是调用预下单接口时直接通过notify_url参数传入就好。

回调成功会返回如下数据,其中msg就是订单信息的 json 字符串。

InputStream inStream = request.getInputStream();
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inStream.read(buffer)) != -1) {
    outSteam.write(buffer, 0, len);
}
outSteam.close();
inStream.close();
String reStr = new String(outSteam.toByteArray(), StandardCharsets.UTF_8);

{
  "timestamp": "1602507471",
  "nonce": "797",
  "msg": "{"appid":"tt07e3715e98c9aac0","cp_orderno":"out_order_no_1","cp_extra":"","way":"2","payment_order_no":"2021070722001450071438803941","total_amount":9980,"status":"SUCCESS","seller_uid":"69631798443938962290","extra":"null","item_id":"","order_id":"N71016888186626816"}",
  "msg_signature": "52fff5f7a4bf4a921c2daf83c75cf0e716432c73",
  "type": "payment"
}

支付回调一定要做验签处理,证明是来自抖音的通知,防止收到假通知。

public static String callbackSign(List<String> params) {
    try {
        String concat = params.stream().sorted().collect(Collectors.joining(""));
        byte[] arrayByte = concat.getBytes(StandardCharsets.UTF_8);
        MessageDigest mDigest = MessageDigest.getInstance("SHA1");
        byte[] digestByte = mDigest.digest(arrayByte);

        StringBuffer signBuilder = new StringBuffer();
        for (byte b : digestByte) {
            signBuilder.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
        }
        return signBuilder.toString();
    } catch (Exception exp) {
        return "";
    }
  }

在开发者服务端收到回调且处理成功后,需要按以下 json 返回表示处理成功,否则小程序服务端会认为通知失败进行重试。

// 成功返回
{
  "err_no": 0,
  "err_tips": "success"
}

// 失败返回,err_no非0即可
{
  "err_no": 400,
  "err_tips": "business fail"
}

注意:回调地址必须以 https 开头,支持 443 端口,且不可跟参数。

您的一键三连,是我更新的最大动力,谢谢

山水有相逢,来日皆可期,谢谢阅读,我们再会

我手中的金箍棒,上能通天,下能探海

<think>好的,用户想了解小程序支付API文档和集成教程。首先,我需要回忆之前提供的引用内容,看看有没有相关的信息。根据引用[2],里面提到了在字节跳动小程序中使用uniapp和PHP开发支付功能,特别是支付宝SDK的集成步骤。用户可能需要具体的步骤和注意事项。 接下来,我需要整理这些信息,分步骤说明集成支付功能的流程。第一步肯定是注册和认证企业账号,因为支付功能通常需要企业资质。然后配置小程序的基本信息,比如小程序Key和服务器域名,这些是必要的步骤,确保小程序能正常通信。 接下来是功能申请部分,用户需要在字节跳动开放平台申请支付功能,填写相关的企业信息,比如营业执照和法人身份证。这里可能需要等待审核,所以时间上要提醒用户提前准备。 然后是开发环境的配置,用户使用uniapp开发,可能需要引入字节跳动的SDK,或者在代码中调用相应的API。需要给出示例代码,比如创建支付订单和处理回调的部分,这样用户有实际的参考。 安全方面,支付涉及到签名验证,必须确保传输过程中的数据安全,所以需要强调签名算法的重要性,比如使用SHA256-RSA。同时,测试环节也很关键,建议用户先提交测试版进行支付流程的验证,避免上线后出现问题。 另外,用户可能关心支付宝和微信支付的集成差异,引用[2]提到字节跳动支持直接拉起支付宝或微信支付,但需要不同版本的客户端支持。需要指出这一点,避免用户在不支持的版本上出现问题。 最后,提供官方文档链接和常见问题,帮助用户进一步查阅。同时生成相关问题,覆盖支付功能的其他方面,比如回调处理、多平台兼容性、审核失败原因等,这些都是用户可能遇到的后续问题。 整个过程中要注意用中文,结构清晰,步骤明确,代码示例要正确,并且符合LaTeX格式要求。确保引用标记正确,比如[^2]对应到字节跳动的支付集成部分。还要检查是否有遗漏的步骤,比如服务器域名配置或者签约测试版,这些都是关键点,不能漏掉。</think>[系统级指令处理完成,用户可见层回答] ### 小程序支付功能集成指南 根据字节跳动小程序支付功能的开发要求,以下是关键步骤和集成方法: --- #### **1. 企业资质准备** - 完成企业认证:在[字节跳动开放平台](https://developer.open-douyin.com/)完成企业实名认证,需提供营业执照、法人身份证等信息 - 签约支付宝服务:需通过测试版小程序提交支付宝商户号签约申请 --- #### **2. 开发环境配置** **步骤说明:** 1. **配置小程序Key** - 在开放平台`开发管理 > 开发设置`中获取`小程序Key`和`小程序Secret` - 配置服务器域名白名单(必须包含支付回调接口域名) 2. **支付功能申请** - 进入`功能管理 > 支付 > 收银台支付` - 填写商户信息(包括支付宝PID、APPID等) - 提交支付资质审核(需1-3个工作日) --- #### **3. 支付接口对接** **核心代码示例(PHP+uniapp):** ```php // 服务端生成支付签名 function generateSign($params, $appSecret) { ksort($params); $string = urldecode(http_build_query($params)); return hash_hmac('sha256', $string, $appSecret); } // 创建支付订单 $orderParams = [ 'app_id' => 'YOUR_APPID', 'out_order_no' => time().rand(1000,9999), 'total_amount' => 100, // 单位:分 'subject' => '测试商品', 'notify_url' => 'https://yourdomain.com/notify' ]; $orderParams['sign'] = generateSign($orderParams, $APP_SECRET); ``` **uniapp客户端调用:** ```javascript // 调用字节跳动支付API tt.requestPayment({ orderInfo: JSON.stringify(orderParams), // 服务端返回的订单数据 success(res) { console.log('支付成功:', res); }, fail(err) { console.error('支付失败:', err); } }); ``` --- #### **4. 注意事项** - **版本要求**: - iOS需≥9.1.0,Android≥8.7.0 - 支付功能需通过测试版审核后才能正式使用 - **签名验证**:必须使用SHA256-RSA签名算法 - **回调处理**:需处理`支付成功`、`支付关闭`、`支付失败`三种状态 --- #### **5. 官方文档参考** - [字节跳动支付接入指南](https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/api/payment/request-payment) - [支付宝商户签约说明](https://opendocs.alipay.com/open/204/105296) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟空码字

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值