我们直接进入主题吧,先说功能:

1、用户通过我们的页面输入充值帐号和金额调起支付(微信或者支付宝),支付成功返回获取支付结果。

2、微信支付成功后重定向到指定页面(没有设置重定向地址的话,默认返回调起支付的页面,支付宝同理)。

3、支付宝支付成功后重定向到指定页面。

4、重定向地址带参数返回。

5、支付成功后,回到页面开始进行轮询,获取支付成功的结果后结束轮询。

下面是我的支付页面结构图:pay.html

至于调起支付的接口需要传什么参数,你们要和后台的哥们沟通好。

请求成功后,微信返回的是一个超链接,如图:

支付宝返回的是一个表单,如图:

这里就已经在后台生成订单号了,也就是已经存在该订单了,接下来是去支付,代码附上:

if ('选择微信支付') {
// 微信返回的是超链接 https
// 我这里使用redirect_url来让支付成功后重定向回指定页面,并且后面带了参数,参数为订单ID和用户ID和充值金额。
let return_url = `${payChannelData.payInfo}&redirect_url=${returnAdreess}?userInfomation=${cpOrderId}|${userId}|${money}`;
location.href = return_url;
} else if ('选择支付宝支付') {
// 支付宝返回是个表单 <form>
let divForm = document.getElementsByTagName('divform');
if (divForm.length) {
document.body.removeChild(divForm[0]);
}
const div = document.createElement('divform');
div.innerHTML = payChannelData;
document.body.appendChild(div); if (!payTools.isIOS) {
// ios手机可以直接调起支付,安卓需要执行以下代码。
document.forms[0].setAttribute('target', '_blank'); // 新开窗口跳转
}
document.forms[0].submit();
}

至此,整个支付流程就完成了。

补充一下,细心的人应该发现了我上面只讲到微信的回调地址,而没有支付宝的回调地址。

支付宝的回调地址的配置需要和后端协调好,让他在发起订单的接口增加一个字段 returnUrl(名字你们自己协调),然后把回调地址传给后台就可以了。

微信的回调地址配置,其实官网是有说明的:

微信支付传送门:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4

开发中遇到的问题:

官方给出的答复是:

版权声明:本文为博主原创文章,转载需注明出处。https://www.cnblogs.com/silent007/p/12878342.html

***********************************    END   ***********************************

最新文章

  1. 手动导入swift三方danielgindi/Charts到OC工程中教程
  2. Spring事务管理的三种方式
  3. iptables原理详解(一)
  4. 关于context你必须知道的一切
  5. Android SDK镜像的介绍使用
  6. [XJOI NOI02015训练题7] B 线线线 【二分】
  7. MVC Model 数据注解与验证
  8. Building bridges_hdu_4584(排序).java
  9. centos 6.5 hadoop 2.3 初配置
  10. tabBarItem动画
  11. Entity Framework 查漏补缺 (一)
  12. ABP core学习之二 IIS部署.NET CORE
  13. Hive窗口函数
  14. Alpha冲刺(5/10)——2019.4.28
  15. MySQL学习(六)
  16. MVC中的一些不同之处(WebForm)
  17. 解决在sass中使用calc不能包含变量的问题。
  18. egret 开发总结
  19. IEnumerable 与 Iqueryable 的区别
  20. 对Java 静态代码块的一些了解

热门文章

  1. css 样式中 margin padding和top类定位的区别
  2. vue-cli目录结构分析
  3. C#开发BIMFACE系列32 服务端API之模型对比3:批量获取模型对比状态
  4. 【转】动态规划之最长公共子序列(LCS)
  5. 分析 Nanocore
  6. 编程语言千千万,为什么学习Python的占一半?
  7. Linux系统防火墙相关操作
  8. &lt;algorithm&gt;中常用函数
  9. swoole--服务平滑重启
  10. Nagios基本搭建