新闻资讯

首页 > 新闻资讯 > 正文内容

从零开始对接微信支付

码支付5个月前 (11-20)新闻资讯67
前言

微信支付业务,针对小程序、微信浏览器和非微信浏览器中的网页的三种场景,我们可以分别通过官方提供的小程序支付、JSAPI支付、H5支付来开发。

准备工作

开通微信商户号、微信公众号然后按照步骤准备一堆资料审核,然后设置相关配置。

所以最好提前准备资料审核以免耽误开发进度。

配置的步骤:官方文档,直接按照官方文档配置就行了。

需要特别注意的是配置商户号的支付授权目录和公众号的授权域名必须一致,不然会调起支付失败的!

参考资料:JSAPI支付配置文档H5支付配置文档小程序支付JS-SDK

H5支付开发流程

请求创建订单接口拿到订单数据(orderId,订单号,支付金额)

带orderId请求支付接口,获得mweb_url

跳转到微信支付中间页mweb_url,然后自动调用微信支付

支付成功后跳转到配置的返回页(请求支付时携带的参数redirectUrl)

参考文档

实现代码

伪代码?

asyncwxPayByH5(){//商品信息letgoodsList={goodsId:1};letparams={goodsList:goodsList,}//1.创建订单letdata=awaitcreateOrder(params);//获得订单id:orderId;订单总金额:orderTotalPrice;订单号:orderNolet{orderId,orderTotalPrice,orderNo}=data;letparamsPay={orderId,//redirectUrl:支付完成后返回的页面redirectUrl:`${}/orderList`};//2.请求支付let{mweb_url}=awaitwxPay(params);//3.跳转微信支付中间(mweb_url);},注意事项

商户号的支付授权目录和公众号的授权域名必须一致

需对redirect_url进行urlencode处理(让后端处理吧?)

调试需在线上环境(需要部署到公网服务器并映射到公众号配置的安全域名)

H5支付只能在非微信浏览器中调起,JSAPI支付是在微信浏览器环境调起的

JSAPI支付开发流程

请求创建订单接口拿到订单数据(订单id,订单号,支付金额)

通过微信网页授权,携带授权code重定向到订单支付页,并把订单数据拼接在重定向的地址后面(因为此步骤只适合history路由模式下,如果你项目是hash路由建议此步骤看这篇文章)

到支付页后

先通过js-sdk提供的()注入权限验证配置

再通过()接口处理成功验证

再通过()判断客户端版本是否支持指定JS接口

再在()里成功回调函数中调用()发起微信支付请求

获取地址栏上的code、订单数据(orderId),

然后请求支付接口获得我们需要的数据(该数据保函了和两个方法需要的传参)

通过js-sdk提供的方法发起支付

通过()支付成功回调:cancel:function(res){},支付失败回调:fail:function(err){},取消支付回调cancel:function(res){}分别处理不同支付结果

参考文档JS-SDK

实现代码

封装好获取微信授权code的方法和获取地址栏中指定参数的方法

/***@description截取url中的指定参数*@param{*}queryName需要截取的参数*@returns*/exportconstgetUrlParam=(queryName)=>{returndecodeURIComponent((newRegExp([?|&]+queryName+=+([^&;]+?)(&|#|;|$))()||[,])[1](/\+/g,%20))||null}/***获取微信支付的code,并传入回调地址*@param{*}url*/exportfunctiongetWxCode(url){letwxUrlStart=}

在订单页创建订单,并且微信授权拿到code,重定向到订单支付页(地址栏携带orderId,订单金额等订单数据和code)

asynccreateOrder(){//商品信息letgoodsList={goodsId:1};letparams={goodsList:goodsList,}//1.创建订单letdata=awaitcreateOrder(params);//获得订单id:orderId;订单总金额:orderTotalPrice;订单号:orderNolet{orderId,orderTotalPrice,orderNo}=data;//微信网页授权后的重定向地址leturl=`${}/pay?orderTotalPrice=${orderTotalPrice}&orderNo=${orderNo}&orderId=${orderId}`//上面封装的微信授权网页方法getWxCode(url);},

支付页的代码

//jsapi支付asyncwxPayByJsApi(){let_this=this;//获取订单数据和授权codeconst{orderTotalPrice,orderNo,orderId}=_this.$;={orderTotalPrice,orderNo,orderId,orderSource}_=getUrlParam(code);letparams={orderId:_,code:_,//授权微信拿到的code}//请求后端接口支付letresp=awaitwxPay(params);//调用后台接口({debug:false,//开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId:wechatAppId,//必填,公众号的唯一标识,//必填,生成签名的时间戳,//必填,生成签名的随机串,//必填,签名jsApiList:[chooseWXPay]//必填,需要使用的JS接口列表});//doc:注入权限验证配置(function(){//判断当前客户端版本是否支持指定JS接口({jsApiList:[chooseWXPay],//需要检测的JS接口列表,所有JS接口列表见附录2,success:(res)=>{//以键值对的形式返回,可用的api值true,不可用为false//如:{checkResult:{chooseImage:true},errMsg:checkJsApi:ok}//发起微信支付请求({,//支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符,//支付签名随机串,不长于32位,//统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*),//微信支付V3的传入RSA,微信支付V2的传入格式与V2统一下单的签名格式保持一致,//支付签名success:(res)=>{//支付成功后的回调函数_this.$({path:/payResult,query:{orderTotalPrice:_,orderNo:_,orderId:_}});},fail:(err)=>{_this.$(-1);},cancel:function(err){//用户取消支付_this.$(-1);},});}});});(err=>{_this.$(-1);})},小程序支付开发流程

小程序端请求创建订单接口,后端统一下单获取orderId并返回

小程序端获取通过()获取code

小程序端拿这code和orderId请求后端接口,获取支付所需数据

获取支付所需数据之后,小程序端调用()接口,直接调用起支付页面

判断是否支付成功后的逻辑

小程序文档()小程序文档()

实现代码asyncfunctionwxPay(goodId){//1.创建订单获取orderIdletCreateTheOrder={goodId,//商品id}letorderId=awaitcreateOrder(params);//2.获得codeletcode=awaitwxlogin();//基于pr封装的()方法//3.获取支付的数据letparamsPay={orderId,code,}letpayData=awaitwxXcxPay(paramsPay);//4.发起支付letres=awaitpayment(payData);//基于pr封装的()方法//5.判断是否支付成功letpayResult=;if(payResult==requestPayment:ok){(支付成功);}elseif(payResult==requestPayment:failcancel){(用户取消支付);}else{(支付失败);}}注意事项

申请微信小程序账号申请成功可拿到AppID(小程序id)和??AppSecret(小程序密钥)申请类型为企业性质,否则无法接入微信支付

微信小程序认证通过认证的小程序才能接入微信支付和绑定商户平台

申请商户平台账号需要第一步申请的AppID申请成功可拿到MchID(商户id)和MchKey(商户密钥)

信小程序关联商户号微信和商户都认证成功后,在微信后台微信支付菜单中进行关联接入微信支付

在微信后台微信支付菜单中进行接入

写在最后 从零开始对接微信支付

我是AndyHu,目前暂时是一枚前端搬砖工程师。

文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注呀?

未经许可禁止转载?

speakless,domore.

原文:

扫描二维码推送至手机访问。

版权声明:本文由码支付发布,如需转载请注明出处。

转载请注明出处https://pay.03hz.cn/?id=79

分享给朋友:

相关文章

支付宝钱包扫码付款教程图解 支付宝钱包扫码功能在哪

支付宝钱包扫码付款教程图解 支付宝钱包扫码功能在哪

支付宝钱包是支付宝针对手机用户付款而开发的一个应用,其内置了余额宝、转账、我的生活等功能,另外支付宝钱包中还内置了支付宝钱包扫码功能,该功能可以帮助用户在电脑购物支付时,使用手机中的支付宝钱包扫码...

二维码收款怎么联系付款方 (二维码收款怎么查付款人)

二维码收款怎么联系付款方 (二维码收款怎么查付款人)

1、通过微信支付宝扫码付款,在账单详情中,会显示扫码者的昵称、微信号、交易时间等信息,可以通过这些信息联系付款方。 2、通过微信搜索加好友,如果付款人在收款码下填写了自己的名称或微信号...

网上购物怎么付款才啊安全呢

网上购物怎么付款才啊安全呢

通过网银啊,每次付款登陆网上银行,通过电子验证码来付款相对安全。 用支付宝或微信付款,和直接刷卡有什么区别? 用支付宝或微信付款,和直接刷卡有什么区别?这个问题可以演变成网络支付和刷卡...

二维码支付存在垄断

二维码支付存在垄断

本文首发于FT中文网 现在的绝大多数中国人对第三方支付已经不陌生,无论是高星级酒店还是农贸市场,我们都可以使用第三方支付。 数据也佐证了这一点,中国支付清算协会的《2018年支付体...

微信扫码免密支付在哪里设置 (微信扫码免密支付怎么关闭设置)

微信扫码免密支付在哪里设置 (微信扫码免密支付怎么关闭设置)

```html 微信扫码免密支付是一种便捷的支付方式,用户可以通过扫描二维码完成支付而无需输入密码。有时候用户可能希望关闭这个功能或者进行相关设置。以下是关于微信扫码免密支付设置的详细分析:...

深度解析支付宝免签约即时到帐接口的含义及功能特点 (支付怎么理解)

深度解析支付宝免签约即时到帐接口的含义及功能特点 (支付怎么理解)

支付宝为网站商家提供了一种程序接口,让客户可以通过该接口直接将款项支付到卖家账户,支付宝本身不提供担保交易服务。对于个人网站如何接入收款功能,一般方法是贴上收款码,让他人通过扫码来付款。但如果是...

现在,非常期待与您的又一次邂逅

我们努力让每一次邂逅总能超越期待