B2C现金红包流程:

1.调用统一转账接口(alipay.fund.trans.uni.transfer)将资金从发起请求的商户支付宝账户余额打款给领取红包的人。
2.可以通过转账业务单据查询接口(aalipay.fund.trans.common.query)查询红包转发送状态。
B2C现金红包代码:

<?php
$appid = 'xxxxx';  //https://open.alipay.com 账户中心->密钥管理->开放平台密钥,填写添加了现金红包的应用的APPID
$alipayRootCertSn = 'xxxxx';     //支付宝根证书sn
$appCertSn = 'xxxxx';     //应用证书sn
$outTradeNo = uniqid();     //商户订单号,不能重复
$payAmount = 0.01;          //红包金额,单位:元
$orderName = '公益';          //红包标题
$signType = 'RSA2';          //签名算法类型,支持RSA2和RSA,推荐使用RSA2
$userid = '2088xxx'; //接收红包的支付宝用户id(2088开头的16位数字)
//商户私钥
$rsaPrivateKey='xxxxx';
$aliPay = new AlipayService();
$aliPay->setAppid($appid);
$aliPay->setAlipayRootCertSn($alipayRootCertSn);
$aliPay->setAppCertSn($appCertSn);
$aliPay->setRsaPrivateKey($rsaPrivateKey);
$aliPay->setNotifyUrl($notifyUrl);
$aliPay->setTotalFee($payAmount);
$aliPay->setOutTradeNo($outTradeNo);
$aliPay->setOrderName($orderName);
$aliPay->setUserId($userid);
$result = $aliPay->sendRedPacket();
if($result['alipay_fund_trans_uni_transfer_response']['code']==10000){echo '红包发送成功';
}else{echo '红包发送失败,原因:'.$result['alipay_fund_trans_uni_transfer_response']['msg'];
}class AlipayService
{protected $appId;protected $alipayRootCertSn;protected $appCertSn;protected $notifyUrl;protected $charset;//私钥值protected $rsaPrivateKey;protected $totalFee;protected $outTradeNo;protected $orderName;protected $userid;public function __construct(){$this->charset = 'utf-8';}public function setAppid($appid){$this->appId = $appid;}public function setAlipayRootCertSn($alipayRootCertSn){$this->alipayRootCertSn = $alipayRootCertSn;}public function setAppCertSn($appCertSn){$this->appCertSn = $appCertSn;}public function setNotifyUrl($notifyUrl){$this->notifyUrl = $notifyUrl;}public function setRsaPrivateKey($saPrivateKey){$this->rsaPrivateKey = $saPrivateKey;}public function setTotalFee($payAmount){$this->totalFee = $payAmount;}public function setOutTradeNo($outTradeNo){$this->outTradeNo = $outTradeNo;}public function setOrderName($orderName){$this->orderName = $orderName;}public function setUserId($userid){$this->userid = $userid;}/*** 发红包* @return array*/public function sendRedPacket(){//请求参数$requestConfigs = array('out_biz_no'=>$this->outTradeNo,'trans_amount'=>$this->totalFee, //单位 元'product_code'=>'STD_RED_PACKET','biz_scene'=>'DIRECT_TRANSFER','remark'=>$this->orderName,'order_title'=>$this->orderName,  //订单标题'payee_info'=>array('identity'=>$this->userid,     //接受红包的用户id'identity_type'=>'ALIPAY_USER_ID',     //参与方的标识类型),'business_params'=>array('sub_biz_scene'=>'REDPACKET',       //子场景));$commonConfigs = array(//公共参数'alipay_root_cert_sn' => $this->alipayRootCertSn,'app_cert_sn' => $this->appCertSn,'app_id' => $this->appId,'method' => 'alipay.fund.trans.uni.transfer',             //接口名称'format' => 'JSON','charset'=>'utf-8','sign_type'=>'RSA2','timestamp'=>date('Y-m-d H:i:s'),'version'=>'1.0','biz_content'=>json_encode($requestConfigs),);$commonConfigs["sign"] = $this->generateSign($commonConfigs, $commonConfigs['sign_type']);$result = $this->curlPost('https://openapi.alipay.com/gateway.do',$commonConfigs);return json_decode($result,true);}public function generateSign($params, $signType = "RSA") {return $this->sign($this->getSignContent($params), $signType);}protected function sign($data, $signType = "RSA") {$priKey=$this->rsaPrivateKey;$res = "-----BEGIN RSA PRIVATE KEY-----\n" .wordwrap($priKey, 64, "\n", true) ."\n-----END RSA PRIVATE KEY-----";($res) or die('您使用的私钥格式错误,请检查RSA私钥配置');if ("RSA2" == $signType) {openssl_sign($data, $sign, $res, version_compare(PHP_VERSION,'5.4.0', '<') ? SHA256 : OPENSSL_ALGO_SHA256); //OPENSSL_ALGO_SHA256是php5.4.8以上版本才支持} else {openssl_sign($data, $sign, $res);}$sign = base64_encode($sign);return $sign;}/*** 校验$value是否非空*  if not set ,return true;*    if is null , return true;**/protected function checkEmpty($value) {if (!isset($value))return true;if ($value === null)return true;if (trim($value) === "")return true;return false;}public function getSignContent($params) {ksort($params);$stringToBeSigned = "";$i = 0;foreach ($params as $k => $v) {if (false === $this->checkEmpty($v) && "@" != substr($v, 0, 1)) {// 转换成目标字符集$v = $this->characet($v, $this->charset);if ($i == 0) {$stringToBeSigned .= "$k" . "=" . "$v";} else {$stringToBeSigned .= "&" . "$k" . "=" . "$v";}$i++;}}unset ($k, $v);return $stringToBeSigned;}/*** 转换字符集编码* @param $data* @param $targetCharset* @return string*/function characet($data, $targetCharset) {if (!empty($data)) {$fileType = $this->charset;if (strcasecmp($fileType, $targetCharset) != 0) {$data = mb_convert_encoding($data, $targetCharset, $fileType);//$data = iconv($fileType, $targetCharset.'//IGNORE', $data);}}return $data;}public function curlPost($url = '', $postData = '', $options = array()){if (is_array($postData)) {$postData = http_build_query($postData);}$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数if (!empty($options)) {curl_setopt_array($ch, $options);}//https请求 不验证证书和hostcurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);$data = curl_exec($ch);curl_close($ch);return $data;}
}

