创建 包名.wxapi.WXPayEntryActivity 文件,保证内容如下(WechartUtils下面会给出):

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import com.tencent.mm.opensdk.constants.ConstantsAPI;

import com.tencent.mm.opensdk.modelbase.BaseReq;

import com.tencent.mm.opensdk.modelbase.BaseResp;

import com.tencent.mm.opensdk.modelpay.PayResp;

import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {

public static final String APP_ID = "";//填入自己的appid

public static Back authBack;

public interface Back {

public void onFiled(String errorMsg);

public void onSuccess(String code, String state);

}

public static void registAuthBack(Back back) {

authBack = back;

}

public static void unregistAuthBack() {

authBack = null;

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

WechartUtils.getInstance(this, APP_ID)

.handleIntent(this, this);

}

@Override

public void onReq(BaseReq baseReq) {

Log.e("-----1", "baseReq=" + baseReq);

}

@Override

public void onResp(BaseResp baseResp) {

switch (baseResp.getType()) {

case ConstantsAPI.COMMAND_PAY_BY_WX:

if (authBack != null) {

// 0:成功; -1:错误; -2:用户取消;

PayResp payResp = (PayResp) baseResp;

if (payResp.errCode == 0) {

authBack.onSuccess(String.valueOf(payResp.errCode), payResp.prepayId);

} else {

authBack.onFiled(baseResp.errStr);

}

}

break;

}

finish();

}

@Override

protected void onDestroy() {

super.onDestroy();

WechartUtils.getInstance(this, APP_ID)

.unregisterApp(this);

}

}

创建WechartUtils文件用于公共处理支付

import android.app.Activity;

import android.util.Log;

import com.tencent.mm.opensdk.modelmsg.SendAuth;

import com.tencent.mm.opensdk.modelpay.PayReq;

import com.tencent.mm.opensdk.openapi.IWXAPI;

import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;

import com.tencent.mm.opensdk.openapi.WXAPIFactory;

import java.util.concurrent.ConcurrentHashMap;

public class WechartUtils {

private static final WechartUtils wechartUtils = new WechartUtils();

private static final ConcurrentHashMap apis = new ConcurrentHashMap<>();

private WechartUtils() {

}

public static WechartUtils getInstance(Activity activity, String appId) {

if (activity != null

&& !apis.containsKey(activity.getLocalClassName())) {

IWXAPI api = WXAPIFactory.createWXAPI(activity, appId, true);

api.registerApp(appId);

apis.put(activity.getLocalClassName(), api);

}

return wechartUtils;

}

public WechartUtils handleIntent(Activity activity

, IWXAPIEventHandler handler) {

apis.get(activity.getLocalClassName())

.handleIntent(activity.getIntent(), handler);

return this;

}

public void pay(Activity activity, String appId, String partnerId, String packageName

, String prepayId, String nonceStr, String timeStamp, String sign) {

if (activity == null) {

return;

}

PayReq req = new PayReq();

req.appId = appId;//appid

req.partnerId = partnerId;//微信支付分配的商户号

req.packageValue = packageName;//暂填写固定值Sign=WXPay

req.prepayId = prepayId;//微信返回的支付交易会话ID

req.nonceStr = nonceStr;//随机字符串

req.timeStamp = timeStamp;//时间戳

req.sign = sign;//签名

IWXAPI api = apis.get(activity.getLocalClassName());

if (api != null) {

api.sendReq(req);

}

}

public void login(Activity activity) {

if (activity == null) {

return;

}

SendAuth.Req req = new SendAuth.Req();

req.scope = "snsapi_userinfo";

req.state = String.valueOf(System.currentTimeMillis());

IWXAPI api = apis.get(activity.getLocalClassName());

if (api != null) {

api.sendReq(req);

}

}

public void unregisterApp(Activity activity) {

if (activity == null) {

return;

}

IWXAPI api = apis.get(activity.getLocalClassName());

if (api != null) {

api.unregisterApp();

apis.remove(activity.getLocalClassName());

}

}

}

在AndroidManifest.xml文件内注册activity

android:name=".wxapi.WXPayEntryActivity"

android:exported="true"

android:label="@string/app_name" />

创建好工具文件后可以开始准备开发了,这里贴出主要使用伪代码。

public class DemoActivity extends Activity {

private WechartUtils wechartUtils;

@Override

protected void onCreate(Bundle savedInstanceState) {

//初始化工具

wechartUtils = WechartUtils.getInstance(this, WXPayEntryActivity.APP_ID);

//注册微信支付回调

WXPayEntryActivity.registAuthBack(new WXPayEntryActivity.Back() {

@Override

public void onFiled(String errorMsg) {

//支付失败回调

}

@Override

public void onSuccess(String code, String state) {

//失败成功回调

}

});

}

//开始微信支付方法

private void startWechatPay() {

//去服务器获取签名信息 具体返回的信息可查看后面的后台开发

WXResponse response = getWXResponse();

//调用wechartUtils的pay方法调起微信支付。

wechartUtils.pay(this, response.appid, response.partnerid

, response.packageName, response.prepayid, response.noncestr

, response.timestamp, response.sign);

}

@Override

protected void onDestroy() {

//取消注册

wechartUtils.unregisterApp(this);

WXPayEntryActivity.unregistAuthBack();

super.onDestroy();

}

}

