app微信支付

来源:互联网 发布:艾瑞咨询 大数据 编辑:程序博客网 时间:2024/04/30 15:51

1) 支付流程

1、 首先是把该app注册到微信,

2、 发起一个线程生成支付订单。这里要注意金额的单位为分,只能为整数。
 3、把支付订单post到后台生成一个预支付订单,返回prepay_id(预支付回话标识)
 4、将参数再次签名传输给app发起支付,
 5、支付结果会在WXPayEntryActivity类里onResp函数中查看,当errCode为:0表示成功-1表示错误-2表示用户取消。

2) 第三方登录微信实现

è注册应用

private IWXAPI msgApi;
msgApi = WXAPIFactory.createWXAPI(this, null);
msgApi.registerApp(Constants.APP_ID);

è然后拉取微信到授权登陆界面
final SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "wxdemo";
msgApi.sendReq(req);

èWXEntryActivity中的onResp(BaseResp resp)方法中获取code:
String code = ((SendAuth.Resp) resp).code;//需要转换一下才可以
注意:要能回调到这个方法需要注册此activity
msgApi.handleIntent(getIntent(), this);

 

 

3) 阅读微信支付开发文档

èApp支付

   就是在移动端应用App中集成开放SDK调起微信支付模块完成支付的模式

è支付账户(申请支付方式)

   当在微信支付平台上申请支付方式后会受到相应的邮件在该邮件中主要是包含着4个参数,分别是appid,mch_id,key,secret;

Appid:标识当前我们在微信开发平台上创建应用的唯一标识

Mch_id(微信支付商户号)商户申请微信支付后有微信支付分配的商户收款账户

Key(Api密钥):

交易过程生成签名的密钥,仅保留在商户系统和微信支付后台,不会在网络中传播;

Secret(AppSecret):

AppSecretAPPID对应的接口密码,用于获取接口调用凭证access_token时使用。在微信支付中,先通过OAuth2.0接口获取用户openid,此openid用于微信内网页支付模式下单接口使用。在开发模式中获取AppSecret(成为开发者且帐号没有异常状态)。

4) App支付开发步骤

è申请应用

在微信中申请应用目的就是为了获取appid;

è注册Appid

先要引用微信支付的jar包;

其次就是在调用Api先要向微信进行注册Appid;

IWXAPI api = WXAPIFactory.createWXAPI($.getContext(),null);
api.registerApp(WXPayConfig.APP_ID);

这里的WXPayConfig,APP_ID就是表示的是当前该应用在微信中所注册的应用所申请的appid.

5) 调起支付

商户服务器生成支付订单,先调用统一下单API生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付;

PayReq req = newPayReq();
req.appId = jsonObject.getString("appid");
req.partnerId = jsonObject.getString("partnerid");
req.prepayId = jsonObject.getString("prepayid");
req.nonceStr = jsonObject.getString("noncestr");
req.timeStamp = jsonObject.getString("timestamp");
req.packageValue = jsonObject.getString("package");
req.sign = jsonObject.getString("sign");
api.sendReq(req);

首先调用的是微信支付的统一下单的Api,此时主要是为了生成prepay_id,当生成了preapay_id,此时就可以进行再次签名,生成了这个签名后,再传递给APP,此时在App中就进行调起支付。

è这个调起支付首先在APP端要先向服务器端发出请求,服务器端得到请求后,先不是进行的签名操作,而是进行的是生成prepay_id,得到了这个prepay_id后,判断如果所返回的result_codesuccess时,那么此时就进行签名操作,注意的是,上面的向服务器传递参数,是为了在服务器中生成预付单,当预付单生成成功时,此时就进行的是签名操作,并将所生成的json格式的数据传递给APP端,由APP端发起微信支付。

6) 支付结果回调

1)首先在我们的项目路径下创建一个wxapi目录,在该目录下,要创建WXPayEntryActivity类(包名和类名要都是这两个),因为当服务器端签名成功后,就会掉起支付界面,此时回调到APP端,首先执行的是WXPayEntryActivity类中的onResp()方法主要是处理的是服务器端所返回的是三种状态分别是0(success),-1failure),-2cancel;

0 0