利用mui 发起手机微信和支付宝支付


payStatement :调起微信支付接口的参数

参考文档: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2


  /**
* 支付
* @param {Object} payType 支付类型
* @param {Object} payStatement 调起支付宝或微信的statment支付订单信息
*/
paywx(payType, payStatement) { /***判断支付通道****/
//最终的支付通道
var channel;
/***
* 用于标识支付通道:
* "alipay" - 表示支付宝;
* "wxpay" - 表示微信支付;
*/
var payId; //支付标识
if(payType == "ALIPAY_ANDROID") {
payId = "alipay";
} else {
payId = "wxpay";
} // 取出支付宝和微信的支付通道
plus.payment.getChannels(function(channels) {
mui.each(channels, function(index, element) {
if(element.id == payId) {
channel = element;
}
});
if(!channel) {
mui.toast('获取支付通道失败,请重试!');
}
setTimeout(function() {
mui.confirm('支付已完成', '提示', ['支付遇到问题', '支付完成'], function(e) {
if(e.index == 1) {
app.tokenAjax_Get({
url: API_URL_GET_ORDER_STATUS + dataSource.orderId,
success: function(result) {
if(result.status == 1) {
var status = result.data;
if(status == "JUST_CREATED") {
mui.toast('订单未支付');
} else if(status == 'CANCEL') {
mui.toast('订单已被取消');
//清除定时器
clearInterval(timer);
//打开
plus.webview.currentWebview().close();
plus.webview.getWebviewById("pay").close();
plus.webview.getWebviewById("order").close();
} else {
//清除定时器
clearInterval(timer);
//打开
app.openRefreshOrderListPage();
}
}
},
error: function(xhr) {
app.httpError(xhr.status);
}
});
}
}, 'div')
}, 3000);
//发起支付
plus.payment.request(channel, payStatement, function(result) {
mui.toast('支付完成');
/**
*查询订单状态是否已支付
* 轮询查询订单状态
*
*/
var timer1 = setInterval(function() {
app.tokenAjax_Get({
url: API_URL_GET_ORDER_STATUS + dataSource.orderId,
success: function(result) {
if(result.status == 1) {
var status = result.data;
if(status == "JUST_CREATED") {
mui.toast('订单未支付');
} else if(status == 'CANCEL') {
mui.toast('订单已被取消');
//清除定时器
clearInterval(timer);
clearInterval(timer1)
//打开
plus.webview.currentWebview().close();
plus.webview.getWebviewById("pay").close();
plus.webview.getWebviewById("order").close();
} else {
//清除定时器
clearInterval(timer);
clearInterval(timer1)
//打开
app.openRefreshOrderListPage();
}
}
},
error: function(xhr) {
app.httpError(xhr.status);
}
});
}, 1000); }, function(error) {
console.log(JSON.stringify(error));
mui.toast("支付失败");
}); }, function(e) {
mui.toast("获取支付通道列表失败:" + e.message);
}); }

更多错误信息请参考支付(Payment)规范文档:http://www.html5plus.org/#specification#/specification/Payment.html

注意: (  微信支付提示{"code":-100,"message":"[payment微信:-1]General errors"}  )

  • 微信支付安卓不支持真机调试
  • 需要打包到手机测试, 打包测试需要使用自己的私有证书打包apk