java ios支付接口开发_微信支付接入(Android/IOS(swift)/Java后台)相关推荐

  1. java 模板接口开发_微信公众平台 发送模板消息(Java接口开发)

    前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西.今天先总结一下微信公众平台模板消息的发送.因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下. 微信公众平台技术 ...

  2. 微信支付接口怎么申请 微信支付接口申请教程

     微信支付接口:点击进去 一直让大家翘首以盼的微信最核心的杀手锏--"微信支付"终于开放申请了!今天微信团队在官网发布消息,微信公众平台支付功能已正式开放申请,已开通公众号的 ...

  3. 公众号php支付接口开发,公众号支付接口的开发

    这次给大家带来公众号支付接口的开发,公众号支付接口开发的注意事项有哪些,下面就是实战案例,一起来看一下. 公众号支付就是在微信里面的H5页面唤起微信支付,不用扫码即可付款的功能.做这个功能首先要明确的 ...

  4. java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...

    这段时间把支付基本搞完了,因为做的过程中遇到许多问题,特地记录下来,同时方便其他java coder,废话少说,下面开始. 整体思路:在后台,根据参数创建支付宝客户端AlipayClient,发送参数 ...

  5. java微信支付必要参数_微信支付 开发账号体系各参数详解

    商户在微信公众平台提交申请资料以及银行账户资料,资料审核通过并签约后,可以获得表6-4所示帐户(包含财付通的相关支付资金账户),用于公众帐号支付. 帐号及作用: appid :公众帐号身份的唯一标识. ...

  6. php微信支付参数动态配置,支付,微信开发_微信支付动态如何获取$jsApiParameters参数,支付,微信开发 - phpStudy...

    微信支付动态如何获取$jsApiParameters参数 现在我们在做一个需要动态变换价格的微信支付页面,就是用户购买商品后,跳转到支付页面,但是可以选择几个不同的价格当中一个进行支付. 当跳到这个页 ...

  7. ios浏览器微信支付回调页面_微信支付:手机系统自带的浏览器,调用微信支付如何实现(非扫码)...

    如果您是使用浏览器的移动网页进行支付,那就是调用微信H5支付,如果是使用APP客户端进行支付,那就要调用微信APP支付. H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使 ...

  8. java微信无感支付怎么开通_微信支付之无感支付

    停车免密支付功能的开发  首先我们需要做的是申请微信商户号并开通微信代扣 场景图 前端功能开发: 车辆进场 车辆入场,停车场将用户车牌信息传给小程序.小程序根据车牌信息查询用户是否开通微信免密支付,将 ...

  9. java 微信支付成功回调_微信支付成功但并未走回调方法(小程序支付)

    问题描述 项目采用: Spring Cloud + Boot + Gateway服务网关 + Consu 注册中心 在小程序发起微信支付后, 调用后台服务的发起微信预支付,通过预支付拿到的返回信息小程 ...

最新文章

  1. Asp.net中具体的日期格式化用法
  2. 机器学习的教训:5家公司分享的错误经验
  3. linux cron读哪个文件,linux crontab 文件位置和日志位置
  4. 【Linux】一步一步学Linux——less命令(40)
  5. c++如何将两个if函数合并_设计一个 add 函数
  6. redis linux工具安装,linux 安装redis缓存工具
  7. php和gps终端设备通讯,运输车辆GPS定位+语音对讲通讯方案
  8. Tensorflow官方文档学习理解 (一)
  9. 华为鸿蒙系统再公测,安卓再见!华为正式发布鸿蒙系统公测版!
  10. (转)60s快速分析Linux性能
  11. 图片不存放文件夹,直接存在数据库中,
  12. OpenCvSharp DnnSuperres图像超分辨率Demo测试
  13. 云桌面计算机被锁定如何解决,桌面布局已锁定怎么解除?电脑桌面便签布局锁定后怎么解除?...
  14. 参考文献标准格式总结
  15. ai人工智能电子计算机星际穿越,以智慧AI为眸,华为nova5系列带你来一场“星际穿越”...
  16. python 抢票程序_程序员硬核Python抢票教程”,帮你抢回家车票
  17. 测试空间与测试驱动接口设计 step to step
  18. 计算机网络协议有那些,计算机网络协议有哪些
  19. 谷歌浏览器-高德地图定位失败geolocation time out
  20. P1903 数颜色 (带修莫队)

热门文章

  1. java 的lambda表达式
  2. 诊断Java中的内存泄露
  3. 南海有macbook吗?
  4. Python爬虫入门三之Urllib库的基本使用
  5. grails 环境找不到java_home
  6. C++ cctype定义的函数 - 学习笔记(7)
  7. Solaris 10 x86 上折腾Mono
  8. 断网与黑客无关 我来抖一抖暴风那点见不得人的猫腻
  9. random模块——生成伪随机数
  10. Uva1593 代码对齐