微信支付(JSAPI支付)接入流程

一、 常用支付方式

微信当前支持的支付产品有如下这些:

在这里插入图片描述

可以根据自己的需要选择接入的支付方式。 接入指引

我们常用的支付方式:JSAPI支付 Native支付 APP支付

  • JSAPI支付: 商家张贴收款码物料,用户打开扫一扫,扫码后输入金额,完成付款
  • Native支付: 商家在系统中按微信支付协议生成支付二维码,用户扫码拉起微信收银台,确认并完成付款
  • APP 支付: 用户在商家的APP中下单,跳转到微信中完成支付,支付完后跳回到商家APP内,展示支付结果,随后通过微信支付公众号下发账单消息

接入文档里面有各个接入方式的详细说明。这里只介绍JSAPI支付

二、简介

JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调起微信支付模块完成收款。

三、应用场景

JSAPI支付适用于线下场所、公众号场景和PC网站场景。

商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程。

四、接入准备

1. 选择接入模式:普通商户或普通服务商

商户/服务商在接入前首先要判断自己公司注册区域适用的接入模式,微信支付目前提供两种接入方式:直连模式和服务商模式。
直连模式:
信息、资金流:微信支付—>直连商户

直连模式,商户自行申请入驻微信支付,无需服务商协助。(商户平台申请)成为直连商户

服务商模式:
在这里插入图片描述

   							 —— 信息流    —— 资金流

服务商模式,商户申请成为微信支付服务商,服务商自身无法作为一个直连商户直接发起交易,其发起交易必须传入相关特约商户商户号的参数信息。(服务商平台申请)成为服务商

请结合自身实际情况来选择接入模式。

服务商模式相关说明详见:服务商模式介绍

2. 申请参数

