天天看點

條碼支付內建開發者指南一、官方文檔 二、開發前準備工作三、接口內建示例代碼四、注意事項

本帖僅供參考,非官方demo

一、官方文檔

文檔位址:點選【

檢視

sdk下載下傳:點選【

官方demo下載下傳位址:點選【

二、開發前準備工作

1、簽約:[url]https://openclub.alipay.com/read.php?tid=276&fid=72[/url]

2、建立應用:[url]https://openclub.alipay.com/read.php?tid=1606&fid=72[/url]

3、生成密鑰:[url]https://openclub.alipay.com/read.php?tid=1833&fid=69[/url]

4、下載下傳服務端sdk:

[url]https://docs.open.alipay.com/54/106370/[/url]

如何簽約以及簽約無法成功等相關簽約問題:[url]https://openclub.alipay.com/read.php?tid=276&fid=72[/url]

注意事項:1、支援沙箱測試;2、需簽約并添加功能;3、支援第三方調用。

檢查調用appid的應用功能清單中是否添加“當面付”并顯示已簽約。

條碼支付內建開發者指南一、官方文檔 二、開發前準備工作三、接口內建示例代碼四、注意事項

三、接口內建示例代碼

支付寶網關:

沙箱環境支付寶網:

[url]https://openapi.alipay[/url]

dev.com/gateway.do   

正式環境支付寶網關:

[url]https://openapi.alipay.com/gateway.do[/url]

1、參數說明

(1)out_trade_no:商戶訂單号,由商戶自定義設定;

(2)scene:支付場景

條碼支付,取值:bar_code 

聲波支付,取值:wave_code

(3)subject:商品标題

(4)auth_code:支付授權碼,由使用者支付寶app的“付錢”選項中擷取

條碼支付內建開發者指南一、官方文檔 二、開發前準備工作三、接口內建示例代碼四、注意事項
條碼支付內建開發者指南一、官方文檔 二、開發前準備工作三、接口內建示例代碼四、注意事項

2、JAVA請求示例

沙箱賬号

//沙箱APPID	public static final  String app_id = "填寫您的appid";	//沙箱私鑰pkcs8格式	public static final  String merchant_private_key = "填寫您的私鑰";	//支付寶公鑰	public static final  String alipay_public_key = "填寫您的支付寶公鑰";	//沙箱網關位址	public static final  String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";//正式環境網關位址	//public static final  String gatewayUrl = "https://openapi.alipay.com/gateway.do";           

(适用于jdk1.5以上)

//獲得初始化的AlipayClient		AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);		//建立API對應的request類				AlipayTradePayRequest request = new AlipayTradePayRequest(); //建立API對應的request類 		request.setNotifyUrl("https://openclub.alipay.com/");		AlipayTradePayModel model = new AlipayTradePayModel();		model.setOutTradeNo("2019012020321558348254");		//支付場景 條碼支付,取值:bar_code ;聲波支付,取值:wave_code		model.setScene("bar_code");		//支付寶錢包中的付款碼    	model.setAuthCode("285532156582655772");		model.setSubject("我是subject");		model.setTotalAmount("0.01");		request.setBizModel(model);		//通過alipayClient調用API,獲得對應的response類					AlipayTradePayResponse response = alipayClient.execute(request);		/**		//下面兩代碼是使用第三方應用授權傳值方式 授權傳app_auth_token寫法	    // 第三方應用授權擷取app_auth_token可參照該貼:[url]https://openclub.alipay.com/read.php?tid=1649&fid=43[/url] 擷取app_auth_token	    //用于代商戶發起請求,傳值app_auth_token是誰授權的,錢就收到誰的賬戶中	      String app_auth_token="";  	      AlipayTradePayResponse response = alipayClient.execute(request,"",app_auth_token);	     **/		//判斷是否請求成功		if(response.isSuccess()){			System.out.println("調用成功");		} else {			System.out.println("調用失敗");		}		//傳回資訊		System.out.println( response.getBody());           

傳回結果

