java ios支付接口开发_微信支付接入(Android/IOS(swift)/Java后台)
创建 包名.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后台)相关推荐
- java 模板接口开发_微信公众平台 发送模板消息(Java接口开发)
前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西.今天先总结一下微信公众平台模板消息的发送.因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下. 微信公众平台技术 ...
- 微信支付接口怎么申请 微信支付接口申请教程
微信支付接口:点击进去 一直让大家翘首以盼的微信最核心的杀手锏--"微信支付"终于开放申请了!今天微信团队在官网发布消息,微信公众平台支付功能已正式开放申请,已开通公众号的 ...
- 公众号php支付接口开发,公众号支付接口的开发
这次给大家带来公众号支付接口的开发,公众号支付接口开发的注意事项有哪些,下面就是实战案例,一起来看一下. 公众号支付就是在微信里面的H5页面唤起微信支付,不用扫码即可付款的功能.做这个功能首先要明确的 ...
- java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...
这段时间把支付基本搞完了,因为做的过程中遇到许多问题,特地记录下来,同时方便其他java coder,废话少说,下面开始. 整体思路:在后台,根据参数创建支付宝客户端AlipayClient,发送参数 ...
- java微信支付必要参数_微信支付 开发账号体系各参数详解
商户在微信公众平台提交申请资料以及银行账户资料,资料审核通过并签约后,可以获得表6-4所示帐户(包含财付通的相关支付资金账户),用于公众帐号支付. 帐号及作用: appid :公众帐号身份的唯一标识. ...
- php微信支付参数动态配置,支付,微信开发_微信支付动态如何获取$jsApiParameters参数,支付,微信开发 - phpStudy...
微信支付动态如何获取$jsApiParameters参数 现在我们在做一个需要动态变换价格的微信支付页面,就是用户购买商品后,跳转到支付页面,但是可以选择几个不同的价格当中一个进行支付. 当跳到这个页 ...
- ios浏览器微信支付回调页面_微信支付:手机系统自带的浏览器,调用微信支付如何实现(非扫码)...
如果您是使用浏览器的移动网页进行支付,那就是调用微信H5支付,如果是使用APP客户端进行支付,那就要调用微信APP支付. H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使 ...
- java微信无感支付怎么开通_微信支付之无感支付
停车免密支付功能的开发 首先我们需要做的是申请微信商户号并开通微信代扣 场景图 前端功能开发: 车辆进场 车辆入场,停车场将用户车牌信息传给小程序.小程序根据车牌信息查询用户是否开通微信免密支付,将 ...
- java 微信支付成功回调_微信支付成功但并未走回调方法(小程序支付)
问题描述 项目采用: Spring Cloud + Boot + Gateway服务网关 + Consu 注册中心 在小程序发起微信支付后, 调用后台服务的发起微信预支付,通过预支付拿到的返回信息小程 ...
最新文章
- Asp.net中具体的日期格式化用法
- 机器学习的教训:5家公司分享的错误经验
- linux cron读哪个文件,linux crontab 文件位置和日志位置
- 【Linux】一步一步学Linux——less命令(40)
- c++如何将两个if函数合并_设计一个 add 函数
- redis linux工具安装,linux 安装redis缓存工具
- php和gps终端设备通讯,运输车辆GPS定位+语音对讲通讯方案
- Tensorflow官方文档学习理解 (一)
- 华为鸿蒙系统再公测,安卓再见!华为正式发布鸿蒙系统公测版!
- (转)60s快速分析Linux性能
- 图片不存放文件夹,直接存在数据库中,
- OpenCvSharp DnnSuperres图像超分辨率Demo测试
- 云桌面计算机被锁定如何解决,桌面布局已锁定怎么解除?电脑桌面便签布局锁定后怎么解除?...
- 参考文献标准格式总结
- ai人工智能电子计算机星际穿越,以智慧AI为眸,华为nova5系列带你来一场“星际穿越”...
- python 抢票程序_程序员硬核Python抢票教程”,帮你抢回家车票
- 测试空间与测试驱动接口设计 step to step
- 计算机网络协议有那些,计算机网络协议有哪些
- 谷歌浏览器-高德地图定位失败geolocation time out
- P1903 数颜色 (带修莫队)