商户自行申请入驻微信支付,无服务商协助。(商户平台申请)成为直连商户

  1. 申请APPID

    由于微信支付的产品体系全部搭载于微信的社交体系之上,所以直连商户或服务商接入微信支付之前,都需要有一个微信社交载体,该载体对应的ID即为APPID。

    注意: JSAPI支付的载体只能是公众号,请前往 公众平台申请

    各类社交载体一旦申请成功后,可以登录对应平台查看账号信息以获取对应的appid。

    不同载体可使用场景,见下图:
    在这里插入图片描述

  2. 申请mchid、绑定APPID及mchid 、配置API key、下载并配置商户证书
    步骤请查看我上一篇文章:微信支付(Native支付)接入流程

  3. 配置应用

    1. 设置支付授权目录
      支付授权目录说明

      • 普通商户最后请求拉起微信支付收银台的页面地址我们称之为“支付授权目录”,例如:https://www.weixin.com/pay.php的支付授权目录为:https://www.weixin.com/
      • 普通商户实际的支付授权目录必须和在微信支付商户平台设置的一致,否则会报错“当前页面的URL未注册:”。

      支付授权目录设置说明
      登录【微信支付商户平台—>产品中心—>开发配置】,设置后一般5分钟内生效。
      在这里插入图片描述

      支付授权目录校验规则说明

      • 如果支付授权目录设置为顶级域名(例如:https://www.weixin.com/ ),那么只校验顶级域 名,不校验后缀;
      • 如果支付授权目录设置为多级目录,就会进行全匹配,例如设置支付授权目录为 https://www.weixin.com/abc/123/,则实际请求页面目录不能为https://www.weixin.com/abc/,也不能为https://www.weixin.com/abc/123/pay/,必须为https://www.weixin.com/abc/123/
    2. 设置授权域名
      开发JSAPI支付时,在JSAPI下单接口中要求必传用户OpenID,而获取OpenID则需要您在微信公众平台 (opens new window)设置获取OpenID的域名,只有被设置过的域名才是一个有效的获取OpenID的域名,否则将获取失败。具体界面如图所示:
      在这里插入图片描述
      在这里插入图片描述

五、支付的流程

  1. 获取code

    在确保微信公众账号是已认证服务号的前提下,
    生成授权链接https://open.weixin.qq.com/connect/oauth2/authorize?appid={ {APPID}}&redirect_uri={ {REDIRECT_URI}}&response_type=code&scope={ {SCOPE""&state={ {STATE}}#wechat_redirect

    可以通过做成二维码的方式,让用户使用微信扫码,访问授权链接, 用户同意授权后,页面将跳转至 redirect_uri/?code={ {CODE}}&state={ {STATE}},应当使用https链接来确保授权code的安全性。

  2. 通过code换取网页授权access_token

    获取code后,请求以下链接获取access_token:
    https://api.weixin.qq.com/sns/oauth2/access_token?appid={ {APPID}}&secret={ {SECRET}}&code={ {CODE}}&grant_type=authorization_code

    正确时返回的JSON数据包如下:

    {
         
      "access_token":"ACCESS_TOKEN",
      "expires_in":7200,
      "refresh_token":"REFRESH_TOKEN",
      "openid":"OPENID",
      "scope":"SCOPE",
      "is_snapshotuser": 1,
      "unionid": "UNIONID"
    }
    

    这样就拿到微信用户的 OPENID

  3. 下单
    调用下单接口下单,成功后可以得到一个prepay_id

    {
         
      "prepay_id" : "wx201410272009395522657a690389285100"
    }
    
  4. JSAPI调起支付
    调起支付只能通过 H5 页面使用 JS 方法拉起微信的支付功能。

    function onBridgeReady() {
         
        WeixinJSBridge.invoke('getBrandWCPayRequest', {
         
            "appId": "wx2421b1c4370ec43b",     //公众号ID,由商户传入     
            "timeStamp": "1395712654",     //时间戳,自1970年以来的秒数     
            "nonceStr": "e61463f8efa94090b1f366cccfbbb444",      //随机串     
            "package": "prepay_id=up_wx21201855730335ac86f8c43d1889123400",
            "signType": "RSA",     //微信签名方式:     
            "paySign": "oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\/X+QBhcCYL21N7cHCTUxbQ+EAt6Uy+lwSN22f5YZvI45MLko8Pfso0jm46v5hqcVwrk6uddkGuT+Cdvu4WBqDzaDjnNa5UK3GfE1Wfl2gHxIIY5lLdUgWFts17D4WuolLLkiFZV+JSHMvH7eaLdT9N5GBovBwu5yYKUR7skR8Fu+LozcSqQixnlEZUfyE55feLOQTUYzLmR9pNtPbPsu6WVhbNHMS3Ss2+AehHvz+n64GDmXxbX++IOBvm2olHu3PsOUGRwhudhVf7UcGcunXt8cqNjKNqZLhLw4jq\/xDg==" //微信签名 
        },
        function(res) {
         
            
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Uniapp是一种跨平台的开发框架,可以用于同时开发iOS、Android和H5应用。而H5是指在网页上运行的应用程序。微信支付JSAPI微信提供的一种支付接口,通过调用JSAPI接口,可以在H5应用中实现微信支付功能。 在Uniapp中使用微信支付JSAPI,可以通过以下步骤进行操作: 1. 首先,在Uniapp项目中引入微信支付的相关配置文件和SDK库文件。 2. 在需要使用微信支付的页面中,引入微信支付的JS文件,并初始化微信支付参数。支付参数包括商户号、appid、签名等信息。 3. 创建统一下单接口的后端处理程序,用于生成预支付订单并返回支付预处理参数给前端。 4. 在支付页面中,调用微信支付JSAPI的方法,传入预支付处理参数和支付回调方法。 5. 当用户点击支付按钮后,会弹出微信支付界面,用户可以选择支付方式进行支付操作。 6. 支付成功后,微信会将支付结果返回给前端,并通过支付回调方法进行处理,可以展示支付成功的提示信息和更新订单状态等操作。 需要注意的是,使用微信支付JSAPI需要在微信开放平台上注册并申请相关的权限。同时,在使用过程中,还需要确保支付参数的正确性、支付安全性和业务逻辑的完善性。 总之,Uniapp可以很好地支持H5应用中的微信支付JSAPI,通过合理的配置和调用,可以方便地在H5应用中实现微信支付功能,为用户提供更加便捷的支付体验。 ### 回答2: Uniapp是一款跨平台的应用开发框架,可以让开发者使用Vue.js语法来开发同时兼容多个平台的应用程序。Uniapp支持在H5平台中使用微信支付JSAPI微信支付JSAPI微信提供的一组用于在网页中实现微信支付功能的JavaScriptAPI接口。通过调用微信支付JSAPI,开发者可以在H5页面中调起微信支付功能,用户可以使用微信支付完成支付操作。 在Uniapp中使用微信支付JSAPI,首先需要引入微信支付的JS文件。可以在页面的头部引入:<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>。 然后,在需要使用微信支付的地方,可以通过uni.request方法向服务器请求获取支付参数。获取到支付参数后,可以使用wx.requestPayment方法调起微信支付界面,并传入支付参数。支付成功后,微信会返回支付结果给开发者的回调函数,开发者可以在回调函数中处理支付结果。 需要注意的是,在使用微信支付JSAPI的过程中需要保证支付参数的安全性,避免支付参数被恶意篡改。通常可以在服务器端生成支付参数,并通过服务器端返回给前端,以确保支付参数的安全性。 总结起来,Uniapp可以在H5平台中使用微信支付JSAPI来实现微信支付功能,开发者需要引入微信支付的JS文件,通过uni.request方法获取支付参数,调用wx.requestPayment方法调起支付,处理支付结果的回调函数,并确保支付参数的安全性。 ### 回答3: Uniapp 是一款跨平台开发框架,可以同时开发小程序、H5 和APP。Uniapp 提供了对微信支付的支持,可以使用微信支付JSAPI(JavaScript API)来进行支付功能的开发。 Uniapp H5 微信支付 JSAPI 的实现过程如下: 1. 首先,需要在微信支付商户平台上注册并获取到自己的商户号(mch_id),同时生成随机字符串(nonce_str)和当前时间戳(timestamp)。 2. 接下来,在前端页面中引入微信支付的 JS 文件,可以通过在页面头部添加以下代码进行引入: ``` <script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script> ``` 3. 在页面中设置要支付的订单信息,包括订单号(out_trade_no)、订单总金额(total_fee)等,并将这些信息以及商户号、随机字符串和时间戳等传递给后端服务器。 4. 后端服务器在接收到前端传递的支付信息后,根据微信支付 API 的要求,生成签名(sign)并返回给前端。 5. 前端页面收到后端返回的签名后,调用微信支付JSAPI 方法,传入订单信息和签名等参数,即可发起支付请求。 6. 微信客户端会弹出支付窗口,用户输入密码或进行指纹验证后,支付完成。 注意事项: - 在使用 Uniapp 进行微信支付开发时,需要确保页面已经获得了微信公众号的授权,因为微信支付是需要通过公众号的权限进行的。 - 需要合理处理支付结果的回调,根据支付结果进行相应的处理,如跳转到支付成功页面或给予支付失败的提示等。 通过使用 Uniapp H5 微信支付 JSAPI,我们可以方便地在 Uniapp 框架下进行微信支付的开发,实现支付功能的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值