接口名稱:紅包打款接口
英文名稱:alipay.fund.coupon.order.disburse
産品首頁:[url]https://openclub.alipay.com/read.php?tid=12180&fid=72[/url]
上一步:[url]https://openclub.alipay.com/read.php?tid=13602&fid=72[/url]
下一步:[url]https://openclub.alipay.com/read.php?tid=13610&fid=72[/url]
一、注意事項
1、使用者領取紅包,通過打款接口實作。
2、若是想實作拆分紅包使用者分别領取(領取紅包A+領取紅包B+……+領取紅包n<=總紅包)。
3、打款接口調用頻次:每秒要小于100次;
4、打款接口的發送的異步通知是通過紅包打款接口設定的notify_url位址進行接收;
5、使用調用邏輯中,假設支付接口選擇紅包頁面支付接口,且參數設定out_order_no為2017122716463224,out_request_no為201712271645328,其他參數一緻。
二、參數說明
1、out_order_no: 商戶的授權資金訂單号,同一商戶不同的訂單,不可重複,保持唯一性;
注:打款接口的out_order_no與支付接口的out_order_no不可重複,保持唯一性。
2、out_request_no:商戶本次資金操作的請求流水号,同一商戶每次不同的資金操作請求,商戶請求流水号不要重複;
注:out_order_no不相同的情況下,out_request_no參數值相同可調用成功,建議記錄out_order_no參數為準。
3、deduct_auth_no與deduct_out_order_no不能同時為空:
deduct_auth_no::發放紅包時産生的支付寶資金訂單号(支付接口傳回的auth_no);
deduct_out_order_no:發放紅包時的商戶授權資金訂單号(支付接口設定的out_order_no);
4、payee_user_id:收款方支付寶唯一使用者号——pid(根據設定的pid,紅包金額轉入對應賬戶内);
三、接口請求示例
JAVA版請求示例
1、A使用者領取紅包
public static void main(String[] args) throws AlipayApiException {
//在SDK調用前需要進行初始化
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
AlipayFundCouponOrderDisburseRequest request = new AlipayFundCouponOrderDisburseRequest();
AlipayFundCouponOrderDisburseModel model = new AlipayFundCouponOrderDisburseModel();
//商戶的授權資金訂單号,同一商戶不同的訂單,商戶授權資金訂單号不能重複
model.setOutOrderNo("20171228925");
//本次資金操作的請求流水号,同一商戶每次不同的資金操作請求
model.setOutRequestNo("201712271645335");
//發放紅包時産生的支付寶資金訂單号。deduct_auth_no與下面的deduct_out_order_no不能同時為空
//二者都存在時,以deduct_auth_no為準
//model.setDeductAuthNo("");
//該參數為支付接口的OutOrderNo與OutOrderNo
model.setDeductOutOrderNo("2017122716463224");
model.setOrderTitle("紅包打款");
model.setAmount("0.01");
//收款方的支付寶唯一使用者号
model.setPayeeUserId("使用者2088開頭的資訊(此處脫敏)");
//收款方的支付寶登入号,形式為手機号或郵箱等
// model.setPayeeLogonId("手機号");
//該筆訂單允許的最晚付款時間,逾期将關閉該筆訂單 .取值範圍:1m~7d
model.setPayTimeout("1h");
request.setBizModel(model);
AlipayFundCouponOrderDisburseResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("調用成功");
} else {
System.out.println("調用失敗");
}
System.out.println(response.getBody());
}
2、B使用者領取紅包
當第二個人領取紅包時,參數注意如下:
1、out_order_no:(需改變)為同一商戶不同訂單的授權資金訂單号;
2、out_request_no:為本次交易,資金操作的請求流水号,是否重複都可以調用成功(但建議不要重複);
若out_order_no未改變時,報錯UNIQUE_VIOLATION:下單失敗,商戶訂單号重複。
public static void main(String[] args) throws AlipayApiException {
//在SDK調用前需要進行初始化
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
AlipayFundCouponOrderDisburseRequest request = new AlipayFundCouponOrderDisburseRequest();
AlipayFundCouponOrderDisburseModel model = new AlipayFundCouponOrderDisburseModel();
//商戶的授權資金訂單号,同一商戶不同的訂單,商戶授權資金訂單号不能重複
model.setOutOrderNo("20171228926");
//本次資金操作的請求流水号,同一商戶每次不同的資金操作請求
model.setOutRequestNo("201712271645335");
//發放紅包時産生的支付寶資金訂單号。deduct_auth_no與下面的deduct_out_order_no不能同時為空
//二者都存在時,以deduct_auth_no為準
//model.setDeductAuthNo("");
//該參數為支付接口的OutOrderNo與OutOrderNo
model.setDeductOutOrderNo("2017122716463224");
model.setOrderTitle("紅包打款給使用者B");
model.setAmount("0.01");
//收款方的支付寶唯一使用者号
model.setPayeeUserId("使用者2088開頭的資訊(此處脫敏)");
//收款方的支付寶登入号,形式為手機号或郵箱等
// model.setPayeeLogonId("手機号");
//該筆訂單允許的最晚付款時間,逾期将關閉該筆訂單 .取值範圍:1m~7d
model.setPayTimeout("1h");
request.setBizModel(model);
AlipayFundCouponOrderDisburseResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("調用成功");
} else {
System.out.println("調用失敗");
}
System.out.println(response.getBody());
}
PHP版請求示例
<?php
require_once 'AopSdk.php';
$aop = new AopClient ();
$aop->appId = '填寫您的appid';
$aop->rsaPrivateKey = '填寫您的私鑰';
$aop->alipayrsaPublicKey='填寫您的支付寶公鑰';
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset='utf-8';
$aop->format='json';
$date=date("YmdHis");
$arr=range(1000,9999);
shuffle($arr);
$request = new AlipayFundCouponOrderDisburseRequest ();
$request->setBizContent("{" .
""out_order_no":"20171228925"," .
// ""deduct_auth_no":"2014031600002001260000001024"," .
""deduct_out_order_no":"2017122716463224"," .
""out_request_no":"201712271645335"," .
""order_title":"紅包打款"," .
""amount":0.01," .
""payee_user_id":"使用者2088開頭的資訊(此處脫敏)"," .
// ""payee_logon_id":"收款方登入号"," .
""pay_timeout":"1h"" .
"}");
$result = $aop->execute ( $request);
var_dump($result);
<?php
require_once 'AopSdk.php';
$aop = new AopClient ();
$aop->appId = '填寫您的appid';
$aop->rsaPrivateKey = '填寫您的私鑰';
$aop->alipayrsaPublicKey='填寫您的支付寶公鑰';
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset='utf-8';
$aop->format='json';
$date=date("YmdHis");
$arr=range(1000,9999);
shuffle($arr);
$request = new AlipayFundCouponOrderDisburseRequest ();
$request->setBizContent("{" .
""out_order_no":"20171228926"," .
// ""deduct_auth_no":"2014031600002001260000001024"," .
""deduct_out_order_no":"2017122716463224"," .
""out_request_no":"201712271645335"," .
""order_title":"紅包打款給使用者B"," .
""amount":0.01," .
""payee_user_id":"使用者2088開頭的資訊(此處脫敏)"," .
// ""payee_logon_id":"收款方登入号"," .
""pay_timeout":"1h"" .
"}");
$result = $aop->execute ( $request);
var_dump($result);
.NET版本請求示例
IAopClient client = new DefaultAopClient(config.gatewayUrl, config.app_id, config.private_key, "json", "1.0", "RSA2", config.alipay_public_key, config.charset, false);
AlipayFundCouponOrderDisburseRequest request = new AlipayFundCouponOrderDisburseRequest();
request.BizContent="{" +
""out_order_no":"20171228925"," +
// ""deduct_auth_no":"2014031600002001260000001024"," +
""deduct_out_order_no":"2017122716463224"," +
""out_request_no":"201712271645335"," +
""order_title