导航:首页 > 软件知识 > 小程序支付页面如何实现

小程序支付页面如何实现

发布时间:2022-12-16 09:57:21

① H5在微信小程序及公众号中的支付

为了解决在公众号支付和在小程序中支付问题,写了个js工具文件,根据当前环境执行不同的支付方法(以小程序支付流程为主)

在小程序支付中,需要注意两个地方,第一是由于package='prepay_id=XXX'传到小程序时会导致数据接收不完全,所以就只传XXX,‘prepay_id=’由小程序那边拼接上了;第二点是‘/pages/Pay/Pay’是与小程序约定的处理支付功能的页面,需要对应着。

在需要调用的文件用引入【import {payTool} from './PayTool.js';】,并在获取订单信息后,传入订单信息,发起支付流程【payTool(payParam);】

在小程序中获取订单信息

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7

根据微信小程序支付说明文档使用接收的参数调取支付功能

2020.12.24补充

刚学到还有个qs可以用,,,

1、npm install qs

2、var qs = require('qs')

3、不需要对package进行修改,直接传参即可。 小程序那边也不需要再处理了

② 微信小程序支付API

2019年12月26日

文档:

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7

一.一般要开发的两个接口

1.统一下单

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1

2.申请退款

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_4

3.签名规则

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3

二.小程序支付时序图

关键就是wx.requestPayment(object)

2.ps商户系统和微信支付系统主要交互:

1、小程序内调用登录接口,获取到用户的openid,api参见公共api【 小程序登录API 】

2、商户server调用支付统一下单,api参见公共api【 统一下单API 】

3、商户server调用再次签名,api参见公共api【 再次签名 】

4、商户server接收支付通知,api参见公共api【 支付结果通知API 】

5、商户server查询支付结果,api参见公共api【 查询订单API 】

三.微信小程序支付实现步骤

1.获取登录凭证code 并传给后端服务器

2.后端服务器请求微信服务器获取openid和session_key,并将openid返回给小程序

3.小程序客服端发起支付请求给后端服务器 (带上openid参数)

4.后端服务器接收到openId后,调用微信支付统一下单接口(后端调用的,用来给小程序获取支付参数)

5.拿到后端服务器返回的5个参数后,调用最终支付接口wx.requestPayment

6.微信服务器进行支付成功后,通知后端服务器。

③ 微信小程序怎么开发微信的支付功能

您好!很高兴能为您解答, 1、申请微信支付。小程序认证以后,可以在小程序后台,微信支付菜单栏,申请微信支付。填写企业信息和对公账户,微信支付会打一笔随机金额到对公账户,输入金额完成验证后,在线签署迁移,即完成了微信支付的申请流程。
微信支付申请完,会发送微信支付商户号,商户平台用户名密码等信息到注册者邮箱。

2、配置小程序密钥。小程序后台设置页,点击生成,管理员验证二维码后,会随机生成AppSecret。请妥善保管好Appsecret,不要明文存储于服务器,AppSecret用于和微信服务器交互。比如获取用户的openid接口就需要用到.

3、设置密钥和下载证书
用申请微信支付获得的用户名和密码,登录商户平台 ,在账户中心,API安全中下载证书和设置密钥。
密钥是32位,设置以后需要妥善保管,因为无法查看密钥,所有微信支付相关的接口都会使用这个密钥加密。

4、配置HTTPS服务器 小程序的前端是使用微信提供的框架开发,但是后台依然是开发者自己的服务器。小程序发起的是HTTPS请求,意味着小程序开发者必须配置HTTPS服务器。配置HTTPS服务器之前,先要获取证书,证书可以向相关机构购买,腾讯云目前可以向用户提供免费的证书

5、微信支付流程
微信支付有多种支付方式,包括刷卡支付,公众号支付,扫码支付,APP支付,所有微信支付的接口都可以到官方找到。小程序是在微信里调起支付的,其实是公众号支付

④ 在微信小程序中如何实现支付及退款

1.前提:要以公司的以身份去注册一个小程序,才有微信支付权限;绑定商户号;在小程序填写合法域(支付域名)
二、完成以上条件,你可以得到
“小程序appid 小程序秘钥 ” 这两个用于获取用户openid;
商户号id ,商户号秘钥 支付接口必须的;
支付。第一步 调取微信接口获得统一下单号 就是告诉微信我要收openId为XX的人多少钱
第二步换算签名(参考文档) 第三部 前端 开启支付 回调用户是否支付 前端支付了 提示用户支付成功(此时不一定支付成功了) 第4部 后台回调地址接受到微信支付成功的XML 成功了 执行你的逻辑
退款需要支付证书 开通商户自己下载 直接调取API搞就完事

⑤ 小程序支付怎么改成web支付

步骤如下:
1,定义web显示h5页面。2,定义h5页面,因为是本地链接,所以需要到开发者工具里把不检验合格域名这一栏勾选上。3,编写h5代码,要与小程序保持页面一致。4,编写小程序支付页。
到这里我们就完整的实现了小程序we展示h5页面,并且做到了h5和小程序的交互,实现了小程序web的支付功能。

⑥ 微信小程序怎么内嵌网页实现支付

内嵌网页中可使用JSSDK 1.3.0提供的接口,可坑就来了,居然不支持支付接口的调用,经过一番研究,总算打通了两边的交互。

大概流程

1、先说明涉及到的文件,下面会用到

1.1 app.js:小程序的app.js文件,在globalData里定义一个全局变量paySuccessUrl: '',用来保存支付成功跳转url
1.2 wxminiwebview.js:小程序中放web-view的界面 1.3 wxminipay.js:小程序原生支付界面
1.4 web_pay.vue:内嵌网页会调起支付的路由组件界面,由于我是用vue+vue-router写的,所以你最好了解下vue和vue-router,记得引入微信jssdk1.3.0,最新版本才包含小程序相对应方法。很遗憾,微信并没提供npm包,github有人提供的commonjs引入方式的微信jssdk版本也只有1.2.0,所以就只能这样引入了。

