前段时间推出微信现金红包课程后,有学员咨询有没有支付宝红包接口开发,其实支付宝也提供了支付宝红包接口,在实现方式与业务流程上与微信稍有不同,下面按照如下几点进行说明。

1.支付宝红包开通方式

2.支付宝红包业务流程分析

3.支付宝红包实现方式

点击观看视频教程

关于支付宝红包的开通方式也可以参考支付宝支付接口开发的开通方式,流程几乎是相同的,首先要在支付宝开放平台创建应用(如果以前已经创建过也可以使用原有应用),关于应用公钥和私钥的设置可以参照支付宝接口开发的相关课程,然后在应用的功能选项里添加营销活动送红包这一项。如下图

支付宝营销红包接口开通

下面再说一下支付宝营销活动送红包的业务流程,大致分为:

1.创建红包活动

2.支付对应金额

3.触发红包(发送红包)

4.相关查询操作

支付宝营销红包业务流程

最后介绍一下实现方式并给出核心代码,请求接口依然分为公共参数和请求参数两类数据,请求规则也和支付是一样的,大致思路是:

1.构建公共参数

2.加入业务请求参数

3.加入签名

4.请求接口网关

5.获取返回数据

不同的接口的公共参数中除了接口名称这一项其他都是相公的,现在假设$apiName为接口名称,$api_params为业务请求参数给出核心代码

/**
  * 红包相关接口共用请求
  * @param $apiName 接口名称
  * @param $api_params 业务请求参数
  * return 接口返回数据
  */
public function CashRequest($apiName,$api_params){
        //公共参数
        $pub_params = [
            'app_id'    => self::APPID, //APPID
            'method'    =>  $apiName, //创建红包活动的接口名称 
            'format'    =>  'JSON', //目前仅支持JSON
            'charset'    =>  'UTF-8',
            'sign_type'    =>  'RSA2',//签名方式
            'sign'    =>  '', //签名 加入业务参数后生成
            'timestamp'    => date('Y-m-d H:i:s'), //发送时间 格式0000-00-00 00:00:00
            'version'    =>  '1.0', //固定为1.0
            'biz_content'    =>  '', //业务请求参数的集合
        ];
        //加入业务请求参数 
        $pub_params['biz_content'] = json_encode($api_params,JSON_UNESCAPED_UNICODE);
        //加入签名
        $pub_params =  $this->setRsa2Sign($pub_params);
        //请求接口网关
        $res = $this->curlRequest(self::CASHGEWAY,$pub_params);
        //获取数据
        return json_decode($res,true);
}

这样红包类的相关接口只要构建好业务请求参数都可以直接调用此方法进行请求,下面给出常用的几个业务请求参数:

//创建红包活动业务请求参数
$api_params = [
    'coupon_name'  => '黎明互联红包活动001',//商户看到的信息
    'prize_type'  => 'fixed', //单个红包金额
    'total_money'  => '1', //总金额
    'total_num'  => 2, //红包总个数
    'prize_msg' => '黎明互联送您红包',//用户看到的红包信息
    'start_time' => 'NowTime', //活动开始时间
    'end_time'   => date("Y-m-d H:i:s",strtotime("+30 day")),//结束时间
];

/**
  * 创建红包活动
  * @param $api_params 业务请求参数
  * return 接口返回数据
  */
public function cashCreate($api_params){

   return  $this->CashRequest('alipay.marketing.campaign.cash.create', $api_params);
}
/**
  * 发送红包接口请求
  * @param $login_id 接收者支付宝账号
  * @param $crowd_no 活动号
  * return 接口返回数据
  */
public function cachTrigger($login_id,$crowd_no){
    //业务参数
    $api_params = [
        'login_id'  => $login_id, //支付宝账号名
        'crowd_no'  => $crowd_no,//活动号
    ];
    return $this->CashRequest('alipay.marketing.campaign.cash.trigger', $api_params);
}
 /**
  * 查询红包状态
  * @param $crowd_no 业务号
  * return 接口返回数据
  */
 public function cashDetailQuery($crowd_no){
     $api_params = [
         'crowd_no' =>   $crowd_no
     ];
    return  $this->CashRequest('alipay.marketing.campaign.cash.detail.query', $api_params);
 }