C2C现金红包流程:

1.调用发红包接口(alipay.fund.trans.app.pay)将用户付款的资金转入支付宝中间户,完成发送红包环节。
2.调用红包打款接口(alipay.fund.trans.uni.transfer)将资金从支付宝中间户打款给领取红包的人。
3.如果第2步未完成,到指定超时时间(目前设置的30分钟,可以修改)后,资金会原路退回。
支付宝现金红包接口文档:https://docs.open.alipay.com/20190111144811460526/api/

C2C红包演示地址:
https://www.dedemao.com/alipay/red_packet.html

更多支付宝DEMO演示:
https://www.dedemao.com/alipay/demo.html

一个PHP文件搞定支付宝现金红包相关推荐

  1. 一个PHP文件搞定支付宝系列之手机网站支付(兼容微信浏览器)

    网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入支付宝支付的带来些许帮助和借鉴意义. 一个PHP文件搞定支付宝系列:ht ...

  2. 一个PHP文件搞定支付宝系列之手机网站支付(兼容微信浏览器) 转

    网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入支付宝支付的带来些许帮助和借鉴意义. 一个PHP文件搞定支付宝系列:ht ...

  3. php支付宝系列之电脑网站支付,一个PHP文件搞定支付宝之电脑网站支付

    本篇文章给大家分享的内容是关于用一个PHP文件搞定支付宝之电脑网站支付 ,有需要的朋友可以参考一下 网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文 ...

  4. 手机浏览器只保存php文件夹,一个PHP文件搞定支付宝系列之手机网站支付(兼容微信浏览器)...

    网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入支付宝支付的带来些许帮助和借鉴意义. 在手机浏览器下打开实现效果 在微信 ...

  5. php调用jssdk转发_php一个文件搞定微信jssdk配置

    php一个文件搞定微信jssdk配置: 包括缓存,包括https通讯,获取微信access_token,签名什么的都有.但是防范性编程做得比较少,商业用的话,需要完善下代码. 使用姿势 ^ajax(C ...

  6. php微信sdk接口文档,php一个文件搞定微信jssdk配置

    学习PHP的小伙伴在处理微信jssdk配置的时候可能会遇到一些问题.以下是百分网小编精心为大家整理的php一个文件搞定微信jssdk配置,希望对大家有所帮助!更多内容请关注应届毕业生网! 包括缓存,包 ...

  7. 转:花了一个周末,搞定GnuCash之信用卡和个人借贷

    以前写的在线记账的网站 文章,比较看重的我的钱呢,已被我pass掉,原因不说了. 又有一段时间不记账了,最近看sivan写的体验友商网的免费在线储钱罐 文章,抱着无限期待去注册,失望,不是想要的. 不 ...

  8. 1exe1.net - 1个exe文件搞定1切

    1exe1.net - 1个exe文件搞定1切 本站所收录软件均只有一个 .exe,不含其它任何文件,绿色得不得了,欢迎提供货源. 推荐 上海电脑维修网 ,我的5u6网盘 文件名 大小 简介 版本 更 ...

  9. 计算机三级成绩截图,09年计算机三级辅导:填表截图一个傲游全搞定

    09年计算机三级辅导:填表截图一个傲游全搞定 分类:计算机等级 | 更新时间:2016-07-07| 来源:中华网考试 各位网友,你上网都做些什么?浏览网页.下载各种资源.填写各种表单.RSS信息阅读 ...

最新文章

  1. Linux-CentOS 7 增加root分区容量
  2. php ssd性能影响,SATA SSD有无缓存,是否影响速度性能实例
  3. HashMap的遍历
  4. 如何对付“新垃圾邮件”?
  5. Python之lambda表达式和内置函数
  6. Linux-Vim使用技巧
  7. ES2005 js =
  8. mfc 子窗体 按钮不触发_实战经验:MFC非模态对话框的使用
  9. 分析国内App推广渠道和方法
  10. 数学建模方法——皮尔逊相关系数及其显著性检验 (Pearson correlation coefficient)
  11. xpath的常见操作
  12. Springboot2.2对put,detele方法的更改
  13. php计算ip掩码,php进行ip地址掩码运算处理的方法
  14. 阿里巴巴、腾讯、字节跳动“顺从”互联网监管,提交应用算法详情
  15. 郭靖大侠的IT为学之路
  16. JAVA基础 之 String
  17. JavaScript-百炼成仙(第1节掌握JavaScript基础1.1-1.21)
  18. IDE/ATA与AHCI
  19. Linux Weblogic 10.3.6安装和漏洞补丁过程
  20. 实战 Vue 之实现拖曳排序功能

热门文章

  1. 移动端侧边菜单栏-Jquery
  2. PHP文件的写入与读取基础
  3. ACCESS子窗体筛选(模糊查询)
  4. ExecuteSQL函数
  5. python编制应用程序错误怎么办_应用程序错误怎么办
  6. 企业数据存储方式发展趋势:数据仓库-大数据平台-数据湖-湖仓一体
  7. 这届程序员不行?阿里崩完,12306又双叒崩溃了!
  8. Adobe Reader 安装后打包绿色版安装
  9. 数据恢复之数据恢复软件
  10. 98年计算机学什么课程,那些年,计算机领域的绝世高手