支付宝支付 - 构建支付表单填并提交
生活随笔
收集整理的這篇文章主要介紹了
支付宝支付 - 构建支付表单填并提交
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/**** @Description: 前往支付寶進行支付* @return* @throws Exception*/
@ResponseBody
@RequestMapping(value="/goAlipay")
public JSONResult goAlipay(String merchantOrderId, String merchantUserId) throws Exception{// 查詢訂單詳情Orders waitPayOrder = paymentOrderService.queryOrderByStatus(merchantUserId, merchantOrderId, PaymentStatus.WAIT_PAY.type);//獲得初始化的AlipayClientAlipayClient alipayClient = new DefaultAlipayClient(aliPayResource.getGatewayUrl(),aliPayResource.getAppId(),aliPayResource.getMerchantPrivateKey(),"json",aliPayResource.getCharset(),aliPayResource.getAlipayPublicKey(),aliPayResource.getSignType());//設置請求參數AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();alipayRequest.setReturnUrl(aliPayResource.getReturnUrl());alipayRequest.setNotifyUrl(aliPayResource.getNotifyUrl());// 商戶訂單號, 商戶網站訂單系統中唯一訂單號, 必填String out_trade_no = merchantOrderId;// 付款金額, 必填 單位元String total_amount = CurrencyUtils.getFen2YuanWithPoint(waitPayOrder.getAmount());
// String total_amount = "0.01"; // 測試用 1分錢// 訂單名稱, 必填String subject = "天天吃貨-付款用戶[" + merchantUserId + "]";// 商品描述, 可空, 目前先用訂單名稱String body = subject;// 該筆訂單允許的最晚付款時間,逾期將關閉交易。取值范圍:1m~15d。m-分鐘,h-小時,d-天,1c-當天(1c-當天的情況下,無論交易何時創建,都在0點關閉)。 該參數數值不接受小數點, 如 1.5h,可轉換為 90m。String timeout_express = "1d";alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","+ "\"total_amount\":\""+ total_amount +"\","+ "\"subject\":\""+ subject +"\","+ "\"body\":\""+ body +"\","+ "\"timeout_express\":\""+ timeout_express +"\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");//若想給BizContent增加其他可選請求參數, 以增加自定義超時時間參數timeout_express來舉例說明//alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","// + "\"total_amount\":\""+ total_amount +"\","// + "\"subject\":\""+ subject +"\","// + "\"body\":\""+ body +"\","// + "\"timeout_express\":\"10m\","// + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");//請求參數可查閱【電腦網站支付的API文檔-alipay.trade.page.pay-請求參數】章節//請求String alipayForm = "";try {alipayForm = alipayClient.pageExecute(alipayRequest).getBody();} catch (AlipayApiException e) {e.printStackTrace();}log.info("支付寶支付 - 前往支付頁面, alipayForm: \n{}", alipayForm);return JSONResult.ok(alipayForm);
}
//@Configuration
@Component
@ConfigurationProperties(prefix="alipay")
@PropertySource("classpath:alipay.properties")
public class AliPayResource {private String appId;private String merchantPrivateKey;private String alipayPublicKey;private String notifyUrl;private String returnUrl;private String signType;private String charset;private String gatewayUrl;public String getAppId() {return appId;}public void setAppId(String appId) {this.appId = appId;}public String getMerchantPrivateKey() {return merchantPrivateKey;}public void setMerchantPrivateKey(String merchantPrivateKey) {this.merchantPrivateKey = merchantPrivateKey;}public String getAlipayPublicKey() {return alipayPublicKey;}public void setAlipayPublicKey(String alipayPublicKey) {this.alipayPublicKey = alipayPublicKey;}public String getNotifyUrl() {return notifyUrl;}public void setNotifyUrl(String notifyUrl) {this.notifyUrl = notifyUrl;}public String getReturnUrl() {return returnUrl;}public void setReturnUrl(String returnUrl) {this.returnUrl = returnUrl;}public String getSignType() {return signType;}public void setSignType(String signType) {this.signType = signType;}public String getCharset() {return charset;}public void setCharset(String charset) {this.charset = charset;}public String getGatewayUrl() {return gatewayUrl;}public void setGatewayUrl(String gatewayUrl) {this.gatewayUrl = gatewayUrl;}
}
# 應用ID,您的APPID,收款賬號既是您的APPID對應支付寶賬號
alipay.appId=2109000001011231
# 商戶私鑰,您的PKCS8格式RSA2私鑰 (這里我用的商戶應用私鑰,也就是支付寶RSA簽名驗簽工具)
alipay.merchantPrivateKey=MIAt5jdP8Kk1mcM/QYyZnXXKO/C2pCNg/qIwhxQ4criC/cNWCaqQRKemL/Lgjh
# 支付寶公鑰,查看地址:https://openhome.alipay.com/platform/keyManage.htm 對應APPID下的支付寶公鑰。
alipay.alipayPublicKey=Bgkq164UdIS4/T3XamGmxPX/VUgxikfvLav6N/O+EA85Pm4Mb/ujg8IDAQAB# 服務器異步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問
#alipay.notifyUrl=http://2r49yp.natappfree.cc/payment/notice/alipay
alipay.notifyUrl=http://payment.t.xuexi.com/payment/payment/notice/alipay
# 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問
alipay.returnUrl=http://payment.t.xuexi.com/payment/alipayResult
#alipay.returnUrl=http://shop.t.xuexi.com/payment# 簽名方式
alipay.signType=RSA2
# 字符編碼格式
alipay.charset=utf-8
# 支付寶網關
alipay.gatewayUrl=https://openapi.alipay.com/gateway.do
?
總結
以上是生活随笔為你收集整理的支付宝支付 - 构建支付表单填并提交的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信支付 - 支付中心回调通知
- 下一篇: 支付宝支付 - 异步通知与同步通知