All Projects → aspirin-charles → WXPayDemo

aspirin-charles / WXPayDemo

Licence: other
Android集成微信支付

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to WXPayDemo

Qrpay
五合一收款码在线生成,40个模板 支持微信支付、支付宝支付、手机QQ支付、京东钱包、百度钱包,PayPal五合一收款,将其二维码合并为一个二维码,无需手续费,支持qq头像,昵称判断(HTML单页版多模板免安装) 腾讯云服务器 https://api.isoyu.com/qrpay/ 腾讯云COS https://qrpay.isoyu.com/
Stars: ✭ 477 (+3569.23%)
Mutual labels:  wxpay
Sy flutter wechat
Flutter 微信支付插件
Stars: ✭ 108 (+730.77%)
Mutual labels:  wxpay
Best Pay Sdk
可能是最好的支付SDK
Stars: ✭ 2,651 (+20292.31%)
Mutual labels:  wxpay
Wechatdeveloper
【新】微信服务号+微信小程序+微信支付+支付宝支付
Stars: ✭ 953 (+7230.77%)
Mutual labels:  wxpay
Teepay
Typecho 个人支付宝、微信收款插件
Stars: ✭ 90 (+592.31%)
Mutual labels:  wxpay
Apiproject
[https://www.sofineday.com], golang项目开发脚手架,集成最佳实践(gin+gorm+go-redis+mongo+cors+jwt+json日志库zap(支持日志收集到kafka或mongo)+消息队列kafka+微信支付宝支付gopay+api加密+api反向代理+go modules依赖管理+headless爬虫chromedp+makefile+二进制压缩+livereload热加载)
Stars: ✭ 124 (+853.85%)
Mutual labels:  wxpay
Jpay
🔥对微信App支付、支付宝App支付、银联APP支付的二次封装,对外提供一个相对简单的接口以及支付结果的回调
Stars: ✭ 394 (+2930.77%)
Mutual labels:  wxpay
AppPay
💸 AppPay专注于App支付的库,几句代码轻松搞定微信支付、支付宝支付。集成更简单。
Stars: ✭ 33 (+153.85%)
Mutual labels:  wxpay
Wxpay
微信支付 wxpay SDK for Go, 集成简单,功能完善,持续更新。
Stars: ✭ 99 (+661.54%)
Mutual labels:  wxpay
Pay Java Parent
第三方支付对接全能支付Java开发工具包.优雅的轻量级支付模块集成支付对接支付整合(微信,支付宝,银联,友店,富友,跨境支付paypal,payoneer(P卡派安盈)易极付)app,扫码,网页刷脸付刷卡付条码付转账服务商模式,微信分账,微信合单支付、支持多种支付类型多支付账户,支付与业务完全剥离,简单几行代码即可实现支付,简单快速完成支付模块的开发,可轻松嵌入到任何系统里 目前仅是一个开发工具包(即SDK),只提供简单Web实现,建议使用maven或gradle引用本项目即可使用本SDK提供的各种支付相关的功能
Stars: ✭ 2,025 (+15476.92%)
Mutual labels:  wxpay
Rxpay
支付宝 微信 支付 Rxjava
Stars: ✭ 66 (+407.69%)
Mutual labels:  wxpay
Wxpay
微信支付SDK - 商户支付/商户分账/服务商支付/服务商支付
Stars: ✭ 90 (+592.31%)
Mutual labels:  wxpay
Cps Mall Cloud
微信小程序优惠券商城(淘宝客、多多客),集成领券、信用返现、活动奖励、购物补贴、多级分销等功能,支持淘宝、拼多多、京东、唯品会、蘑菇街。毕业设计
Stars: ✭ 139 (+969.23%)
Mutual labels:  wxpay
Weixin Java Pay Demo
基于Spring Boot 和 WxJava 实现的微信支付Java后端Demo
Stars: ✭ 627 (+4723.08%)
Mutual labels:  wxpay
ZTVendorManager
基于友盟集成QQ,微信 ,微博 分享和登录功能,支付宝和微信支付功能。集成简单,使用方便。
Stars: ✭ 26 (+100%)
Mutual labels:  wxpay
Wxpay Sdk
最新最全微信支付集成SDK,一行代码调用微信支付,包含基础支付功能(网页授权、各种签名、统一下单、退款、对账单、用户信息获取)、验收用例指引(沙箱支付、支付验收、免充值产品开通)、商户平台(现金红包、企业付款到用户、代金券或立减优惠)、公众平台(微信卡券、社交立减金活动)、小程序(生成永久二维码、发送模版消息)等等更多丰富接口注释和例子。
Stars: ✭ 443 (+3307.69%)
Mutual labels:  wxpay
Best Pay Demo
best-pay-sdk demo
Stars: ✭ 120 (+823.08%)
Mutual labels:  wxpay
weapp wechat miniapp sdk
一个封装了微信小程序服务端接口的SDK
Stars: ✭ 102 (+684.62%)
Mutual labels:  wxpay
donate
捐赠我们
Stars: ✭ 12 (-7.69%)
Mutual labels:  wxpay
Rxtool
Android开发人员不得不收集的工具类集合 | 支付宝支付 | 微信支付(统一下单) | 微信分享 | Zip4j压缩(支持分卷压缩与加密) | 一键集成UCrop选择圆形头像 | 一键集成二维码和条形码的扫描与生成 | 常用Dialog | WebView的封装可播放视频 | 仿斗鱼滑动验证码 | Toast封装 | 震动 | GPS | Location定位 | 图片缩放 | Exif 图片添加地理位置信息(经纬度) | 蛛网等级 | 颜色选择器 | ArcGis | VTPK | 编译运行一下说不定会找到惊喜
Stars: ✭ 11,567 (+88876.92%)
Mutual labels:  wxpay

WXPayDemo

Android集成微信支付 ​ 最近在项目中使用为微信支付,因为微信支付的官方文档没有进行太多的说明,so特此写篇博客记录下

​ 下面是我按照微信官方提供的案例所修改的一个微信支付的Demo(Eclipse版并且包含服务端实例)

这里说明下我在Demo中模拟了生成预支付的信息在GetPrepayIdTask.java中,服务器的同学可以仿照进行写下

主要的项目结构如下:

Android集成微信支付

准备工作

1.首先导入微信提供的jar包(libammsdk.jar)微信支付

2.Demo

进行配置

1.在AndroidManifest.xml添加权限和基本的配置说明

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 	<activity
            android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop" />
 <receiver android:name=".AppRegister" >
     <intent-filter>
          <action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" />
      </intent-filter>
 </receiver>

​ (一定不要忘记配置receiver,否则支付成功之后会崩溃)

​ 支付Activity(当前调用支付Activity)的参数配置

 			<intent-filter>
                  <action android:name="android.intent.action.VIEW" />

                  <category android:name="android.intent.category.DEFAULT" />

                  <data android:scheme="xxx" /><!-- appid 微信分配的公众账号ID -->
            </intent-filter>

​ (详细看Demo)

2.之后导入WXPayEntryActivity.java文件,因为我在项目中需要把当前的支付结果返回给Activity所以用到了动态广播(后面会说明),一定要记住要在wxapi包下,一定要记住要在wxapi包下,一定要记住要在wxapi包下。

3.导入AppRegister.java文件注册APP到微信中。

public class AppRegister extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);

		// 注册app到微信
		msgApi.registerApp(Constants.APP_ID);
	}
}

