沙箱測試地址:https://openhome.alipay.com/platform/appDaily.htmphp
1資源下載地址:https://docs.open.alipay.com/54/106370/ --下載手機網頁支付demo .取出alipay-sdk-java20170307171631.jar 放入工程java
app支付各接口說明:https://docs.open.alipay.com/api_1/alipay.trade.refundexpress
2服務端配置:json
########支付寶支付配置###########
#商戶appid
zfb.APPID =
#私鑰 pkcs8格式的
zfb.RSA_PRIVATE_KEY =
#服務器異步通知頁面路徑 需http://或者https://格式的完整路徑,不能加?id=123這類自定義參數,必須外網能夠正常訪問
zfb.notify_url =
#頁面跳轉同步通知頁面路徑 需http://或者https://格式的完整路徑,不能加?id=123這類自定義參數,必須外網能夠正常訪問 商戶能夠自定義同步跳轉地址
zfb.return_url =
#請求網關地址
zfb.URL = https://openapi.alipaydev.com/gateway.do
#編碼
zfb.CHARSET = UTF-8
#返回格式
zfb.FORMAT = json
#支付寶公鑰
zfb.ALIPAY_PUBLIC_KEY =
#RSA2
zfb.SIGNTYPE = RSA2
########支付寶支付配置###########
3服務端獲取訂單: 參考地址:https://docs.open.alipay.com/54/106370/ 其餘退款,查看,下載對帳單等參考地址:https://docs.open.alipay.com/204/105297/api
String out_trade_no = request.getParameter("orderId");
String subject = request.getParameter("orderName");
String total_amount=request.getParameter("ordreMoney");
System.out.println("訂單號ID:"+out_trade_no);
/* // 商品描述,可空
String body = "沒有描述";
// 超時時間 可空
String timeout_express="2000m";
// 銷售產品碼 必填
String product_code="QUICK_WAP_PAY";*/
System.out.println(zfb.toString());
AlipayClient alipayClient = new DefaultAlipayClient(zfb.getURL(),
zfb.getAPPID(),
zfb.getRSA_PRIVATE_KEY(),
zfb.getFORMAT(),
zfb.getCHARSET(),
zfb.getALIPAY_PUBLIC_KEY(),
zfb.getSIGNTYPE());
AlipayTradeAppPayRequest alipay_request = new AlipayTradeAppPayRequest();
//SDK已經封裝掉了公共參數,這裏只須要傳入業務參數。如下方法爲sdk的model入參方式(model和biz_content同時存在的狀況下取biz_content)。
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody("我是測試數據");
model.setSubject("App支付測試Java");
model.setOutTradeNo("6786785675674564");
model.setTimeoutExpress("30m");
model.setTotalAmount("0.01");
model.setProductCode("QUICK_MSECURITY_PAY");
alipay_request.setBizModel(model);
alipay_request.setNotifyUrl("商戶外網能夠訪問的異步地址");
try {
//這裏和普通的接口調用不一樣,使用的是sdkExecute
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(alipay_request);
String order = response.getBody();
System.out.println("訂單");
System.out.println(order);//就是orderString 能夠直接給客戶端請求,無需再作處理。
return new ReturnVO(order);
} catch (AlipayApiException e) {
e.printStackTrace();
}
return new ReturnVO(false);
4 mui端調用支付寶支付sdk配置及代碼 參考地址:http://ask.dcloud.net.cn/article/71
配置:
manifes.json增長服務器
"permissions": >>app
"Payment":{異步
"description": "支付寶支付"post
},測試
"plus">>"distribute">>
{"plugins":{"payment":{"alipay":{"description":"支付寶支付","scheme":""}}},
代碼:
mui.init({
swipeBack:true //啓用右滑關閉功能
});
//獲取支付通道
var channel=null;
function plusReady(){
// 獲取支付通道
plus.payment.getChannels(function(channels){
channel=channels[0];
},function(e){
alert("獲取支付通道失敗:"+e.message);
});
}
document.addEventListener('plusready',plusReady,false);
var ALIPAYSERVER='https://openapi.alipaydev.com/gateway.do?';
var WXPAYSERVER='http://demo.dcloud.net.cn/helloh5/payment/wxpay.php?total=';
var PAYSERVER='';
//發起支付請求
function pay(id){
// 從服務器請求支付訂單
if(id=='alipay'){
PAYSERVER=ALIPAYSERVER;
}else if(id=='wxpay'){
PAYSERVER=WXPAYSERVER;
}else{
plus.nativeUI.alert("不支持此支付通道!",null,"捐贈");
return;
}
var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(){
switch(xhr.readyState){
case 4:
if(xhr.status==200){
plus.payment.request(channel,xhr.responseText,function(result){
plus.nativeUI.alert("支付成功!",function(){
back();
});
},function(error){
plus.nativeUI.alert("支付失敗:" + error.code);
});
}else{
alert("獲取訂單信息失敗!");
}
break;
default:
break;
}
}
xhr.open('GET',PAYSERVER);
xhr.send();
}
//添加列表項的點擊事件
mui('.mui-input-group').on('tap',"#pay_sub", function(e) {
console.log(bathpath+'/zfb/pay');
$.getJSON({
url:bathpath+'/zfb/pay',
type: 'post',
data:{
orderId:'999999999',
orderName:'測試商品1',
ordreMoney:'0.01'
}
}).done(function (result) {
console.log(result.content);
ALIPAYSERVER=ALIPAYSERVER+result.content;
pay('alipay');
}).fail(function (e) {
console.error(e.statusText)
}).always(function () {
});
});