微信支付(APP)集成时碰到的问题(.net提示“无权限”、iOS跳转到微信支付页面中间只有一个“确定”按钮)...

直入主题之前,请容我吐槽一下微*的官方东西:ASDFQ%#$%$#$%^FG@#$%DSFQ#$%.......;吐槽玩了!大家心照就好。

要完成手机APP跳转到微信的APP进行微信支付,需要进行如下操作:

1、先去微信的开放平台(http://open.weixin.qq.com)进行开发者账号的注册。

2、新建一个APP应用,然后填写必填信息提交审核。

3、进入APP应用,在接口信息中,进行申请“获得微信支付能力”的功能,期间会提交相关的公司营业信息证明等。

通过以上三点,然后经过漫长的等待之后,基本都可以申请下来的,这里不细说申请细节了,讲个大概,基本都能应付。

基本的对接流程在这里有细说(https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3)

在进行服务端对接之前,需要用到如下信息:

/* 微信app key 这两个就是我们上面申请的APP得到的*/

W_APP_ID

W_APP_SECRET

//商户号

W_MCH_ID--这个也是需要登录商户平台进行获得

//API密钥,在商户平台设置

W_API_KEY--这个需要登录商户平台进行获得

商户平台的登录地址(https://pay.weixin.qq.com/index.php)

一、.net服务端的对接:

1、直接上微信的SDK列表下载.net的SDK(https://pay.weixin.qq.com/wiki/doc/api/download/WxPayAPI_CS_v3.zip)

2、要先知道一点,下载回来的SDK是没有具体包含“统一下单API”的,只包含了这个“刷卡支付、微信内网页支付、扫码支付”

3、下载回来的SDK中,第一次运行是运行不了的,需要对代码进行设置

  1)对上面四个参数进行配置,具体在lib\Config.cs文件中

  2)屏蔽掉lib\HttpService.cs的代理访问:(这东西基本可以不用使用到)

  

4、通过以上的几步配置,基本可以运行了

5、还有一个点,我们点击Default.aspx页面上的按钮,链接过去的地址要注意一下,其实不是我们的测试工程,而是paysdk.weixin.qq.com的,这个需要改成是我们的测试功能才行(这个是比较吭的)。

6、如何对接“统一下单API”,最基本的做法就是打开business\JsApiPay.cs文件,然后拷贝GetUnifiedOrderResult方法直接用,但是如果拷贝这个方法用的时候,会提示“无权限调用”。其实最根本的错误在于我们传递的trade_type为JSAPI导致的,所以拷贝过来使用的时候,需要做如下的更新:(为什么要这样了,原因很简单,这个方法的用途本来就是给JSAPI的,我们是要使用trade_type为APP进行调用,这些参数当然要变拉)

只要这些字段即可,其余的可有可无,都不影响,到了这点,你运行“统一下单”功能,就会返回prepay_id了,也就是支付ID。

至此,通过这些设置,基本都可能成功。

二、iOS的对接,最常用的致命弱点就是,我把官方的请求地址换成了自己之后,点击支付测试,跳转到微信支付的页面时,中间就只出现了一个“确定”按钮,点击之后返回到原APP,提示“支付失败,xxx -2”这样的提示。

0、前言,先下载iOS SDK(https://pay.weixin.qq.com/wiki/doc/api/download/wechat_sdk_sample_ios_v3_pay.zip

1、如果你有这些提示了,我可以很肯定的告诉你,你的sign错了,而且是用错了,你不应该直接用服务端返回的sign,这个根本不是一回事。

2、切记,客户端的sign字段,是要自己生成的。

3、还要切记,服务端返回的那一串json,最有用而且最优价值的就唯一一个prepay_id,其余的基本不需要。

4、官方的iOS SDK中,包含了两个方法(sendpay_demo、sendpay),这也是最容易错的,我们在对接的时候,选择sendpay的方法,也就是这个:

这个方法的东西其实是不完整,最明显,我们把网络请求改了之后,再把所用到的参数赋值,然后就没有然后了,根本调不起来,压根就没反应,原因是缺少了package参数值,这个是固定的(Sign=WXPay)

5、改了第四点之后,肯定是能调用起来的了,但是确不能支付,sign错误导致的,至此,你应该把注意力集中到sendpay_demo的方法中去,不要再使用sendpay方法了

只需要把刚才获取的prepay_id替换掉,立马就能正常使用支付功能,如下位置的参数替换成我们网络请求返回的的就行了:

总结,希望此篇文章对正在做微信支付对接的哥们有帮助,也让大家少走一些弯路,如果觉得合适,可以顺手点个赞,以此鼓励鼓励。thanks

转载于:https://www.cnblogs.com/EasonJim/p/4762293.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[react] 使用Hooks要遵守哪些原则?

[react] 使用Hooks要遵守哪些原则? 只在最顶层使用 Hook 不要在循环,条件或嵌套函数中调用 Hook, 确保总是在你的 React 函数的最顶层调用他们。只在 React 函数中调用 Hook 不要在普通的 JavaScript 函数中调用 Hook。你可以: ✅…

QT出现“undefined reference to `vtable for’”解决方法

Qt 中新建类时,若需要使用信号与槽机制,必须显式启用Q_OBJECT宏。利用QT IDE添加并创建新的类时,在编译过程中会出现以下报错: undefined reference to vtable for XXX类名’” 查询相关资料,利用IDE创建类别时&…

Wireshark图解教程

Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。可破解局域网内QQ、邮箱、msn、账号等的密码&am…

Qt QProcess执行Linux 命令行的方法

1、QProcess 打开一个bash终端,可以执行一般的命令,主要实现步骤如下 m_proces_bash new QProcess; m_proces_bash->start("bash"); m_proces_bash->waitForStarted(); connect(m_proces_bash,SIGNAL(readyReadStandardOutput()),this…

[react] useEffect和useLayoutEffect有什么区别?

[react] useEffect和useLayoutEffect有什么区别? useEffect是异步的,所谓的异步就是利用requestIdleCallback,在浏览器空闲时间执行传入的callback。大部分情况下,用哪一个都是一样的,如果副作用执行比较长&#xff0…

使用winform来递归实现资源管理器

这里主要是对TreeView控件的学习 所使用到的方法: string path"E:\歌词"; //获得指定文件夹下所有文件夹的名称,这是带路径的,如:E:\歌词\1111111 Directory.GetDirectories(path); //获得指定路径下的文件的文件名&…

centos配置单网卡双IP

vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 DEVICEeth0:1BOOTPROTOstaticIPADDRIP地址NETMASK掩码ONBOOTyesservice network restart转载于:https://blog.51cto.com/gdzy1987/591124

Linux Qt打包发布应用程序

1、新建脚本文件pack.sh SensorMaster.sh (1)pack.sh #!/bin/sh exe"SensorMaster" #你需要发布的程序名称 des"/home/jianwang16/SensorMaster_Proj/build-SensorMaster-Desktop_Qt_5_9_0_GCC_64bit-Release/SensorMaster_Pack/install-pack " #创建文…

拟合优度检验

可决系数 可决系数(coefficient of determination) 如果样本回归线对样本观测值拟合程度越好,各样本观测点与回归线靠得越近,由样本回归做出解释的离差平方和与总离差平方和越相近;反之,拟合程度越差&…

Linux Qt打包应用程序--利用linuxdeployqt

1、下载安装linuxdeployqt (1) github 地址:https://github.com/probonopd/linuxdeployqt/releases 下载 linuxdeployqt-6-x86_64.AppImage 名称太长,可修改为linuxdeployqt (2)复制到/usr/local/bin 文件夹下,并增加可执行权限 sudo chmo…

移动端 项目开发经验集锦

移动端 项目开发经验集锦 本次要与大家分享的是,在项目开发过程中,移动端遇到的各种问题~本文主要与大家分享移动端开发经验,主要包括表单兼容(fixed定位的input存在的问题、iPhone、iPad的按钮默认样式、默认高光样式的处理、关闭…

[react] 怎么定时更新一个组件?

[react] 怎么定时更新一个组件? class Clock extends React.Component{constructor(props){super(props);this.state{date:new Date()};}componentDidMount(){this.timerIDsetInterval(()>this.tick(),1000);}componentWillUnmount(){clearInterval(this.timerI…

Linux中find用法

Linux中find常见用法示例 find path -option [ -print ] [ -exec -ok command ] {} \; #-print 将查找到的文件输出到标准输出 #-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格 #-ok 和-exec相同,只不过在操作前…

Fedora 17 下 Samba 服务快速设置

From : http://blog.sina.com.cn/s/blog_90cb4c630101724d.html ###############################Samba 服务器搭建及配置 - Jerrydq73更新日期: 2012.7.14###############################0. 参考:Fedora 及 CentOS 下 Samba 服务器的快速搭建1. 安装# yum instal…

Qt 设置窗体或控件渐变消失

1、主窗体渐变 QPropertyAnimation *animation new QPropertyAnimation(this,"windowOpacity");animation->setDuration(500);animation->setStartValue(1);animation->setEndValue(0);animation->setEasingCurve(QEasingCurve::Linear);animation->s…

[react] 在React中怎么使用async/await?

[react] 在React中怎么使用async/await? 如果是脚手架创建的react项目即可直接使用,否则需要配置babel 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关…

wcf小实例

/host using System; using System.ServiceModel; using System.Text;///host namespace Host {public class Host :IHost{#region IHost 成员public string Hello(){return string.Format("Hello Access Date:{0}", DateTime.Now);}#endregion}[ServiceContract]pu…

zoj3777(状态压缩)

题目阐述: 给定n个座位,n个人,每个人可以做n个位置中的任意一个,P[i][j]代表第i个人做第j个位置获得的分数,求有多少种排列方式使得获得的分数大于等于M。 这道题跟数位dp的思想很像,都是穷举可能的方式&am…

[react] 你最不喜欢React的哪一个特性(说一个就好)?

[react] 你最不喜欢React的哪一个特性(说一个就好)? 受控组件(input、radio、textarea)写起来始终难受,没有像vue的v-model之类的语法糖 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放…

Fedora 15 快捷操作之新体验

From: http://www.linuxdiyf.com/bbs/viewthread.php?tid202449&extra 由于Fedora采用了默认的Gnome3,所以桌面环境与以往的版本有很大的不同,比如说右上角没有关机选项卡,需要你按下Alt键就会发现,挂起变成了关机&#xff…