java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...
這段時間把支付基本搞完了,因為做的過程中遇到許多問題,特地記錄下來,同時方便其他java coder,廢話少說,下面開始。
整體思路:在后臺,根據參數創建支付寶客戶端AlipayClient,發送參數到支付寶,支付寶直接返回一個表單,我們只需要將表單輸出到頁面上,后續支付寶異步通知,比較重要是驗簽,支付寶也提供的工具,比較方便。微信支付java開發詳細
(jar包或maven的引入這里省略)
1、申請支付寶支付,這里大家自己研究,網上很多教程。
2、創建支付
/**
* 調用支付寶支付alipay.trade.page.pay
* 商戶系統請求支付寶接口alipay.trade.page.pay,支付寶對商戶請求參數進行校驗,而后重定向至用戶登錄頁面。
*
* @param model
* @return
* @throws Exception
*/
public String createAlipay(Model model, String order_no, BigDecimal amount, Integer resource_trad_id, String trad_type, HttpServletResponse response) throws Exception {
String form = "";
User user = (User) model.asMap().get("user");
//生成一筆預付訂單流水
String trad_no = "PC_ALIPAY" + OrderNoUtil.leadsNo();//訂單流水號
ShareUserTrad trad = new ShareUserTrad();
trad.setResourceTradId(resource_trad_id);
trad.setUserId(user.getId());
trad.setCreatedBy(user.getId());
trad.setLastUpdBy(user.getId());
trad.setOnlineOfflineFlag("0");//線上
trad.setOrderNo(order_no);
trad.setUserTradAmount(amount);
trad.setTradMethod("3");//支付寶
trad.setPayReceiveFlag("2");//支出
trad.setSuccessFlag("0");//交易進行中
trad.setTradType("1");//訂單支付
trad.setTradNo(trad_no);
trad.setModifyNum(0);
shareUserTradMapper.insertSelective(trad);
try {
//初始化客戶端
AlipayClient alipayClient = new DefaultAlipayClient(Config.alipay_url, Config.alipay_appid, Config.alipay_app_private_key, Config.alipay_format, Config.alipay_charset, Config.alipay_app_public_key, Config.alipay_sign_type);
//創建API對應的request
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setReturnUrl("");//回退到訂單列表頁面
alipayRequest.setNotifyUrl("");//在公共參數中設置回跳和通知地址
alipayRequest.setBizContent("{" +
" \"out_trade_no\":\"" + trad_no + "\"," +
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
//" \"total_amount\":" + amount.toString() + "," +
"\"total_amount\":\"0.01\"," +
" \"subject\":\"訂單支付\"," +
" \"body\":\"訂單:" + order_no + "支付\"," +
" \"passback_params\":\"" + order_no + "\"" +
" }");//填充業務參數
form = alipayClient.pageExecute(alipayRequest).getBody(); //調用SDK生成表單
} catch (Exception e) {
e.printStackTrace();
String sOut = "";
StackTraceElement[] trace = e.getStackTrace();
for (StackTraceElement s : trace) {
sOut += "\tat " + s + "\r\n";
}
model.addAttribute("failMsg", sOut + "alipay_url:" + Config.alipay_url);
return "/pay/payFail";
}
response.setContentType("text/html;charset=" + Config.alipay_charset);
response.getWriter().write(form);//直接將完整的表單html輸出到頁面
response.getWriter().flush();
response.getWriter().close();
return null;
}
本文來自電腦雜談,轉載請注明本文網址:
http://www.pc-fly.com/a/sanxing/article-70423-1.html
總結
以上是生活随笔為你收集整理的java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二季1:图像基础知识
- 下一篇: C语言程序设计----C语言基础知识