{"alipay_trade_pay_response":{"code":"10000","msg":"Success","buyer_logon_id":"uqq***@sandbox.com","buyer_pay_amount":"0.01","buyer_user_id":"2088102175794899","buyer_user_type":"PRIVATE","fund_bill_list":[{"amount":"0.01","fund_channel":"ALIPAYACCOUNT"}],"gmt_payment":"2019-01-28 10:31:09","invoice_amount":"0.01","out_trade_no":"2019012020321558348254","point_amount":"0.00","receipt_amount":"0.01","total_amount":"0.01","trade_no":"2019012822001494890500811033"},"sign":"Kesok3smU3DMBbG3ErBb2547mGedldcGa3XE16A/eo987ENHFjZOymjMA5qr+riIeVn3te7vljhvAoRpKaJ0IIH8lLMiCo8L+RNkpHQmoxMl6i0pZA/rbv1N4Hpd68xdKJbPp43AJ1CoEVzjKwPN3fw5XOCLTGAXk8Z3xGRmBRIOJuZa7/+hy/kD2geIOraZgt9fI22Ho9QGr1mz5UWgK/WgHVGpxef/QgUfQynqZcNVBYrXDkfL7RXPuSQdemXAienLPZwYf3d+7cYY+LNmqv89pu1heAVup/SqMYyTOhAZZXTA3kuOcWYJ2zCJTVE7RvpSweHp6lituAu6ZtgGMg=="}           

3、PHP版請求參數

(适用于php 5.5以上環境)

<?php/** *  * 條碼支付:[url]https://docs.open.alipay.com/api_1/alipay.trade.pay[/url] */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->postCharset='utf-8';$aop->format='json';$aop->signType = 'RSA2';//生成随機訂單号$date=date("YmdHis");$arr=range(1000,9999);shuffle($arr);$request = new AlipayTradePayRequest();$request->setBizContent("{" .    "\"out_trade_no\":\"".$date.$arr[0]."\"," .    "\"total_amount\":\"0.1\"," .	"\"scene\":\"bar_code\"," .	"\"auth_code\":\"282535540301553598\"," .	"\"subject\":\"tets\"," .    "\"product_code\":\"FACE_TO_FACE_PAYMENT\"" .    "}");$result = $aop->execute($request);//post請求//$result = $aop->pageExecute($request);var_dump($result);?>           

傳回資訊

public 'alipay_trade_pay_response' =>     object(stdClass)[10]      public 'code' => string '10000' (length=5)      public 'msg' => string 'Success' (length=7)      public 'buyer_logon_id' => string 'uqq***@sandbox.com' (length=18)      public 'buyer_pay_amount' => string '0.10' (length=4)      public 'buyer_user_id' => string '2088102175794899' (length=16)      public 'buyer_user_type' => string 'PRIVATE' (length=7)      public 'fund_bill_list' =>         array (size=1)          0 =>             object(stdClass)[11]              ...      public 'gmt_payment' => string '2019-01-28 10:27:24' (length=19)      public 'invoice_amount' => string '0.10' (length=4)      public 'out_trade_no' => string '201901280227221355' (length=18)      public 'point_amount' => string '0.00' (length=4)      public 'receipt_amount' => string '0.10' (length=4)      public 'total_amount' => string '0.10' (length=4)      public 'trade_no' => string '2019012822001494890500811327' (length=28)  public 'sign' => string 'ctTkcTpVtF3WGioFaw5lVtI4R4hdss/t/nqUlDQGyDY3zQaW+L3j8t889sxtRd9KZB7wGIDikFr7kySxTAdT3vqcp6OdyFqTQbpO+XznZK8SkV3HX/rkooD/wjzA4niTa6pdkbo/DENYZlK2NLfxaQZ6lnJXLfXiRPwOH0fVz9Qf5/Nw5aKKSe+GWs5e8rcCqr9sbsWt7DhVdXHnb9BSCZTeOCU3vimZzHa7+0o9RuxcJ6H4FRzPm9MIgePSPyUS7eONWb2WEBmIYo40eKnmIjnr9wnnvlmo4x/L9UG1pAcc9gtMSAQN+DyPwQQtXE7bZgvFidDhlAZ+bSyrXa1dMQ==' (length=344)           

4、.NET版請求參數

