1.1)创建移动应用,填写一系列的应用信息之后提交平台审核,等待通过(这里忽略申请详情步骤)
1.2)通过审核之后,开通微信支付功能
如果你还未做发开者验证,这里首先要先认证你的开发者资格,也就是交三百软妹币,之后按照需求填写企业或者个体信息即可(这里不过多赘述)
---------------极度注意点----------------------------------------------------------------------------------------------------------------------------------------
1.3)这一步取决你接下是否可以唤起支付页面
应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值,例如DEMO中的package=“net.sourceforge.simcpux”。
应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串,绿色串即应用签名。签名工具下载地址。
获取MD5方式:
1.这里是微信官网提供的工具类,用于获取应用签名
2.keytool -v -list -keystore jks路径\文件名称.jks
上图的MD5就是微信需要的应用签名
根据JDK版本不同,有用户反馈这种方式获取不到MD5值,如下图,别急,看第三种方式。
3.找到AS工具,Gradle->app->Tasks->android->signingReport
在控制台可以找到你需要的MD5信息。
特别注意点,MD5值必须保证是全小写,并且没有“:”符号
2.下载SDK,把SDK放到项目的libs里面即可
2.1)统一下单,生成支付订单
/**
* 微信支付
*
* @param context
*/
public static void wechatPay(Context context, String appKey, String partnerId, String prepayId, String noncestr, String timeStamp, String sign) {
IWXAPI api = WXAPIFactory.createWXAPI(context, null);
PayReq request = new PayReq();
request.appId = appKey;//微信开放平台审核通过的应用APPID
request.partnerId = partnerId;//微信支付分配的商户号(服务端提供)
request.prepayId = prepayId;//微信返回的支付交易会话ID(服务端提供)
request.packageValue = "Sign=WXPay";//暂填写固定值Sign=WXPay
request.nonceStr = noncestr;//随机字符串,不长于32位。推荐随机
request.timeStamp = timeStamp;//时间戳,请见接口规则-参数规定
request.sign = sign;//签名(服务端提供)
api.registerApp(WECHAT_APPID);
api.sendReq(request);
}
2.2)监听支付过程
public class WXPayPamentResultActivity extend Activity implements IWXAPIEventHandler {
private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
@Bind(R.id.wechat_pay_text)
TextView wechatPayText;
private IWXAPI api;
private final String WECHAT_APP_ID = Constants.WECHAT_APP_ID;
private String messageStr;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wechat_pay);
ButterKnife.bind(this);
api = WXAPIFactory.createWXAPI(this, WECHAT_APP_ID);
api.registerApp(WECHAT_APP_ID);
api.handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
}
@Override
public void onReq(BaseReq req) {
}
@Override
public void onResp(BaseResp resp) {
switch (resp.getType()) {
case ConstantsAPI.COMMAND_PAY_BY_WX:
switch (resp.errCode) {
case 0://支付成功
messageStr = "支付成功";
break;
case -1://错误
messageStr = "支付失败,请重试";
break;
case -2://用户取消
messageStr = "支付取消";
break;
}
break;
}
wechatPayText.setText(messageStr);
Toast.makeText(this, messageStr, Toast.LENGTH_SHORT).show();
finish();
}
}
如果你的配置都没有问题,到这里也就完成支付流程了