reactjs+golang 的微信内浏览器支付场景

本文档详细介绍了使用ReactJS和Golang在微信内实现H5支付的过程,包括微信网页开发配置、JSSDK配置、微信商户后台设置等关键步骤,并分享了在授权、JSSDK配置中遇到的坑及解决方法。通过前后端配合,成功完成微信支付功能。相比于微信支付的复杂性,作者认为支付宝的集成相对简单。
摘要由CSDN通过智能技术生成

在这里插入图片描述
最近在做支付充值这一块,用的微信支付,发现坑点真不少。由于无golang的sdk于是拿着github上的别人写好的改了改,最终也还是圆满完成了支付这一块。

主要场景:微信支付-H5-微信内发起支付

主要内容:微信网页开发>jssdk>微信商户

开发语言:reactjs+golang

大概的主体思路如下每一步的操作都很重要
微信网页开发配置:
1、在微信后台配置域名(目的:获取openid)
2、jssdk域名的配置(目的:前端请求的配置)
3、商户后台的域名配置(目的:支付的配置)

主要配置就以上这些(应该没遗漏)
主要文档:网页授权的文档,jssdk wxconfig wxpay的文档,微信商户支付文档

坑1、微信授权 redrect_uri错误(此处偷懒可以用别人的):自己写则仔细检查各种参数以及微信后台的配置即可,总会成功的
示例授权代码:

package controllers

import (
	"net/url"

	"charge/models"

	"github.com/astaxie/beego"
	mpoauth2 "gopkg.in/chanxuehong/wechat.v2/mp/oauth2"
	oauth "gopkg.in/chanxuehong/wechat.v2/oauth2"
	"gopkg.in/chanxuehong/wechat.v2/open/oauth2"
)

type Common struct {
	beego.Controller
	UserID uint
}


type WebController struct {
	Common
}

func (this *WebController) Prepare() {
	if !UserInterceptor(&this.Common) {
		WechatLogin(&this.Common)
	}
}

var oauth2Endpoint oauth.Endpoint = mpoauth2.NewEndpoint(Appid, AppSecret)

func WechatLogin(this *Common) {

	code := this.GetString("code")

	//第一次请求进来时候
	if code == "" {
		this.GoAuth()
		this.StopRun()
		return
	}
	client := oauth.Client{Endpoint: oauth2Endpoint}

	if token, err := client.ExchangeToken(code); err != nil {
		beego.Warning("exchange token error:", err)
		this.GoAuth()
		this.StopRun()
		return
	} else {
		if info, err := oauth2.GetUserInfo(token.AccessToken, token.OpenId, "", nil); err != nil {
			beego.Warning("get userinfo error:", err)
			this.GoAuth()
			this.StopRun()
			return
		} else {
			//保存用户信息到数据库
			var user models.User
			if models.DB.Where("openid =?", info.OpenId).First(&user).RecordNotFound() {

				user.Openid = info.OpenId
				user.Nickname = info.Nickname
				if err := models.DB.Create(&user).Error; err != nil {
					beego.Error("update user error:", err)
					this.StopRun()
					return
				}
				this.UserID = user.ID
				this.SetSession("userinfo", user)
			} else {
				if err := models.DB.Model(&user).Updates(map[string]interf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值