Hbuilder实现App微信支付总结

一、参数说明

        登陆微信开放平台(注意是开放平台,不是公众平台);https://open.weixin.qq.com

        做app首先需要在微信开放平台后台创建应用,第二步勾选ios和Android应用平台,其中Android应用需要填写应用签名、应用包名,重点就在与如何获取应用包名、应用签名。(审核和开通方式教程

        

        应用包名:就是Hbuilder中打包时填写的Android包名;

        应用签名:
        如果用的是DCloud公用证书,则应用签名为:"59201cf6589202cb2cdab26752472112"(全小写)

        如果是自有证书,获取应用签名方法:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5  参考:Android开发要点说明->第一步(后台设置)。

        也可以自己配置证书,在网上搜索android.keystore证书配置教程,app打包时候选择此证书即可

        下图是微信中的配置,注意看红框中的描述

二、DCloud官网支付配置

        官方的支付配置有很多重点都没说明,但是下面的参考实例代码还是有用的。其中的appid就是开放平台的appid。

         注意:获取的支付通道每种包含三个字段:id、description、serviceReady。serviceReady是用来判断支付通道服务是否安装,对于支付宝可以通过wap页面支付,因此值固定为true;然而微信支付则依赖微信客户端,如果设备上未安装微信客户端则serviceReady值为false,此时应该提示用户安装微信客户端才能进行支付操作。(官网文档

 三、流程

        流程与支付宝app支付类似。(业务流程Android开发步骤说明

        1.app发起支付申请,请求服务器向微信发起预付单处理;(微信统一下单

        2.请求成功后,对预付单进行签名并返回json数据给app;(处理并签名之后的参数:调起支付参数

        3.app拉起微信支付;

        4.支付成功后异步通知服务器支付结果;

        5.app中进入订单支付结果页面(这里数据重新与服务器确认是否支付成功)

四、问题解决

        肯定会碰到的问题:支付失败:-100[100]:[payment微信:-1]General errors,肯定是配置出现错误了,微信不会提醒你错误在哪的

        1. 检查参数:

        a.确认开放平台的 appid、mac_id、key、Appsecret  与服务器中的配置一样。(公众号中NOTIFY_URL 是需要匹配才能回调,开放平台好像不需要)
        b.app只需要配置微信appid即可。
        c.确认app中的"应用包名"与微信中配置一样;
        d.再次检查微信配置中的"应用签名"是否按规定获取的。!!!!(签名通过一个app获取,参考上面文档,确认是否填的正确值)

        2. 如果是刚修改过微信配置中的应用签名,则需要等待几分钟甚至更久才能测试成功

        3. 确认服务器向微信发起预付单处理,返回的参数没有错误(说明签名方式没错,所有签名方式都需要按同一种方式执行)

        4. 在app端查看服务器传回来的参数是否缺少或者有错误(参考 调起支付参数 严格对比字母大小写)

可以将自己的返回信息和上面的进行对比,发现是一样的,都是7个参数,且参数都一样  
 注:有的时候,第一次拉取成功了,但是并没有支付而是返回了,然后再拉取的时候会报错,因为订单号重复了,这时候有抓包的工具的话,是可以看到prepayid是null,因为预订单是有时效的,这个需要自己在做一下判断。  
 还有一个注意点:plus.payment.request发起支付的时候,接收到的参数是json格式的字符串而不是对象,这点要注意一下,因为我封装了ajax请求,默认将json格式转为对象,所以在用的时候要将参数再转为字符串  

mui中查看错误信息比较麻烦,参考做法是:console.log(JSON.stringify(result));  转为输出json字符串

 开发指引

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3

支付插件配置 - DCloud问答支付插件配置 - plus的支付API,支持支付宝App支付(移动快捷支付)、微信支付和苹果的IAP应用内支付。配置参数需要提交云端打包后才能生效,如果需要真机运行生效请使用自定义基座 开发指导传统支付流程如下:如果使用uniCloud,则搭配uniPay会大幅简化...https://ask.dcloud.net.cn/article/71实力解决微信支付问题~ - DCloud问答实力解决微信支付问题~ - 关于微信支付的时候,一直提示-1的问题,我也是整理了半天,才弄出来个原因, 首先,准备工作要做好,要保证:1、menifest.json中配置了微信的appid2、服务端请求prepareid正确返回;3、服务端返回数据格式与官方一致:4、an...https://ask.dcloud.net.cn/article/34913

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Uni-app是一种跨平台的开发框架,可以方便地开发出适用于多个终端的应用程序,包括Web、iOS、Android等。在开发过程中,我们可以使用uni-app提供的API实现多种功能,比如调用微信支付。 首先,我们需要在应用程序内引入微信支付所需的SDK,在Uni-app中可以使用插件机制,自己开发一个插件或者使用已有的插件,如uni-wxpay等。然后,在APP内调用微信支付的流程如下: 1.在创建支付订单时,需要将订单信息传递给服务端,由服务端生成订单号、调用微信支付API生成预支付订单,并返回给APP。 2.APP拿到预支付订单后,调用微信SDK内置的API进行支付,主要包括支付参数的配置和支付的发起。 3.支付完成后,微信会回调我们在服务端注册的回调地址,服务端通过请求微信的API对支付结果进行核对,确认支付是否成功,并作出相应的处理。 需要注意的是,在调用微信支付API时需要在微信开放平台申请开发者账号,并完成相应的配置,包括设置支付回调地址、支付授权目录等等。 总之,通过调用微信支付API,我们可以为APP添加支付功能,实现线上商品购买、捐赠赞赏等功能。而在Uni-app中,使用插件机制可以更加方便快捷地完成这个流程。 ### 回答2: uni-app 是一个可以跨平台开发的框架,它支持开发微信小程序、支付宝小程序、H5 等多个平台。在 uni-app 中内调用微信支付可以实现用户在应用内进行支付,下面我将具体介绍 uni-app 中如何进行内调用微信支付。 1. 首先需要在应用中安装微信支付插件,打开 HBuilderX,选择菜单栏中的“插件市场”,搜索“微信支付”,选择安装。 2. 在应用中使用微信支付的页面中引入微信支付插件: ```javascript import $payment from "@/uni_modules/yk-payment/js_sdk/uni-payment.js"; // 引入插件 ``` 3. 在需要支付的位置,调用微信支付的方法: ```javascript uni.showLoading({ title: '加载中' }); $payment.weixinPay({ timeStamp: '1603388794', nonceStr: '5pnskrq5060pt2lljndzpta9hzqmxrsq', package: 'prepay_id=wx30163954528026d7bf482abf2becd37124', signType: 'MD5', paySign: '3ACA84580DD8C32D8478B4BBF3688A1D', success: function (res) { console.log('success:' + JSON.stringify(res)); }, fail: function (err) { console.log('fail:' + JSON.stringify(err)); }, complete: function (res) { uni.hideLoading(); } }); ``` 其中,微信支付需要提供以下参数: - timeStamp:时间戳,单位为秒 - nonceStr:随机字符串,不长于 32 位 - package:统一下单接口返回的 prepay_id,参考[微信支付开发文档](https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1)中获取订单号 - signType:签名算法,目前支持 MD5 和 HMAC-SHA256 - paySign:签名,具体签名方式详见[微信支付开发文档](https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1) 微信支付成功后会回调 success 回调函数,失败则回调 fail 回调函数。 4. 在微信支付的后端接口中,需要根据微信支付返回的结果进行签名校验,确保订单的真实性。 综上所述,使用 uni-app 内调用微信支付步骤相对简单,只需安装微信支付插件,调用支付方法即可,但支付过程中需要注意时间戳、随机字符串、签名等参数的正确性,同时在后端接口中校验微信支付的签名以确保支付的真实性。 ### 回答3: Uni-app是一个跨平台开发框架,它可以让开发者一次编写代码,同时在多个平台上运行。微信支付是一个广为人知的移动支付平台,它可以提供便捷的支付服务。在实践中,我们可以使用Uni-app中的支付插件来在应用程序中调用微信支付。下面是如何实现Uni-app应用程序内调用微信支付: 1. 首先,安装支付插件在Uni-app开发环境中,可以通过npm安装。 2. 在支付插件内部,我们需要引用微信支付的API,以便在我们的应用程序中调用这些API来实现支付。这些API包括支付API、查询订单API、退款API等等。 3. 接下来,我们需要在我们的代码中调用支付API,这个API用于请求加载微信支付。当用户点击订单支付按钮时,我们可以在后台发送一个请求,请求加载微信支付页面和所需的支付参数。 4. 在向微信支付发送请求后,我们需要接收来自微信支付的响应,然后将结果传递给我们的应用程序。通常,微信支付会将支付结果返回给我们的后台服务器,然后我们可以将结果传递给我们的应用程序。我们可以使用Uni-app的API来轮询服务器以获取结果。 5. 最后,我们需要在我们的应用程序中向用户显示支付结果。如果支付成功,我们可以向用户显示订单确认信息。如果支付失败,我们可以向用户显示错误信息。 总之,Uni-app应用程序的开发者可以使用插件实现在应用程序中调用微信支付。开发者需要在插件内部引用微信支付API,然后在代码中调用它们来实现支付。最后,我们需要接收来自微信支付的响应,并在我们的应用程序中向用户显示支付结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值