微信支付的集成


为便于观察,需要添加哪些到AS中,需要先导入DEMO工程到eclipse中

1.导入jar包



2.清单文件声明权限和activity

清单文件AndroidManifest.xml中声明权限和activity:

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

   <activity

   android:name="net.sourceforge.simcpux.wxapi.WXPayEntryActivity"

   android:exported="true"

   android:launchMode="singleTop"/>

 

注意上述声明的activity(WXPayEntryActivity)不在jar包中,所以我们需要从demo

拷贝WXPayEntryActivity.java文件放到我们工程中,包名要保持不变

 

3调用微信支付sdk

赋值后调用sendReq完成支付

/**调用微信支付*/

public void sendPayRequest() {

    PayReq req = new PayReq();

    req.appId = payInfo.getAppId();

    req.partnerId = payInfo.getPartnerId();

    req.prepayId = payInfo.getPrepayId();

    req.nonceStr = payInfo.getNonceStr();

    req.timeStamp = payInfo.getTimestamp();

    req.packageValue = payInfo.getPackageValue();

    req.sign = payInfo.getSign();

    // 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信

    //3.调用微信支付sdk支付方法

    api.sendReq(req);

}

4 处理支付结果

在net.sourceforge.simcpux.wxapi.WXPayEntryActivity.java类的onResp方法中处理支付结果:

注意上述类不是jar包中的,需要我们从demo中拷贝到自己项目中:

 

@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(resp.errCode + "");

        builder.show();

    }

}

示例代码如下:

public class MainActivity extends AppCompatActivity {

    private String url;
    public WeiBean payInfo;
    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	//本例子下面的url接口是微信Demo中给的url,引用是为了能运行,因为自己的应用审核可能不通过,你需要使用自己
	//公司通过审核应用的接口
	url = "http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=android";
	api = WXAPIFactory.createWXAPI(this, Constants.APP_ID);
    }


    public void weiPay(View view){
	RequestQueue queue = Volley.newRequestQueue(this);
	StringRequest request = new StringRequest(url, new Response.Listener<String>() {


	    @Override
	    public void onResponse(String s) {
		//解析数据,获取支付串码
		//先将返回的JSON字符串进行替换操作
		s = s.replace("package","packageValue");
		WeiBean weiBean = JSON.parseObject(s, WeiBean.class);
		//获取支付串码
		payInfo = weiBean;
		//调用第三方支付SDK的方法
		sendPayRequest();
	    }
	}, new Response.ErrorListener() {
	    @Override
	    public void onErrorResponse(VolleyError volleyError) {
		Log.e("volleyError",volleyError.toString());
	    }
	});

	queue.add(request);
    }

    /**调用微信支付*/
    public void sendPayRequest() {
	PayReq req = new PayReq();
	req.appId = payInfo.getAppid();
	req.partnerId = payInfo.getPartnerid();
	req.prepayId = payInfo.getPrepayid();
	req.nonceStr = payInfo.getNoncestr();
	req.timeStamp = payInfo.getTimestamp();
	req.packageValue = payInfo.getPackageValue();
	req.sign = payInfo.getSign();
	// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
	//3.调用微信支付sdk支付方法
	api.sendReq(req);
    }

}

注意,上面的Constant类是引用了微信DEMO的,一些布局文件自己去补充



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值