要想在自己的APP中实现APP支付必须申请开通支付功能,这些按着文档来吧,我还是直接说Android中的问题吧。

一、签名

一定要在开放平台为自己的APP配置正确的包名和签名(签名:将APP打一个正式环境的包,然后在微信开放平台下载签名工具进行签名)。

二、打包测试

和微信的第三方登录一样,必须要打正式包,不是debug的,来进行测试,这样就没有办法调试了,感觉很不爽。所以提供一个办法来拯救一下嘿嘿:

在build.gradle文件中设置debug环境和relealse环境的签名相同就可以解决这个文通了,已经试过了,可以的。

signingConfigs {

release {

//.jks文件放在项目目录

storeFile file("xxx.jks")

storePassword "xxx"

keyAlias "xxx.release"

keyPassword "xxx"

}

debug {

//.jks文件放在项目目录

storeFile file("xxx.jks")

storePassword "xxx"

keyAlias "xxx.release"

keyPassword "xxx"

}

}

接下来按着官网的文档和demo来完成:

1、定义一个全局的变量:

private IWXAPI api;

2、注册APPID

api = WXAPIFactory.createWXAPI(this, "你在微信开放平台创建的app的APPID");

官网是这样注册的,但是,下面要用到msgAPi,所以定义为全局的。

final IWXAPI msgApi = WXAPIFactory.createWXAPI(SelectPaymentMethodActivity.this, null);

msgApi.registerApp("你在微信开放平台创建的app的APPID");

3、开始支付

当你点击支付的时候去调用服务端的接口(服务端调用统一下单接口,反geini一些信息),所以这里你不能自己独立完成需要后端的支持。

//我将后端反给我的信息放到了WeiXinPay中,这步是获取数据

WeiXinPay weiXinPay = (WeiXinPay) map.get("weixinpay");

//这个在官网里就会看到,将你获取的信息赋给payReq,这块就是调起微信的关键

PayReq payReq = new PayReq();

payReq.appId = weiXinPay.getAppid();

payReq.partnerId = weiXinPay.getPartnerid();

payReq.prepayId = weiXinPay.getPrepayid();

payReq.packageValue = weiXinPay.getPackage_exten();

payReq.nonceStr = weiXinPay.getNoncestr();

payReq.timeStamp = weiXinPay.getTimestamp();

payReq.sign = weiXinPay.getSign();

api.sendReq(payReq);

4、接下来就是在微信里的一些东西了,我们不用管,我们只需要关心回调页WXPayEntryActivity,这里需要注意该文件必须在wxapi这个文件夹下,及com.xxx.xxx.wxapi.WXPayEntryActivity

//必须实现接口,重写方法

public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {

private IWXAPI api;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_wxpayentry);

api = WXAPIFactory.createWXAPI(this, "wx72e0123dd9b54a73");

api.handleIntent(getIntent(), this);

}

@Override

protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);

setIntent(intent);

api.handleIntent(intent, this);

}

@Override

public void onReq(BaseReq baseReq) {

}

@Override

public void onResp(BaseResp baseResp) {

Log.e("---------->","code:"+baseResp.errCode);

if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {

//这里就是支付完成后需要做的事,如跳到哪个页面啥的

}

}

}

5、还有一点在功能清单中对Activity中进行注册

android:exported="true"

android:launchMode="singleTop"/>

-1 扫坑(可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等)

微信

商户系统和微信支付系统主要交互说明:

步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。

步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。参见【统一下单API】。

步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appid,partnerid,prepayid,noncestr,timestamp,package。注意:package的值格式为Sign=WXPay

步骤4:商户APP调起微信支付。api参见本章节【app端开发步骤说明】

步骤5:商户后台接收支付通知。api参见【支付结果通知API】

步骤6:商户后台查询支付结果。,api参见【查询订单API】

调起支付接口

请求参数

字段名

变量名

类型

必填

示例值

描述

应用ID

appid

String(32)

wx8888888888888888

微信开放平台审核通过的应用APPID

商户号

partnerid

String(32)

1900000109

微信支付分配的商户号

预支付交易会话ID

prepayid

String(32)

WX1217752501201407033233368018

微信返回的支付交易会话ID

扩展字段

package

String(128)

Sign=WXPay

暂填写固定值Sign=WXPay

随机字符串

noncestr

String(32)

5K8264ILTKCH16CQ2502SI8ZNMTM67VS

随机字符串,不长于32位。推荐随机数生成算法

时间戳

timestamp

String(10)

1412000000

签名

sign

String(32)

C380BEC2BFD727A4B6845133519F3AD6

签名,详见签名生成算法注意:签名方式一定要与统一下单接口使用的一致

返回结果

名称

描述

解决方案

0

成功

展示成功页面

-1

错误

可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。

-2

用户取消

无需处理。发生场景:用户不支付了,点击取消,返回APP。

几大坑原因+解决:

1、 微信开放平台上传的签名问题(调试环境使用的签名要和微信后台保持一致)

2、 Manifest文件中WXPayEntryActivity 的配置问题。一定要声明

3、 WXPayEntryActivity 类必须放在 包名.wxapi 下

4、 签名工作一般由后台完成,在生成签名时,务必注意key的拼写问题,比如必须拼appid而不是appId,必须拼prepayid而不是prepayId,这里跟上面PayReq 对象中字段的命名方式不一样,用错了也是照样返回-1。一定要小写!!!参与签名的字段名为appid,partnerid,prepayid,noncestr,timestamp,package。注意:package的值格式为Sign=WXPay

