利用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. js实现敲回车键登录

    任何一个网站页面都有登陆界面,很多时候在输入好用户名和密码后,还要用鼠标去点一个类似于登陆什么的按钮或者链接.这样你才能进网站做你喜欢做的事情. 有时候我就在想是不是能在输入好我该输入的东西后,直接敲 ...

  2. Spring Boot 监听 Activemq 中的特定 topic ,并将数据通过 RabbitMq 发布出去

    1.Spring Boot 和 ActiveMQ .RabbitMQ 简介 最近因为公司的项目需要用到 Spring Boot , 所以自学了一下, 发现它与 Spring 相比,最大的优点就是减少了 ...

  3. 蓝松短视频SDK支持AE模板, 可做类似微商视频, 小柿饼的效果等

    AE模板: 是指设计师用Adobe After Effect做好各种视频动画,比如炫酷视频,文艺/搞笑的场景,相册效果等,根据我们的指导文件导出.蓝松SDK会解析导出的文件,自动还原成AE设计时的动画 ...

  4. JS多线程WebWorker

    JS多线程WebWorker 一,介绍与需求 1.1,介绍 Web Worker可以为JavaScript创建多线程,且Web Worker 是运行在后台的 JavaScript,独立于其他脚本,不会 ...

  5. 基于vue-cli、elementUI的Vue超简单入门小例子

    - 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. - 开始写例子之前,先对环境的部署做点简单的介绍,其实和Vue官方的差不多. #如若没有安装过vu ...

  6. Chrome浏览器启动报错:应用程序无法启动,因为应用程序的并行配置不正确。

    因为国庆节了,难得关一次机(可能搞IT的习惯吧),结果给祖国庆祝完70寿辰之后归来,启动电脑,就打不开Chrome浏览器了,报错如下: 应用程序无法启动,因为应用程序的并行配置不正确.有关详细信息,请 ...

  7. Docker 第一个HelloWorld镜像

    Docker 创建第一个HelloWorld镜像: 创建Dockerfile FROM alpine CMD "echo" "Hello World!" 通过D ...

  8. Windows10+YOLOv3实现检测自己的数据集(1)——制作自己的数据集

    本文将从以下三个方面介绍如何制作自己的数据集 数据标注 数据扩增 将数据转化为COCO的json格式 参考资料 一.数据标注 在深度学习的目标检测任务中,首先要使用训练集进行模型训练.训练的数据集好坏 ...

  9. 一次Commons-HttpClient的BindException排查

    线上有个老应用,在流量增长的时候,HttpClient抛出了BindException.部分的StackTrace信息如下: java.net.BindException: Address alrea ...

  10. 【Medium 万赞好文】ViewModel 和 LIveData:模式 + 反模式

    原文作者: Jose Alcérreca 原文地址: ViewModels and LiveData: Patterns + AntiPatterns 译者:秉心说 View 和 ViewModel ...