//應用appId沙箱            string appId = "appid";            //支付寶網關            string serverUrl = "https://openapi.alipaydev.com/gateway.do";            //沙箱支付寶公鑰            string alipay_public_key = @"支付寶公鑰";            //開發者原始私鑰,千萬不要用pkcs8格式的 沙箱            string merchant_private_key = @"商戶應用私鑰";            IAopClient client = new DefaultAopClient(serverUrl, appId, merchant_private_key, "json", "1.0", "RSA2", alipay_public_key, "GBK", false);            //IAopClient client = new DefaultAopClient("https://openapi.alipaydev.com/gateway.do", Com.Alipay.Config.appId, Com.Alipay.Config.merchant_private_key, "json", "1.0", "RSA2", Com.Alipay.Config.alipay_public_key, "GBK", false);            AlipayTradePayRequest alipayRequest = new AlipayTradePayRequest();//建立API對應的request            AlipayTradePayModel model = new AlipayTradePayModel();            model.OutTradeNo = "20190128262815182234123";            model.Subject = "沙箱條碼支付測試";            model.TotalAmount = "0.11";            model.Scene = "bar_code";            model.AuthCode = "289044087810204442";  //支付寶錢包中的付款碼            model.ProductCode = "FACE_TO_FACE_PAYMENT";            alipayRequest.SetBizModel(model);            //第三方調用方式            // AlipayTradePayResponse response = client.Execute(alipayRequest, "", "app_auth_token");            //自調用方式            AlipayTradePayResponse response = client.Execute(alipayRequest);            Console.WriteLine("條碼支付傳回資訊:" + response.Body);           
條碼支付傳回資訊:{"alipay_trade_pay_response":{"code":"10000","msg":"Success","buyer_logon_id":"uqq***@sandbox.com","buyer_pay_amount":"0.11","buyer_user_id":"2088102175794899","buyer_user_type":"PRIVATE","fund_bill_list":[{"amount":"0.11","fund_channel":"ALIPAYACCOUNT"}],"gmt_payment":"2019-01-28 10:11:46","invoice_amount":"0.11","out_trade_no":"20190128262815182234123","point_amount":"0.00","receipt_amount":"0.11","total_amount":"0.11","trade_no":"2019012822001494890500811217"},"sign":"VzXHbX1hbviodKtHuL5McBEnQxcyF/jrIG95/ReTiJkVRwQPyAYPOH/piwvpLzRYtLDzg1AyTCo9EV1NVRIXm22YRILXsl4TCmtbZ3dngEbiXLRBXJIA7XSSDOAYPhRSdmm8h1EK8n4DyfSOWoSaZn1Aq6aPSg7ulDsapEgruWai9RW7oKbklpMvE+fodeSp5dLjQf284Zf4kojacnsSyhZEnMh9n+p7l+u+LWSQ68VvLM6lLwqFAZyzn+u5T5BnEhcRigETt312W4vTpPNbupBudIdVin7FB6fB1hpdAgPA+RdmiG0Yox9eS2O8BzMjpN5quN4qS5em0KHIz3iW7A=="}           

四、注意事項

1、調用接口傳回10003狀态

1).金額過大,需要使用者手動輸入密碼,正式環境金額大于1000,沙箱環境因賬戶而異,以實測為準;

2).賬戶餘額不足,導緻扣款失敗;

3).系統異常,網絡問題,導緻付款失敗;

2、交易是否成功

接口傳回1000隻代表接口調用成功,不代表交易成功,交易成功建議使用查詢接口查詢。

3、條碼限額

1千塊錢以内是無需輸入密碼,直接扣款的,傳回支付成功;

大于一千則會掃碼後會跳出密碼輸入框,要求輸入密碼,不輸入密碼會傳回1003(等待支付)狀态;

4、“碼已失效,請重新整理二維碼後重試”

1.檢查auth_code 是否傳值錯誤;

2.檢查支付請求網關是沙箱還是正式環境,是否跟擷取code碼的錢包相符,可能沙箱環境用的正式錢包的碼,正式環境用的沙箱錢包的條碼;

5、沙箱錢包下載下傳

沙箱賬号檢視位址:[url]https://openhome.alipay.com/platform/appDaily.htm?tab=info[/url]

注意:沙箱錢包隻适用于安卓手機,不支援ios;

6、輔助接口

alipay.trade.cancel(統一收單交易撤銷接口)內建流程:[url]https://openclub.alipay.com/read.php?tid=13966&fid=56[/url]

alipay.trade.query(統一收單線下交易查詢)內建流程:[url]https://openclub.alipay.com/read.php?tid=13842&fid=56[/url]

alipay.trade.refund(統一收單交易退款接口) 內建流程:[url]https://openclub.alipay.com/read.php?tid=13853&fid=56[/url]

alipay.trade.fastpay.refund.query(統一收單交易退款查詢) :[url]https://openclub.alipay.com/read.php?tid=13962&fid=56[/url]

alipay.trade.close(統收單交易關閉接口)內建流程:[url]https://openclub.alipay.com/read.php?tid=13963&fid=56[/url]

alipay.data.dataservice.bill.downloadurl.query(查詢對賬單下載下傳位址):[url]https://openclub.alipay.com/read.php?tid=14016&fid=56[/url]

如果還是報錯,請按如下方式進行提問:

正确提問方式:使用環境(沙箱還是正式環境)+接口名稱(中文+英文)+ 請求參數 + 報錯資訊詳情