抖音小程序开发 唤起收银台支付(可以选择支付宝APP支付或微信H5支付)

本文介绍如何在字节跳动小程序中集成微信H5支付和支付宝支付,包括后台管理地址、开发文档链接,以及代码实现过程。涵盖实体类定义、请求工具类和支付流程,适用于希望拓展支付渠道的小程序开发者。

什么都别说,先看效果:
在这里插入图片描述
字节跳动也开放了小程序给商家接入,可以在旗下APP如抖音、今日头条、今日头条极速版等应用中即点即用,基于庞大的数亿用户量为其引流,帮助商家获取用户流量,销售商品,其模式和微信小程序差不多。

1、后台管理地址:

https://developer.toutiao.com/
在这里插入图片描述
2、开发文档地址:

https://developer.toutiao.com/dev/cn/mini-app/develop/open-capacity/log-in/tt.login
在这里插入图片描述
不像微信和支付宝,字节跳动没有自己的支付,但是在小程序里集成了微信和支付宝支付可供商家满足支付的需求,接下来来看代码是怎么实现的。
在这里插入图片描述
首先要在小程序平台上开通支付功能,这个直接去看开发文档,里面的教程说得很清楚,这里就不再敖述。特别要注意的是,申请完微信支付,要登陆微信商户号对应的商户平台 - “产品中心” - "开发配置"自行配置H5 支付域名:snssdk.com,不然微信支付会报错。

再则字节跳动小程序集成微信和支付宝支付,前提要先调通单纯的微信H5支付和支付宝支付。
在这里插入图片描述
代码实现

实体类:TTPayParamIn

/**
 * @description
 */
@Data
public class TTPayParamIn {
   
   

    /**
     * 头条小程序分配给商户的商户id
     */
    private String toutiaoMchId;
    /**
     * 头条小程序分配给商户的appid
     */
    private String toutiaoMchAppId;
    /**
     * 头条小程序分配给商户的appSecrect
     */
    private String toutiaoMchSecrect;
    /**
     * 唯一标识用户的id,小程序开发者请传open_id
     */
    private String uid;
    /**
     * 金额,单位:元
     */
    private Long totalAmount;
    /**
     * 商户订单名称
     */
    private String subject;
    /**
     * 商户订单详情
     */
    private String body;
    /**
     * 订单有效时间,单位:秒
     */
    private String validTime;
    /**
     * 服务器异步通知http地址,请填支付宝下单接口对应的异步通知url
     */
    private String notifyUrl;
    /**
     * 订单号
     */
    private String outOrderNo;
}

实体类:CheckoutCounterIn

/**
 * @description
 */
@Data
public class CheckoutCounterIn extends  TTPayParamIn {
   
   

    //支付宝支付信息
    /**
     * 支付宝应用id
     */
    private String alipayAppId;
    /**
     * 支付宝应用私钥
     */
    private String alipayAppPrivateKey;
    /**
     * 支付宝公钥
     */
    private String alipayPublicKey;
    /**
     * 支付宝公共回传参数,如果请求时传递了该参数,则返回给商户时会在异步通知时将该参数原样返回。
     */
    private String passbackParams;
    /**
     * 支付宝回调地址
     */
    private String alipayNotifyUrl;

    //微信支付信息
    /**
     * 微信小程序appid
     */
    private String wxAppId;
    /**
     * 微信小程序商户id
     */
    private String wxMchId;
    /**
     * 微信小程序商户支付apikey
     */
    private String wxApiKey;
    /**
     * 微信小程序支付回调地址
     */
    private String wxNotifyUrl;
    /**
     * 服务器地址 如:https://xxx.xxx.com/xxx
     */
    private String serverPath;
    /**
     * 金额
     */
    private Double wxMoney;
    /**
     * 微信自定义参数
     */
    private String wxAttach;
}

在这里插入图片描述
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。

请求工具类:CommonUtil

/**
 * @description
 */
public class CommonUtil {
   
   
  private static Logger log = LoggerFactory.getLogger(CommonUtil.class);
  /**
   * @Title: httpsRequest
   * @Description: 发送https请求 ---返回字符串
   * @param requestUrl 请求地址
   * @param requestMethod 请求方式(GET、POST)
   * @param outputStr 提交的数据
   * @return 返回微信服务器响应的信息
   * @throws
   */
  public static String httpsRequest(String requestUrl, String requestMethod, String outputStr) {
   
   
    try {
   
   
      // 创建SSLContext对象,并使用我们指定的信任管理器初始化
      TrustManager[] tm = {
   
    new MyX509TrustManager() };
      SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
      sslContext.init(null, tm, new java.security.SecureRandom());
      // 从上述SSLContext对象中得到SSLSocketFactory对象
      SSLSocketFactory ssf = sslContext.getSocketFactory();
      URL url = new URL(requestUrl);
      HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
      conn.setSSLSocketFactory(ssf);
      conn.setDoOutput(true);
      conn.setDoInput(true);
      conn.setUseCaches(false);
      // 设置请求方式(GET/POST)
      conn.setRequestMethod(requestMethod);
      conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");
    //conn.setRequestProperty("Content-Type", "text/html;charset=utf-8"); 
      // 当outputStr不为null时向输出流写数据
      if (null != outputStr) {
   
   
        OutputStream outputStream = conn.getOutputStream();
        // 注意编码格式
        outputStream.write(outputStr.getBytes("UTF-8"));
        outputStream.close();
      }
      // 从输入流读取返回内容
      InputStream inputStream = conn.getInputStream();
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

悟空码字

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

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

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

打赏作者

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

抵扣说明:

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

余额充值