<script src="./static/jweixin-1.3.0.js">script>

2、首先我们像官网那样正常嵌入一个内嵌网页,url是wxmini_webview.js中data中定义的变量,webview加载的就是网页就是这个url。

<web-view src="{{url}}">web-view>

3、在内嵌网页web_pay.vue里判断当前是否是微信环境。

window.wx.ready(function () {
isWxMini = window.__wxjs_environment === 'miniprogram'
})

4、在内嵌网页web_pay.vue调用支付时把支付金额,支付说明,支付成功跳转url...(任何你想要的参数,记得encodeURIComponent),传给小程序原生页面。

if (isWxMini) {
let jumpUrl = encodeURIComponent(window.location)
let path = `/page/pay/pay?amount=${amount}&title=${desc}&jumpUrl=${jumpUrl}`
window.wx.miniProgram.navigateTo({
url: path
})
}

5、在小程序支付界面wxmini_pay.js里获取到内嵌网页传过来的值,这里演示方便,实际上是在page的data里存储这些会显示在界面的值好些。

onLoad: function (options) {
console.log(options)
// 获取网页传过来的值
// TODO 用es6解构来获取值TODO
jumpUrl = options.jumpUrl
amount = options.amount
title = options.title
...
},

6、支付成功后,把跳转url附带支付结果及当前时间保存到全局变量。

paySuccess () {
let currentTime = new Date().getTime()
//这是为了防止wxmini_webview.js文件里调用setData由于前后两个url一致导致路由不触发刷新的bug
jumpUrl = options.jumpUrl+encodeURIComponent(`?payResult=1&time=${currentTime}`)
//payResult=1表示支付成功,这里我偷懒了直接在url后面补?,实际情况比较复杂
//为了实现支付成功返回后的无刷新加载,这里的参数应该是属于路由web_pay.vue的,而不是属于window.location.search的
//所以要判断路由锚点#的位置和是否已经有路由参数(如果是vue-router的history模式我没用过,应该和window.location一样吧)
getApp().globalData.paySuccessUrl=jumpUrl //保存跳转url到小程序全局变量里
wx.navigateBack() //返回会上个页面,也就是承载网页的容器页面wxmini_pay.js
}

7、回到小程序wxmini_webview.js,会触发onshow,在里面进行界面无刷新加载。

onShow: function () {
console.log('on show')
let paySuccessUrl = getApp().globalData.paySuccessUrl
getApp().globalData.paySuccessUrl="" //清空支付成功url,防止一些操作触发onShow事件
if (paySuccessUrl) {
let url = decodeURIComponent(paySuccessUrl)
this.setData({
//这里在次说明下步骤6中的&time=${currentTime},就是因为不加这个当你第一次支付成功回来这里
//这个url跟你第二次支付成功回来这里是一样的,会导致第二次支付开始,这里的setData方法失效
url
})
}
},

8、步骤7中的setData会触发webview中的网页加载,由于我采用的是vue-router,而且前后两个url只有路由的参数query不一样,所以并不会触发界面刷新,也不会触发路由的重新加载,而是只会触发beforeRouteUpdate 这个方法,举个例子,现在支付前界面是https://host/#/pay,然后支付成功后跳转https://host/?payResult=1&time=123456#/pay,此时界面不会刷新,pay路由也不会重新加载,而是触发beforeRouteUpdate (to, from, next),你要做的只是在这里界面解析to.query里的数据,然后该干嘛干嘛

beforeRouteUpdate (to, from, next) {
console.log('路由发生改变,很有可能是小程序的支付成功回调')
let payResult = to.query.payResult
if (payResult) { // 小程序支付成功
if (payResult === '1') {
console.log('支付成功,下班打卡走人')
}
}
next()
},

⑦ 个人注册的微信小程序如何实现微信支付,是通过第三方平台还是通过别的途径求详细说明

注册微信程序关联微信支付就可以,都是通过微信平台支付,现在三大支付平台就是微信,支付宝,云闪付

⑧ 商家小程序获取信息后支付不了收获地址的支付功能

商家小程序获取信息后支付不了收获地址的支付功能这样处理:
1、确认小程序已经申请开通支付功能且开通或绑定商户号。
2、确认用户的openid和appid是对应的。
3、支付回调需要再次签名验证。
4、小程序通过wx.requestPayment来调起微信支付,在success方法里可以实现支付成功后页面自定义跳转。

阅读全文

与小程序支付页面如何实现相关的资料

热点内容
拼多多产品驳回怎么办 浏览:310
舟山水产干品交易区怎么样 浏览:357
高安货车提档二手交易税是多少 浏览:114
农民工去菜市场买什么下酒菜 浏览:288
济南黄冈卫浴市场在哪个位置 浏览:835
数据库坐标怎么做 浏览:274
怎么样开发电商产品 浏览:664
安卓怎么退后台程序 浏览:170
康佳电视程序板换多少钱 浏览:941
百消丹药业有什么产品 浏览:241
太仓网络程序销售费用是多少 浏览:456
fab如何提炼产品 浏览:86
安装工程施工技术有哪些 浏览:39
生产技术储备干部是干什么的 浏览:514
如何判断数据有趋势 浏览:32
清洗一台空调的市场价多少 浏览:596
错误设置了代理如何修复 浏览:482
理财产品净值是怎么确定的 浏览:294
网络共享的数据删除了怎么撤回 浏览:641
mysqldata数据怎么恢复 浏览:539