天天看點

收發現金紅包——alipay.fund.coupon.order.disburse(紅包打款接口)一、注意事項二、參數說明三、接口請求示例

接口名稱:紅包打款接口

英文名稱: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