Mui 微信支付、支付宝支付的更多相关文章

  1. MUI 微信 和支付宝支付 (前台代码)

    <!-- 校园公告详情界面 用于显示校园公告的详情信息 在校园公告界面点击某一条目后 进入本界面查看详情 --> <!DOCTYPE html> <html> &l ...

  2. 微信和支付宝支付模式详解及实现(.Net标准库)- OSS开源系列

    支付基本上是很多产品都必须的一个模块,大家最熟悉的应该就是微信和支付宝支付了,不过更多的可能还是停留在直接sdk的调用上,甚至和业务系统高度耦合,网上也存在各种解决方案,但大多形式各异,东拼西凑而成. ...

  3. 微信和支付宝支付模式详解及实现(.Net标准库)

    支付基本上是很多产品都必须的一个模块,大家最熟悉的应该就是微信和支付宝支付了,不过更多的可能还是停留在直接sdk的调用上,甚至和业务系统高度耦合,网上也存在各种解决方案,但大多形式各异,东拼西凑而成. ...

  4. Android H5调起原生微信或支付宝支付

    Android H5调起原生微信或支付宝支付 WebView调用原生微信或支付宝回调:其原理就是在shouldOverrideUrlLoading(final WebView view, String ...

  5. iOS不用官方SDK实现微信和支付宝支付XHPayKit

    作者:朱晓辉Allen 链接:https://juejin.im/post/5a90dd3a6fb9a0634912b755 前言 前段时间由于项目需求,移除了项目中的微信支付SDK和支付宝支付SDK ...

  6. Android 微信支付&支付宝支付

    由于项目需求,加入这2个功能记录一些需要注意的地方 一.微信支付 微信支付在2016年4月份左右稍微调整了一下支付过程,但是文档却没怎么更新,这也是百度上为什么那么多开发者都说微信是个大坑. 身为一个 ...

  7. Android支付——支付宝支付总结

    摘要:分享牛系列.分享牛转载.第三方支付,java第三方支付.android第三方支付. 原文地址:http://blog.csdn.net/zwl5670/article/details/51219 ...

  8. 微信端支付宝支付,iframe改造,解决微信中无法使用支付宝付款和弹出“长按地址在浏览器中打开”

    微信对支付宝的链接屏蔽了, https://mapi.alipay.com/gateway.do?_input_charset=utf-8&notify_url=http%3A%2F%2Fzh ...

  9. 微信公众号中的支付宝支付与微信支付 && 支付宝支付问题(微信bug)

    一般,在微信公众号中的商城都是需要支持微信支付和支付宝支付的,当然,较大的公司对于鹅厂和阿里的站队就不说了,所以这里简单记录一下支付宝支付和微信支付的主要流程.说是简单介绍,这是因为确实不难,因为前端 ...

  10. iOS三方支付--微信支付/支付宝支付

    一.微信支付 1.注册账号并申请app支付功能 公司需要到微信开放品台进行申请app支付功能 , 获得appid和微信支付商户号(mch_id)和API秘钥(key) . Appsecret(secr ...

随机推荐

  1. mybatis 启用延迟加载和按需加载配置

    启用延迟加载和按需加载 Mybatis配置文件中通过两个属性lazyLoadingEnabled和aggressiveLazyLoading来控制延迟加载和按需加载. lazyLoadingEnabl ...

  2. WebGL简易教程(七):绘制一个矩形体

    目录 1. 概述 2. 示例 2.1. 顶点索引绘制 2.2. MVP矩阵设置 2.2.1. 模型矩阵 2.2.2. 投影矩阵 2.2.3. 视图矩阵 2.2.4. MVP矩阵 3. 结果 4. 参考 ...

  3. 手动模拟JDK动态代理

    为哪些方法代理? 实现自己动态代理,首先需要关注的点就是,代理对象需要为哪些方法代理? 原生JDK的动态代理的实现是往上抽象出一层接口,让目标对象和代理对象都实现这个接口,怎么把接口的信息告诉jdk原 ...

  4. MongoDB 学习笔记之 分片和副本集混合运用

     分片和副本集混合运用: 基本架构图: 搭建详细配置: 3个shard + 3个replicat set + 3个configserver + 3个Mongos shardrsname Primary ...

  5. MongoDB 学习笔记之 MongoDB导入导出

    MongoDB数据导入导出: mongoexport: -host 机器 -port 端口 -u 用户名 -p 密码 -d 库名 -c 表名 -f 列名 -o 导出的文件名 -q 查询条件 --csv ...

  6. 【SQL】sql统计不同类别的不同状态的数目

    例子:某主机下有5149个设备,设备分不同类别,设备运行会有不同状态(1-正常.2-告警.3-故障.0-离线) sql: SELECT t.DEVICE_TYPE_NAME,SUM(CASE t.DE ...

  7. 重构网页过程中的小tips

    1.display为inline-block的元素可以使用virtical-align:middle来使得元素垂直居中对齐 2.在一些按钮标签或者mark标签中,如果文本内容确定不会改变长度的话,可以 ...

  8. 洛谷 P3745 [六省联考2017]期末考试

    题目描述 有 nnn 位同学,每位同学都参加了全部的 mmm 门课程的期末考试,都在焦急的等待成绩的公布. 第 iii 位同学希望在第 tit_iti​ 天或之前得知所有课程的成绩.如果在第 tit_ ...

  9. Pycharm(Mac版)快捷键操作篇

    Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ...

  10. GUI tkinter (Canvas)绘图篇

    from tkinter import * root = Tk()root.title("中国象棋棋盘手绘") can = Canvas(root,width = 400, hei ...