支付宝支付流程解读
系統交互流程
請求 alipay.trade.wap.pay(手機網站支付接口2.0接口)生成 form 表單數據返回給前端,前端模擬表單提交喚起收銀臺,用戶輸入支付密碼確認支付后創建訂單。
注意:訂單創建實際創建時間也為用戶支付時間,非喚起收銀臺時間。
示例代碼
bizContent={"out_trade_no":"20220923010102211",//商戶交易號,確保唯一,"total_amount":0.01,//訂單總金額"subject":"手機網站支付",//訂單標題"product_code":"QUICK_WAP_WAY","timeout_express":"30m",//可選,訂單相對超時時間,在訂單創建后開始生效,超時未支付訂單將關閉。"quit_url":"http:\/\/domain.com\/quit",//用戶付款中途退出返回商戶網站的地址"business_params":"{\"data\":123}",//非必填,業務信息,具體值要和支付寶約定"passback_params":"merchantBizType%3d3C%26merchantBizNo%3d2016010101111"//非必填,商戶自定義參數需要urlEncode } AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //獲得初始化的AlipayClient AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//創建API對應的request alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp"); alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp");//在公共參數中設置回跳和通知地址 alipayRequest.setBizContent(參考上面bizContent值示例); try {form = alipayClient.pageExecute(alipayRequest).getBody(); //調用SDK生成表單 } catch (AlipayApiException e) {e.printStackTrace(); }| 參數名稱 | 參數說明 |
| out_trade_no | 商戶訂單號,需保證在商家系統中唯一。 |
| subject | 商品的標題/交易標題/訂單標題/訂單關鍵字等。不可使用特殊字符,如 /,=,& 等。 |
| total_amount | 訂單金額。 |
| quit_url | 用戶付款中途退出返回商戶網站的地址。 |
| time_expire | 非必填,過期時間,用戶多長時間不支付訂單關閉,如果不傳默認是和簽約協議保持一致。 |
| enable_pay_channels | 非必填,可用渠道,用戶只能在指定渠道范圍內支付 。當有多個渠道時用 “,” 分隔 。 |
| disable_pay_channels | 非必填,禁用渠道,用戶不可用指定渠道支付 ,當有多個渠道時用 “,” 分隔 。enable_pay_channels 與 disable_pay_channels 互斥。具體支持的支付渠道可查看 常見問題。 |
| return_url | 支付成功后點擊完成會自動跳轉回商家頁面地址, 同時在 URL 地址上附帶支付結果參數,回跳參數可查看本文 附錄 > 前臺回跳參數說明。在 iOS 系統中,喚起支付寶客戶端支付完成后,不會自動回到瀏覽器或商家 App。用戶可手工切回到瀏覽器或商家 App。 |
| notify_url | 異步通知地址,用于接收支付寶推送給商戶的支付/退款成功的消息。 |
| business_params | 非必填 ,業務信息,具體值要和支付寶約定。關于安全方面的可以參考 商戶風險聯防數據回傳合作。 |
| passback_params | 非必填,商戶自定義參數,需要UrlEncode處理之后傳入。passback_params只在異步通知中返回,同步通知不返回。 |
注意:由于前臺回跳的不可靠性,前臺回跳只能作為商家支付結果頁的入口,最終支付結果必須以異步通知或查詢接口返回為準,不能依賴前臺回跳。
總結
- 上一篇: PDF.js 分片下载的介绍2:分片下载
- 下一篇: 使用正则表达式匹配AA、AAA、AABB