4.建立Constants.java,放置配置参数(因为我在Demo 模拟了服务端一些信息会在其中)

public class Constants {
	// appid 微信分配的公众账号ID
	public static final String APP_ID = "xxxxx";

	// 商户号 微信分配的公众账号ID
	public static final String MCH_ID = "xxxx";

	// API密钥,在商户平台设置
	public static final String API_KEY = "xxxxx";
}
  1. 整体的结构是这样的我在Demo 中首先模拟了预支付的订单,之后调用位置支付进行支付,当然预支付订单信息都会有服务器给你生成之后你调用就可以了,这里我们只是模拟

Android集成微信支付

  1. 调用 app预支付订单我给封装到GerPrepayIdTask.java中 代码中都写了注释可以进行观看

​ 这里着重一点说明的是同时也是服务端的事情,要注意下面的参数信息

Android集成微信支付

  1. 正式调用微信支付我封装在了WxPayUtils.java

​ 因为我们需要的参数都是在GerPrepayIdTask的resultunifiedorder和req中,所以把这两个参数传递WxPayUtils中

Android集成微信支付

​ 为了安全,APP端调起支付的参数需要商户后台系统提供接口返回,参数说明文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2

​ 主要从服务器接回来的参数就是我用红框圈起来的参数,而用大括号标书的参数就是模拟生成签名算法官方上都有给出

  1. 这里面就用到我刚才说到的广播了,返回的结果都会返回到WXPayEntryActivity中,这里面我使用了动态注册广播
@Override
	public void onResp(BaseResp resp) {
		Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
		if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
			Intent intent = new Intent();
			intent.setAction(PayActivity.DYNAMICACTION);
			intent.putExtra("wechatResult", resp.errCode);
			sendBroadcast(intent);
			finish();
		}
	}

​ 返回的结果在onResp方法中,resp.errCode就是返回的说明,这里面我用广播发送出去在支付的Activity中进行注册和监听.详细请看Demo

	private BroadcastReceiver dynamicReceiver = new BroadcastReceiver() {
		@Override
		public void onReceive(Context context, Intent intent) {
			if (intent.getAction().equals(DYNAMICACTION)) { // 动作检测
				int msg = intent.getIntExtra("wechatResult", 0);
				if (msg == 0) {
					Toast.makeText(context, "支付成功", Toast.LENGTH_LONG).show();
				} else {
					Toast.makeText(context, "支付失败", Toast.LENGTH_LONG).show();
				}
			}
		}
	};
	
	@Override
	protected void onStart() {
		super.onStart();
		dynamic_filter = new IntentFilter();
		dynamic_filter.addAction(DYNAMICACTION); // 添加动态广播的Action
		registerReceiver(dynamicReceiver, dynamic_filter); // 注册自定义动态广播消息
	}

​ 在onDestory()中进行取消监听

@Override
	protected void onDestroy() {
		super.onDestroy();
		unregisterReceiver(dynamicReceiver);
	}	

​ 整理完成。

说明

如果你想用Demo跑通的时候一定要替换包名还有一些参数的添加

1.最重要的 参数信息一定要正确和服务器的人员进行确认和沟通,否则会出现签名不正确的错误

​ // appid 微信分配的公众账号ID

​ // 商户号 微信分配的公众账号ID

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

2.运行Demo的时候一定要注意包名的是否和你申请时候的包名是否是一致的

3.订单号不能重复使用,否则只能支付一次

4.因为微信支付的钱数 是不能有小数点的,并且会给钱数缩小100(Demo中有说明)

5.这里面一定要用正式的签名文件,就是你申请的时候所传的签名文件

参考

Android快速实现微信支付

Android 接入微信支付宝支付

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].