小程序支付java_小程序支付(小程序端+JAVA后端)

本文分享了电商小程序支付功能的开发经验,包括点击支付按钮后调用后台接口,JAVA后端调用微信统一下单接口生成预支付订单,小程序接收参数并唤起支付弹窗,以及支付完成后微信服务器对支付结果的回调处理。通过实例代码展示了小程序端和JAVA后端的关键步骤。
摘要由CSDN通过智能技术生成

最近做了一款简单的电商小程序,目前还没上线,不过支付功能已开发完,所以整理和大家分享下,有什么不对的地方,还请大家提出来,你的纠正是我最大的进步。

内容前提:建议请认真看一遍官方支付文档

先来一张图

AAffA0nNPuCLAAAAAElFTkSuQmCC

大体流程分析:

1.小程序:点击支付按钮,请求后台接口,返回5个必要参数(用于之后调wx.requestPayment(OBJECT))。

2.JAVA: 调用统一下单接口,生成微信预支付订单,并返回结果。

3.小程序:接收到5个参数后,调用wx.requestPayment(OBJECT),此时小程序唤起了输入密码的支付弹窗,我们可以选择关闭弹窗和支付,然后根据情况跳转到不同页面。

4.JAVA: 当在小程序内支付完后,此时微信服务器会有规律性给你的支付回调地址发起请求,通知你支付结果。

那么接下来我们详细看一下代码

小程序端代码

//点击支付按钮

async pay() {

if(!this.address){

wx.showToast({

title: "请选择收货地址", //提示的内容,

icon: "none", //图标,

duration: 1500, //延迟时间,

mask: false, //显示透明蒙层,防止触摸穿透,

});

}

if(this.listData.length == 0){

wx.showToast({

title: "未选择任何商品,请重新选择商品", //提示的内容,

icon: "none", //图标,

duration: 1500, //延迟时间,

mask: false, //显示透明蒙层,防止触摸穿透,

});

}

if(this.allprice <= 0){

wx.showToast({

title: "付款金额小于或等于0元,请重新选择商品进行支付", //提示的内容,

icon: "none", //图标,

duration: 1500, //延迟时间,

mask: false, //显示透明蒙层,防止触摸穿透,

});

}

const data = await post("/api/pay/onPay", {

openId: this.openId,

body:this.listData[0].goods_name,

address: JSON.stringify(this.address),

allPrice: this.allprice,

listData: JSON.stringify(this.listData)

});

if(data){

if(data.model.orderId != 0){

this.payMent = data.model;

console.log(data);

//返回成功,小程序端可直接唤起输入密码弹窗

this.doWxPay(data.model);

}else{

wx.showToast({

title: "系统订单生成异常,请稍后重试或联系管理员", //提示的内容,

icon: "none", //图标,

duration: 1500, //延迟时间,

mask: false, //显示透明蒙层,防止触摸穿透,

});

}

}

},

//唤起输入密码弹窗

doWxPay: function(param){

var that = this;

//小程序发起微信支付

console.log("发起支付")

wx.requestPayment({

timeStamp: param.timeStamp,

nonceStr: param.nonceStr,

package: param.package,

signType: 'MD5',

paySign: param.paySign,

success: function (event) {

// success

console.log(event);

wx.showToast({

title: '支付成功',

icon: 'success',

duration: 2000

});

wx.redirectTo({

url: '/pages/orderdetail/main?orderId=' + that.payMent.orderId

})

},

fail: function (error) {

// fail

console.log("支付失败")

console.log(error)

wx.redirectTo({

url: '/pages/orderdetail/main?orderId=' + that.payMent.orderId

});

},

complete: function () {

// complete

console.log("pay complete")

}

});

},

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值