5、签名所使用的是 微信商户平台的API密钥,而不是微信开放平台 的 AppSecret。 API密钥在商户平台后台-->API安全-->先安装操作证书,后设置密钥

6、清空缓存,最后再说一个坑,如果经过一系列的配置,发现完全都配置好了,可是微信支付依然返回-1。而此时我们可能又会回头排查各个节点的问题,是配置问题?是自己的数据传递问题?到底哪里的bug?

其实这时候,清空下自己的应用缓存就可以了,通过 设置-应用管理-your app-清空缓存,进行缓存清理过后,立竿见影拿到成功的回调!

参考文档:

android安装多个微信支付,android微信支付详解与坑相关推荐

  1. PHP支付接口教程,详解微信支付(二)

    PC扫码支付 扫码支付首先是要分清楚两种模式: [模式一]:商户后台系统根据微信支付规则链接生成二维码,链接中带固定参数productid(可定义为产品标识或订单号).[模式二]:商户后台系统调用微信 ...

  2. android 7 apk 安装程序,Android安装apk文件并适配Android 7.0详解

    Android安装apk文件并适配Android 7.0详解 首先在AndroidManifest.xml文件,activity同级节点注册provider: android:name="a ...

  3. android apk安装过程,Android安装apk文件并适配Android 7.0详解

    Android安装apk文件并适配Android 7.0详解 首先在AndroidManifest.xml文件,activity同级节点注册provider: android:name="a ...

  4. 本文是对优雅草蜻蜓C影视便捷追剧小程序微信支付配置教程-大部分小程序支付通用,从微信配置到后台的详解,其他小程序系统均可参考

    本文是对优雅草蜻蜓C影视便捷追剧小程序微信支付配置教程-大部分小程序支付通用,从微信配置到后台的详解,其他小程序系统均可参考 微信支付配置 1,下载工具 ​ 编辑切换为居中 添加图片注释,不超过 14 ...

  5. Android绘图Canvas十八般武器之Shader详解及实战篇(上)

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 前言 Android中绘图离不开的就是Canvas了,Canvas是一个庞大的知识体系,有java层的,也有jni层深入到Frame ...

  6. Android M新特性Doze and App Standby模式详解

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52312122 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  7. python下载微信公众号文章_python如何导出微信公众号文章方法详解

    1.安装wkhtmltopdf 下载地址:https://wkhtmltopdf.org/downloads.html 我测试用的是windows的,下载安装后结果如下 2 编写python 代码导出 ...

  8. 生成jni的android.mk,Android Studio 3.5版本JNI生成SO文件详解

    学习在于记录,把自己不懂得容易忘记得记录下,才是最好得选择. 废话不多说,想要在Android开发中嵌入c/c++代码,直接开始如下步骤 1.创建需要调用的Java类 在你某个指定的包下创建如下类pa ...

  9. 阿里聚安全Android应用漏洞扫描器解析:本地拒绝服务检测详解

    阿里聚安全Android应用漏洞扫描器解析:本地拒绝服务检测详解 阿里聚安全的Android应用漏洞扫描器有一个检测项是本地拒绝服务漏洞的检测,采用的是静态分析加动态模糊测试的方法来检测,检测结果准确 ...

  10. android启动页使用gif,android中使用react-native设置应用启动页过程详解

    一.背景 在我们使用react-native进行编写代码的时候,当启动应用的时候,我们会看到如下界面 然而,这样的启动界面是非常的不又好,那么我们该怎么进行处理启动界面呢?有如下两种方案 二.方案 1 ...

最新文章

  1. mysql防注入pdo_mysql PDO和存储过程动态SQL注入
  2. 内置装饰器一:@classmethod、@staticmathod
  3. 鸿蒙系统没有优势了吗,“鸿蒙系统”超震撼,带你细数它的优势
  4. 头条上python广告_满大街都是Python广告,真的如广告说的那样方便吗?,学精通后真能月如过万吗?业内大佬怎么看?...
  5. js 将图片置灰_JS 上传一张图片让其部分变灰色
  6. linux cmake装在自己目录下,如何在Linux下安装cmake
  7. 修改build:gradle版本
  8. 关于移动端布局和pc端写法
  9. 【Elasticsearch】wildcard、fuzzy、regexp、prefix
  10. 给WPF文字加多条修饰线
  11. windows 快捷调用
  12. 关于安装TOMCAT解压版环境配置流程
  13. flash在线拍照并上传
  14. 过期系统激活 win7
  15. 关于什么是AndroidX(一)
  16. 动态平衡网格交易_网格交易 套利:期货经典书籍
  17. 微信小程序-医护人员排班系统
  18. HTML期末作业:基于html+css+javascript+jquery实现古诗词网页 学生网页设计作品 web前端开发技术 web课程设计 网页规划与设计...
  19. epub文件打开乱码_什么是EPUB文件(以及如何打开一个文件)?
  20. 【Electron】 NSIS 打包 Electron 生成exe安装包

热门文章

  1. python如何调用gurobi_gurobi安装方法
  2. kindle书籍的后缀名_大家kindle里的电子书一般用什么格式的呢?
  3. 德国计划采用数字驾照
  4. 【零基础强化学习】强化学习中的有模型和无模型
  5. MD5加密中文结果不一致
  6. 英语经典作文写作关联句
  7. 一般人不知晓的10个“高能”网站,学编程和赚钱两不误
  8. java的color怎么转数字,将普通的数字转为color值,java和javascript的区别
  9. UG编程基本操作及工艺介绍分析
  10. “最强大脑”智慧检务如何落地?最佳智慧检务大数据平台案例!