博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 微信支付步骤
阅读量:4475 次
发布时间:2019-06-08

本文共 3147 字,大约阅读时间需要 10 分钟。

以前自己写过微信支付,今天让我用h5调用微信支付,结果还浪费了点时间,虽然时间不长。

1.导入jar包 。微信提供的jar包

2.写你的微信支付的代码,其实如果参数都有了就一段代码:

public void requestWXPay(Context context,OrderModel orderModel) {        IWXAPI api= WXAPIFactory.createWXAPI(context,orderModel.getAppid());//      boolean isPaySupported =api.getWXAppSupportAPI() >= Bui;//      if (!isPaySupported) {//          Toast.makeText(context, "你的手机微信不支持支付,请更新微信后重试", Toast.LENGTH_SHORT).show();//      }        PayReq payReq=new PayReq();        payReq.appId=orderModel.getAppid();        payReq.partnerId=orderModel.getMchid();        payReq.prepayId=orderModel.getPrepayId();        payReq.nonceStr=orderModel.getNonceStr();        payReq.timeStamp=orderModel.getTimestamp();        payReq.packageValue="Sign=WXPay";        payReq.sign=orderModel.getSign();        api.registerApp(orderModel.getAppid());        api.sendReq(payReq);    }

这里面orderModel 是你的后台给你的json数据。

3.解析gson的时间的时候要对时间进行特殊的处理:

Gson gson = new GsonBuilder()//        2013-09-14 16:45:29                        .setDateFormat("yyyy-MM-dd HH:mm:ss")//                .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")                        .create();

4.写一个你的微信入口

你的应用程序包名.wxapi
里面的activity:
注意:你的清单文件里面的配置要explode 为true,不然你的程序微信不能给你回调

package com.chinaCEB.cebActivity.wxapi;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import com.chinaCEB.cebActivity.R;import com.tencent.mm.sdk.modelbase.BaseReq;import com.tencent.mm.sdk.modelbase.BaseResp;import com.tencent.mm.sdk.openapi.IWXAPI;import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;import com.tencent.mm.sdk.openapi.WXAPIFactory;public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
public static IWXAPI api; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wxpay_entry); if (api==null) { api=WXAPIFactory.createWXAPI(this, "wx52f8500f7f6d98a7"); } api.handleIntent(getIntent(), this); } @Override protected void onNewIntent(Intent intent) { // TODO Auto-generated method stub super.onNewIntent(intent); setIntent(intent); api.handleIntent(intent, this); } @Override public void onReq(BaseReq baseReq) { } @Override public void onResp(BaseResp baseResp) { int a=baseResp.errCode; }}

5.签名 ,包名等问题:

Android stadiO 调试的时候要设置自己的正规的签名,不然不行。

注意:

如果返回-1
可能是因为签名,可能是你的账单什么的不是最新的。所以人家给你返回-1. -1验证失败不只是因为你的签名。很多原因都可以-1

你在微信后台配置的那些参数,就是签名和包名,就是微信校验你可不可以吊起支付的关键。签名就是微信给你的一个工具,然后生成的。做微信支付这个第三方插件这个事情,我做了一件很挫的事情。就是没有在详细设计的时候,消除风险。

项目快做完了,又说什么做不了。好失败的一次。自己想想都不能原谅自己。能不能做不是想当然。还忽略了一个问题,就是你的appid,能不能吊起跟你不同的订单号。
好搓。好搓。当初想第三方支付怎么做的,开始的想法是,人家可以做,我肯定也可以做。后来发现,第三方只是封装了一下,实际上还是不能绕过微信。

注意;Android 最好也好注册微信。这样就可以避免微信的缓存问题。微信的缓存问题是指: 同样的包名,你这次调用微信用的是不对的keystore,如果你不清理缓存,下次调用微信的时候,它就不再去服务器查询你的keystore是不是对的,尽管你可能换的是对的。

微信注册也就是:

final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);        // 将该app注册到微信        msgApi.registerApp(Constants.APP_ID);

这样就可以避免每次用错了签名,每次都要清理缓存。

转载于:https://www.cnblogs.com/caoxinyu/p/6647841.html

你可能感兴趣的文章
tomcat使用spring-loaded实现应用热部署
查看>>
boost1.53中的lock-free
查看>>
链表_leetcode203
查看>>
基于ajax 的 几个例子 session ,ajax 实现登录,验证码 ,实现ajax表单展示
查看>>
连接不上sql server服务器的解决方案
查看>>
【Java面试题】58 char型变量中能不能存贮一个中文汉字?为什么?
查看>>
C++ Primer 第六章 函数
查看>>
交互设计算法基础(3) - Quick Sort
查看>>
Ubuntu各种软件的安装
查看>>
java开发环境搭建-慕课网
查看>>
NOIP2015-D2T3运输计划
查看>>
Z :彻底了解指针数组,数组指针以及函数指针 [复
查看>>
2013年终总结
查看>>
Start to study Introduction to Algorithms
查看>>
AE常见接口之间的关系(较笼统)+arcgis常见概念
查看>>
正则表达式
查看>>
Mysql的DATE_FORMAT()日期格式转换
查看>>
SparkStreaming入门及例子
查看>>
Web应用增加struts2支持
查看>>
java程序——凯撒加密
查看>>