1.第一步去微信开放平台注册账号,填写相关资料提交审核,审核之后将获得商户账号,MIC_CH(商户号)和APP_KEY(APP秘钥)这两个参数要在资料审核通过之后获得,审核通过后会以邮件的方式把商户号好登录密码发送到你的邮箱里;APP_ID在微信开放平台创建应用之后的时候获得,支付功能有这三个参数足以。
注意:商户登录点击下图所示入口,别搞错了
2.开始集成准备工作:
(1)APP_ID获得方式:
在微信开放平台创建应用时获取。
(2)MCH_ID获取方式(如图):
(3)APP_KEY获取方式(在账户中心,api安全项设置,如图):
自己生成然后把秘钥设置到商户平台,生成秘钥工具:http://pan.baidu.com/s/1c2xIz5Y
(4)微信开放平台管理中心\应用详情最下面需要填上本应用的签名,签名生成工具:http://pan.baidu.com/s/1gfgHvqF (安装到手机输入包名即可,前提手机要装有你们开发的APP)。
3.经过以上步骤资源方面基本准备完成,下面是核心代码,即我们要作修改的代码:
(1)在文件名为Constants.java的文件里写入以上三个参数,如图:
(2)支付核心函数(仅此三个我们需要用到的):
//生成prepay_id
GetPrepayIdTask getPrepayId = new GetPrepayIdTask();
getPrepayId.execute();
//生成支付参数包括签名参数
genPayReq();
//调起微信支付
(3)以上就是我们需要调用的函数,下面提供一段需要修改的代码,如修改价格和支付成功回调地址,最后面有完整的项目地址:(把参数填入即可进行支付)sendPayReq();
private String genProductArgs() {
StringBuffer xml = new StringBuffer();
try {
String nonceStr = genNonceStr();
xml.append("</xml>");
List<NameValuePair> packageParams = new LinkedList<NameValuePair>();
//微信开放平台审核通过的应用APPID
packageParams.add(new BasicNameValuePair("appid", Constants.APP_ID));
//商品描述,参数目前不能写中文,不知道为啥
packageParams.add(new BasicNameValuePair("body", "weixin"));
//微信支付分配的商户号
packageParams.add(new BasicNameValuePair("mch_id", Constants.MCH_ID));
//随机字符串,这里可以传用户昵称或者用户id之类的,很重要,参数可以传到回调地址那里的,也就是你们的后台那边在接收支付结果的时候,可以接到此参数
packageParams.add(new BasicNameValuePair("nonce_str", nonceStr));
//通知后台充值成功
packageParams.add(new BasicNameValuePair("notify_url", "http://121.40.35.3/test"));
//商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号,自己生成
packageParams.add(new BasicNameValuePair("out_trade_no",genOutTradNo()));
//用户端实际ip
packageParams.add(new BasicNameValuePair("spbill_create_ip","127.0.0.1"));
//订单总金额,单位为分,详见支付金额
packageParams.add(new BasicNameValuePair("total_fee", "1"));
//支付类型,参考值:App支付
packageParams.add(new BasicNameValuePair("trade_type", "APP"));
//签名
String sign = genPackageSign(packageParams);
//
packageParams.add(new BasicNameValuePair("sign", sign));
//打包成xml格式
String xmlstring =toXml(packageParams);
return xmlstring;
} catch (Exception e) {
return null;
}
}
流程如下:
选好价格点击开通会员之后执行的步骤
(1)获得支付的价格
(2)获得Appid,mch_id,App_key
(3)执行如下代码,生成prepay_id,即生成预支付订单
GetPrepayIdTask getPrepayId = new GetPrepayIdTask();
getPrepayId.execute();
(4)执行如下代码,生成支付参数,价格之类的
genPayReq();
(5)唤起支付,到此完成,很简单吧
sendPayReq();
项目地址:http://pan.baidu.com/s/1mhPCoZI