一:首先是申请微信支付的一系列号
这个方面不是太懂.具体申请流程不清楚.但是里边跟客户端有关联的是appid.还有包名和签名.
签名要确定使用公司签名,包名要提前设定好名字. 你写的程序包名和打包签名必须和申请是一致.否则就出现直接跳到回调结果页并返回-1;
注意:包名和签名是可以申请改的,但是生效会等一段时间.一般一个小时之内吧.
二:调用支付接口
客户端常用的方式是所有支付接口需要的数据都由服务器返回,不需要自己做任何处理.
1.调用支付接口一共需要7个参数,而且要先注册app到微信
//注册
IWXAPI msgApi = WXAPIFactory.createWXAPI(this, "wxaa07d565fae73295");
msgApi.registerApp("wxaa07d565fae73295");
//支付
PayReq request = new PayReq();
request.appId = "wxaa07d565fae73295";//写死 应用APPID
request.partnerId = "1321746201";//写死 微信支付商户号
request.prepayId= prepayid;//预支付交易会话ID
request.packageValue = "Sign=WXPay";//微信固定值 扩展字段
request.nonceStr= noncestr;//随机字符串
request.timeStamp= timestamp;//时间戳
request.sign= sign;//签名
msgApi.sendReq(request);
2.然后是回调界面
参照微信SDK Sample,在net.sourceforge.simcpux.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),
在WXPayEntryActivity类中实现onResp 函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,
判断返回错误码,如果支付成功则去后台查询支付结果再展示用户 实际支付结果。注意一定不能以客户端返回作为用户支付的结果,
应以服务器端的接收的支付通知或查询API返回的结果为准
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
private IWXAPI api;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pay_result);
api = WXAPIFactory.createWXAPI(this, "wxaa07d565fae73295");
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) {
Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("回调结果");
builder.setMessage(String.valueOf(resp.errCode));
builder.show();
}
}
}
注意这里的回调activity最好是辅助官方demo,然后做删除,修改.否则有可能出现能打开回调界面,但是没有返回值得情况
3.添加微信jar包.(这其实是第一步,之前忘了说)
4.修改清单文件.按照官方Demo修改.
5.对于官方demo的解释.
custom debug keystore中选
















