接口名稱:紅包協定支付接口
英文名稱:alipay.fund.coupon.order.agreement.pay
産品首頁:[url]https://openclub.alipay.com/read.php?tid=12180&fid=72[/url]
下一步:[url]https://openclub.alipay.com/read.php?tid=13609&fid=72[/url]
一、注意事項
1、适用于商戶直接扣除自己賬戶中的金額。
2、紅包協定支付調用方法是execute();
3、如何擷取payee_user_id參數值
payee_user_id:收款方的支付寶唯一使用者号,以2088開頭的16位純數字組成;
使用者領取紅包時需在紅包打款接口中設定payee_user_id,該參數值可通過使用者資訊授權或者調用“APP支付寶登入”接口獲得使用者支付寶UID,使用者領取成功後調用打款接口,資金打款到使用者對應支付寶賬戶。
二、參數說明
1、payer_user_id:付款方的支付寶唯一使用者号(必須為調用接口appid對應的pid);
2、 pay_timeout:該筆訂單允許的最晚付款時間,逾期将關閉該筆訂單,取值範圍:1m~7d(可能存在對方賬戶餘額不足或網絡、系統等原因沒有扣款成功);
3、 extra_param:業務擴充參數,用于商戶的特定業務資訊的傳遞,json格式設定,
(1)擴充字段中傳入orderExpiredTime=1m(指定建立紅包後,超過1分鐘未被打款(調用打款接口)則自動退款);
示例:extra_param:{ "merchantExt":"orderExpiredTime=1m"},該參數設定在其他支付接口,沒有報錯,但是也沒有生效,隻應用于紅包協定支付接口;
(2)pay_timeout是指交易建立後設定的最晚付款時間,不同于orderExpiredTime;
三、接口請求示例
JAVA版請求示例
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);
AlipayFundCouponOrderAgreementPayRequest request = new AlipayFundCouponOrderAgreementPayRequest();
AlipayFundCouponOrderAgreementPayModel model = new AlipayFundCouponOrderAgreementPayModel();
//商戶的授權資金訂單号 (自己填寫,必須保證唯一性)
model.setOutOrderNo(getoutOrderNo());
//商戶本次資金操作的請求流水号 (自己填寫,必須保證唯一性)
model.setOutRequestNo(getoutOrderNo()+"test");
//訂單描述
model.setOrderTitle("紅包協定支付接口");
//金額,取值範圍:[0.01,100000000.00]
model.setAmount("0.01");
//付款方的支付寶唯一使用者号,以2088開頭的16位純數字組成,調用接口賬戶關聯的付款賬戶
model.setPayerUserId("商家2088開頭的資訊(此處脫敏)");
//該筆訂單允許的最晚付款時間
model.setPayTimeout("1h");
request.setBizModel(model);
AlipayFundCouponOrderAgreementPayResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("調用成功!");
}else {
System.out.println("調用失敗!");
}
System.out.println(response.getBody());
}
/**
* 随機生成訂單号
* @return
*/
private static String getoutOrderNo() {
// TODO Auto-generated method stub
SimpleDateFormat simpleDateFormat;
simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
String str = simpleDateFormat.format(date);
Random random = new Random();
int rannum = (int) (random.nextDouble() * (999 - 100 + 1)) + 100;// 擷取5位随機數
return str+rannum;// 目前時間
}
}
響應參數:
{"alipay_fund_coupon_order_agreement_pay_response":{"code":"10000","msg":"Success","amount":"0.01","auth_no":"2019010210002001330220511356","gmt_trans":"2019-01-02 17:12:30","operation_id":"20190102652066653302","out_order_no":"20190102171229111","out_request_no":"20190102171229648test","status":"SUCCESS"},"sign":"bT6Y1TyQnGxSmylf7HD/lN8+L4kBe5tyyYYiVjcqFnMzkBIbxtAnJfUSV5Luup/puxsJ6Ws8HliTuzvTX3dqk098z3Fv1kYhW2AqNNst20evLn/WzJg7pwRieXcyye2EZJKfO6eF4krLp6Wci0fw7xwspfV9+KiB2W8WtUdGSEwLRi+5CIoYDBQMYZWW8txDWzYKGl6/O+DNn3B+AoinNV4QilL4llp5++B+gOpsNQwdRd62IZ26Zcks1glGJUrixpu0GB+nDHkPn0byYM52OOOATKD/LOTRkWBzf2VYXAjBrecj2vXYbT8AAUud+IH8/fMBfX0wkN/xHaOIIVBbUw=="}
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 AlipayFundCouponOrderAgreementPayRequest ();
$request->setBizContent("{" .
""out_order_no":"80777352559380458"," .
""out_request_no":"8077735255634078"," .
""order_title":"紅包協定支付接口"," .
""amount":1.00," .
""payer_user_id":"商家2088開頭的資訊(此處脫敏)"," .
""pay_timeout":"1h"" .
// ""extra_param":"{\"merchantExt\":\"key=value\"}"".
"}");
// $request->setNotifyUrl('請填寫您的異步通知位址');
$result = $aop->execute ( $request);
var_dump($result);
響應參數
public 'alipay_fund_coupon_order_agreement_pay_response' =>
object(stdClass)[9]
public 'code' => string '10000' (length=5)
public 'msg' => string 'Success' (length=7)
public 'amount' => string '1.00' (length=4)
public 'auth_no' => string '2019030610002001330238463473' (length=28)
public 'gmt_trans' => string '2019-03-06 16:51:14' (length=19)
public 'operation_id' => string '20190306796824493302' (length=20)
public 'out_order_no' => string '80777352559380458' (length=17)
public 'out_request_no' => string '8077735255634078' (length=16)
public 'status' => string 'SUCCESS' (length=7)
public 'sign' => string 'f+z581OHP+jqI/lyPfnEWPeOPiAS0z4HghfC6cyZfw0342lZnfUJBd5XU4ELRrZeSnJHxRx6hByFkeiOKGFZELiUanbcJfoHRJbrLJG0pPU0Y62oTLEzQjFhjPqhmZU6BXzZjgXU0h8WvGQ2x+fErkk0BGqtKkScXIymiVGMj30aswJzaZgHpcuGtg2x0vOdy+kz4rVIha8xCJVIjUXBNMUqfSJw3Mb15HuSVCVi36lCj03AW57BRMe5T2VCGG0SfPDRNWlLIiO9RM1k5hpxC4iSl1quoDfk8NzgoLKkJOMV82p5ySg6+qbqpLh1h0XUkTSbPTdESDX4iNqpyBz9JQ==' (length=344)
.NET版本請求示例
IAopClient client = new DefaultAopClient(config.gatewayUrl, config.app_id, config.private_key, "json", "1.0", "RSA2", config.alipay_public_key, config.charset, false);
AlipayFundCouponOrderAgreementPayRequest request = new AlipayFundCouponOrderAgreementPayRequest();
request.BizContent="{" +
""out_order_no":"20190102171229111"," +
""out_request_no":"20190102171229648test"," +
""order_title":"紅包協定支付接口"," +
""amount":0.01," +
""payer_user_id":"商家2088開頭的資訊(此處脫敏)"," +
""pay_timeout":"1h"" +
// ""extra_param":"{\"merchantExt\":\"key=value\"}""+
" }";
AlipayFundCouponOrderAgreementPayResponse response = client.execute(request);
Response.Write(response.Body);
{"alipay_fund_coupon_order_agreement_pay_response":{"code":"10000","msg":"Success","amount":"0.01","auth_no":"2019010210002001330220511356","gmt_trans":"2019-01-02 17:12:30","operation_id":"20190102652066653302","out_order_no":"20190102171229111","out_request_no":"20190102171229648test","status":"SUCCESS"},"sign":"bT6Y1TyQnGxSmylf7HD/lN8+L4kBe5tyyYYiVjcqFnMzkBIbxtAnJfUSV5Luup/puxsJ6Ws8HliTuzvTX3dqk098z3Fv1kYhW2AqNNst20evLn/WzJg7pwRieXcyye2EZJKfO6eF4krLp6Wci0fw7xwspfV9+KiB2W8WtUdGSEwLRi+5CIoYDBQMYZWW8txDWzYKGl6/O+DNn3B+AoinNV4QilL4llp5++B+gOpsNQwdRd62IZ26Zcks1glGJUrixpu0GB+nDHkPn0byYM52OOOATKD/LOTRkWBzf2VYXAjBrecj2vXYbT8AAUud+IH8/fMBfX0wkN/xHaOIIVBbUw=="}
四、異步通知
觸發通知類型

異步通知示例
支付成功後,觸發異步通知,notify_url位址接收通知如下:
http://支付接口設定的異步位址?notify_type=fund_auth_pay¬ify_id=91722adff935e8cfa58b3aabf4dead6ibe¬ify_time=2017-02-16 21:46:15&sign_type=RSA2&sign=WcO+t3D8Kg71dTlKwN7r9PzUOXeaBJwp8/FOuSxcuSkXsoVYxBpsAidprySCjHCjmaglNcjoKJQLJ28/Asl93joTW39FX6i07lXhnbPknezAlwmvPdnQuI01HZsZF9V1i6ggZjBiAd5lG8bZtTxZOJ87ub2i9GuJ3Nr/NUc9VeY=&auth_no=null&out_order_no=null&operation_id=null&out_request_no=null&operation_type=PAY&amount=null&status=SUCCESS&gmt