mui 支付寶App接口 支付功能

一個上午就搞定了,先後端基本上都是現成的,搞明白怎麼回事就容易了.html

 

js代碼java

 

 

mui.init({
swipeBack: true //啓用右滑關閉功能
});web

var price; //總支付金額
var dingdan = {}; //訂單對象
var wxChannel = null; //微信支付
var aliChannel = null; //支付寶支付
var channel = null; //支付通道spring

var ALIPAYSERVER = 'http://192.168.2.202:8080/drug_source/mhkyzfby'; //支付寶支付接口
var WXPAYSERVER = ''; //微信支付接口
mui.plusReady(function() {
var self = plus.webview.currentWebview();
price = self.price;
$id('price').innerText = price;json

// 獲取支付通道
plus.payment.getChannels(function(channels) {
alert(channels[0].id);
for(var i in channels) {
if(channels[i].id == "wxpay") {
wxChannel = channels[i];
} else {
aliChannel = channels[i];
}
}
}, function(e) {
alert("獲取支付通道失敗:" + e.message);
});後端

})api

$id('payment').addEventListener('tap', function() {服務器

var zf = document.getElementsByClassName('zf');
for(var i = 0; i < zf.length; i++) {
if(zf[i].classList.contains('mui-selected') == true) {
if(i == 0) {
var btnArray = ['否', '是'];
mui.confirm('您確認要支付嗎嗎', '點貨通', btnArray, function(e) {
if(e.index == 1) {
pay('alipay');
} else if(e.index == 0) {
mui.alert('請從新選擇支付方式');
}
})
} else {
var btnArray = ['否', '是'];
mui.confirm('您確認要支付嗎嗎', '點貨通', btnArray, function(e) {
if(e.index == 1) {
pay('wxpay');
} else if(e.index == 0) {
mui.alert('請從新選擇支付方式');
}
})
}微信

}
}app

})

function pay(id) {
var PAYSERVER = '';

if(id == 'alipay') {
PATSWEVER = ALIPAYSERVER;
channel = aliChannel;
} else if(id == 'wxpay') {
PATSWEVER = WXPAYSERVER;
channel = wxChannel;
} else {
plus.nativeUI.alert("不支持此支付!");
return;
}
var xhr = new XMLHttpRequest(); //http請求對象
var amount = price; //支付金額
//請求事件onreadystatechange 存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。
//readyState 存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。
//0: 請求未初始化
//1: 服務器鏈接已創建
//2: 請求已接收
//3: 請求處理中
//4: 請求已完成,且響應已就緒
xhr.onreadystatechange = function() {
switch(xhr.readyState) {
case 4:
if(xhr.status == 200) {

//channel 支付寶支付通道對象

//xhr.responseText//向後端請求的支付字符串
plus.payment.request(channel, xhr.responseText, function(result) {
plus.nativeUI.alert("支付成功", function() {
back();
})
}, function(error) {
plus.nativeUI.alert("支付失敗", error.code);
})
}

}
}

//發送get請求
xhr.open('GET', PAYSERVER + price);
xhr.send();

}

 

而後是spring MVC 支付寶公共參數申請就不在解釋了

 

 

@Controller
public class AlipayConfig {

// 合做身份者ID,簽約帳號,以2088開頭由16位純數字組成的字符串,查看地址:https://openhome.alipay.com/platform/keyManage.htm?keyType=partner
public static String partner = "***";

// 商戶的私鑰,須要PKCS8格式,RSA公私鑰生成:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.nBDxfy&treeId=58&articleId=103242&docType=1
public static String private_key="***" ;

// 支付寶的公鑰,查看地址:https://openhome.alipay.com/platform/keyManage.htm?keyType=partner
public static String alipay_public_key = "***";

// 調試用,建立TXT日誌文件夾路徑,見AlipayCore.java類中的logResult(String sWord)打印方法。
public static String server_uri = "https://openapi.alipay.com/gateway.do";

// 字符編碼格式 目前支持 gbk 或 utf-8
public static String input_charset = "utf-8";

// 接收通知的接口名
// public static String service = "http://60.***.***.00/callbacks.do";
// public static String service = "mobile.securitypay.pay";

// APPID
public static String app_id = "***";

// ↑↑↑↑↑↑↑↑↑↑請在這裏配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
@RequestMapping(value = "/mhkyzfy", produces = "text/html;charset=UTF-8", method = { RequestMethod.GET })
public @ResponseBody
String get_Yhming(HttpServletRequest req, HttpServletResponse resp) {
// 實例化客戶端
AlipayClient alipayClient = new DefaultAlipayClient(
"https://openapi.alipay.com/gateway.do", app_id, private_key,
"json", input_charset, alipay_public_key, "RSA2");
// 實例化具體API對應的request類,類名稱和接口名稱對應,當前調用接口名稱:alipay.trade.app.pay
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
// SDK已經封裝掉了公共參數,這裏只須要傳入業務參數。如下方法爲sdk的model入參方式(model和biz_content同時存在的狀況下取biz_content)。
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();

// 對一筆交易的具體描述信息
model.setBody("我是測試數據");
// 商品的標題/交易標題/
model.setSubject("App支付測試Java");
// 商戶網站惟一訂單號
model.setOutTradeNo("001");
// 該筆訂單容許的最晚付款時間,逾期將關閉交易。
model.setTimeoutExpress("30m");
// 訂單總金額,單位爲元
model.setTotalAmount("0.01");
// 銷售產品碼,商家和支付寶簽約的產品碼,爲固定值QUICK_MSECURITY_PAY
model.setProductCode("QUICK_MSECURITY_PAY");

request.setBizModel(model); request.setNotifyUrl("商戶外網能夠訪問的異步地址"); String orderInfo = null; try { // 這裏和普通的接口調用不一樣,使用的是sdkExecute AlipayTradeAppPayResponse response = alipayClient .sdkExecute(request); orderInfo = response.getBody(); System.out.println(response.getBody());// 就是orderString // 能夠直接給客戶端請求,無需再作處理。 } catch (AlipayApiException e) { e.printStackTrace(); } return orderInfo; }}

相關文章
相關標籤/搜索