Android-微信支付简单教程

来源:互联网 发布:软考初级程序员答案 编辑:程序博客网 时间:2024/06/08 01:20

  • Android-微信支付简单教程
    • Android微信支付集成步骤
      • 拷贝jar包入程序
      • 创建支付回调activity
      • 向微信注册APPID
      • 向服务器发送支付请求
      • 调起支付
      • 支付结果处理
    • 测试注意事项

Android-微信支付简单教程

本文限于微信支付已经申请成功且微信商户平台信息已经填写完毕使用。

Android微信支付集成步骤

1. 拷贝jar包入程序

jar包下载地址为 [jar包下载地址](https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1)![jar包下载图示](http://img.blog.csdn.net/20160516144824257)

2. 创建支付回调activity

在你的项目路径下创建wxapi文件夹(如AndroidManifest文件中的package="com.demo.wxchat",那么在wxchat文件夹下创建wxapi文件夹),在wxapi文件加下创建WXPayEntryActivity类。
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {    private IWXAPI wxAPI;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_wxpay_entry);        wxAPI = WXAPIFactory.createWXAPI(this,"微信开放平台注册的appid");        wxAPI.handleIntent(getIntent(), this);    }    @Override    public void onReq(BaseReq baseReq) {    }    @Override    protected void onResume() {        super.onResume();        LogUtils.d("进入WXPA1");    }     /**     * 微信支付的结果会在这里返回     */    @Override    public void onResp(BaseResp resp) {        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {            Log.d(TAG, "onPayFinish,errCode=" + resp.errCode);            AlertDialog.Builderbuilder = newAlertDialog.Builder(this);            builder.setTitle(R.string.app_tip);        }    }}

这一步需要注意的地方是,该activity需要暴漏出来,既在清单文件中

<activity            android:name=".wxapi.WXPayEntryActivity"            android:exported="true"></activity>

3. 向微信注册APPID

商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);// 将该app注册到微信msgApi.registerApp("微信开放平台注册的appid");

4. 向服务器发送支付请求

用户在APP选择需要购买的商品,APP将后台需要的参数传递给后台,后台调用统一下单API生成预付单,获取到prepay_id

5. 调起支付

调起支付主要代码如下:

PayReq request = new PayReq();request.appId =bean.getAppid();request.partnerId = bean.getPartnerid();request.prepayId = bean.getPrepayid();request.packageValue = bean.getPackageVaule;request.nonceStr = bean.getNoncestr();request.timeStamp = bean.getTimestamp();request.sign = bean.getSign();msgApi.sendReq(request);

调起支付需要的参数由后台传递过来,对于sign的签名以及加密方式有两种,一种是由后台做好加密传输给APP(如上述代码),个人觉得这种比较安全。另一种是后台不进行加密,sign的值由前台自己处理,既先将需要传输的字段以键的ASCLL码值从小到大排序并以&符号拼接,如key1=value1&key2=value2,将拼接后生成的字符串继续拼接API密钥,既key=API密钥(此密钥为微信商户后台设置的密钥,设置路径为微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置
),然后对最终的字符串进行MD5运算,将得到的字符串转为大写即可。

6. 支付结果处理

支付完成后,APP会自动跳入第二步所介绍的回调Activity,在onResp方法中通过resp来进行支付结果的处理。

测试注意事项

1.微信支付测试的时候需要进行打包签名,既测试包的签名应该与微信开放平台申请app中所填写的签名值一样,不然无法测试。
2.如发生掉起支付后直接跳转回调界面,不调用微信支付可查询一下签名是否正确,掉起支付传递的参数以及签名是否正确,appid是否设置正确等,笔者第一次接入微信支付时就曾因后台传错一个字段导致此种情况。

0 0