zoukankan      html  css  js  c++  java
  • php对接抖音小程序担保支付/头条小程序担保支付

    字节跳动小程序担保支付简介

    担保交易是字节跳动为小程序开发者提供的小程序内支付能力,让用户能够在电商、生活服务、知识付费等多种场景下,在小程序完成支付闭环,提升用户的支付体验,保障资金安全。 开发者在小程序平台进行微信/支付宝进件后,字节跳动将会为开发者在微信和支付宝申请商户号,开发者可以调用小程序的下单、结算(分账)、退款等接口,完成支付的业务逻辑。

     

    接入流程

    接入准备

    文档上写的非常详细,可参照文档接入https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/ecpay/TE

    小程序担保支付接入-服务端

    <?php

      

      

    /**
    * 支付下单
    * 服务端预下单
    * @param $data
    */
    public function dy_pay($data)
    {
    $url = 'https://developer.toutiao.com/api/apps/ecpay/v1/create_order';
    $postdata['app_id'] = '您的appid';
    $postdata['out_order_no'] = $data['order_num'];//订单号
    $postdata['total_amount'] = $data['all_price'];//支付金额
    $postdata['subject'] = '中文';
    $postdata['body'] = $data['body'];//备注
    $postdata['valid_time'] = 86400;//订单有效时间
    $postdata['cp_extra'] = urlencode(json_encode(['aaa'=>234,'bbb'=>'aaa']));
    $postdata['notify_url'] = '回调地址;
    $postdata['thirdparty_id'] = '';
    $postdata['disable_msg'] = 0;
    $postdata['msg_page'] = 'asger';
    $postdata['store_uid'] = '1';
    $postdata['sign'] = $this->sign($postdata);//获取签名
    $res = $this->json_post($url, $postdata);
    print_r($res);
    }


    function sign($map) {
    $rList = array();
    foreach($map as $k =>$v) {
    if ($k == "other_settle_params" || $k == "app_id" || $k == "sign" || $k == "thirdparty_id")
    continue;
    $value = trim(strval($v));
    $len = strlen($value);
    if ($len > 1 && substr($value, 0,1)==""" && substr($value,$len, $len-1)==""")
    $value = substr($value,1, $len-1);
    $value = trim($value);
    if ($value == "" || $value == "null")
    continue;
    array_push($rList, $value);
    }
    array_push($rList, "您的担保支付密钥 在支付里的担保交易设置里的SALT获取");
    sort($rList, 2);
    return md5(implode('&', $rList));
    }

    function json_post($url, $data = NULL)
    {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    if (!$data) {
    return 'data is null';
    }
    if (is_array($data)) {
    $data = json_encode($data,320);
    }
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json; charset=utf-8',
    'Content-Length:' . strlen($data),
    'Cache-Control: no-cache',
    'Pragma: no-cache'
    ));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $res = curl_exec($curl);
    curl_close($curl);
    return $res;
    }

    ?>

    返回值

      

    {
    "err_no": 0,
    "err_tips": "",
    "data": {
    "order_id": "6819903302604491021",
    "order_token": "CgwIARDiDRibDiABKAESTgpMbBhsCG7V1MPGAvpICgUSyGcuNOVb/BnCOi9EXgAxIxDqLTwCA6Hd3tNrCde28o0qjmAJQsmLrD18ifr5QktalszSSmTpHCqEm3h55xoA"
    }
    }

    小程序端

    tt.pay({
    orderInfo: {
    order_id: "返回的data.order_id",
    order_token:
    "返回的data.order_token",
    },
    service: 5,
    success(res) {
    if (res.code == 0) {
    // 支付成功处理逻辑,只有res.code=0时,才表示支付成功
    // 但是最终状态要以商户后端结果为准
    }
    },
    fail(res) {
    // 调起收银台失败处理逻辑
    },
    });

    支付完成

  • 相关阅读:
    python 进程、线程、协程感悟
    elk部署心得
    虚拟安装centos后无法上网、DNS无法解析问题解决
    mysql测试题
    爬取lol皮肤
    ping使用
    第一篇技术博客
    PADS layout修改字符时发生严重错误退出问题
    PADS 快捷键
    电容知识整理
  • 原文地址:https://www.cnblogs.com/phpclass/p/15252171.html
Copyright © 2011-2022 走看看