微信&支付宝 APP支付小结

微信支付

  1. 先到微信开放平台注册帐号、经过开发者认证。php

  2. 建立应用,该应用也就是你的app,并提交审核。java

  3. 审核后,应用详情下面有接口信息->微信支付->申请开通,并填写申请微信支付的资料。json

  4. 审核经过后,商户将收到邮件通知,邮件中包含商户号和登陆密码,请牢记申请时填写的邮箱地址。api

  5. 此时能够输入你的商户号和登陆密码登陆微信支付平台,将可查看你建立的这个应用信息:里面能够查看和设置微信支付须要的api密钥,也能够查看到相应的appid和appsecret。微信

    另外你也能够看到你的其余应用,可是api密钥仍然是你建立的这个应用的,想要查看和修改其余应用的api密钥,须要使用建立其余应用获得的商户号和密码从新登陆以进行相应操做。app

注意:异步

  • 微信异步通知url不支持带参数的url,如异步通知地址写为http://xxxx.cn:8090/yyyy/weixinNotify.do?method=pay ,而实际将会向http://xxxx.cn:8090/yyyy/weixinNotify.do 这个地址发送异步通知。测试

  • 文档官方详细连接:pay.weixin.qq.com/wiki/doc/ap…微信支付

支付宝支付

  1. 先登陆支付宝企业帐户(b.alipay.com)。产品大全->APP支付->当即接入。url

  2. 完善资料,等待审核经过。

  3. 登陆支付宝开放平台(open.alipay.com)。开发者中心->建立支付应用 审核经过后便可。

  4. 点击app,查看app信息:里面能够查看和设置接口加签,设置应用公钥和支付宝公钥以及appid、appsecret。pid在服务市场->mapi网关产品密钥中查看。

注意:

  • 未上架App的支付接口应在b.alipay.com中进行申请,而且获得的是【移动支付】接口字样。不然应在open.alipay.com中进行申请,获得的是【自助签约-高级手机APP支付2.0 】接口字样。另外注意,全部应用的支付宝公钥都是同样的。

  • 因为之前是移动支付,如今新版叫作APP支付,所以之前的demo,参数生成等均不可用了,而如今生成APP支付订单信息,应使用以下代码:

//实例化客户端
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");

	//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
	AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();

	//SDK已经封装掉了公共参数,这里只须要传入业务参数。如下方法为sdk的model入参方式(model和biz_content同时存在的状况下取biz_content)。
	AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();

	model.setBody("我是测试数据");
	model.setSubject("App支付测试Java");
	model.setOutTradeNo(outtradeno);
	model.setTimeoutExpress("30m");
	model.setTotalAmount("0.01");
	model.setProductCode("QUICK_MSECURITY_PAY");

	request.setBizModel(model);
	request.setNotifyUrl("商户外网能够访问的异步地址");

	try {
	        //这里和普通的接口调用不一样,使用的是sdkExecute
	        AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);

	        //就是orderString 能够直接给客户端请求,无需再作处理。
	        System.out.println(response.getBody());
	    } catch (AlipayApiException e) {
	        e.printStackTrace();
	}
复制代码

同理,异步通知应使用:

//获取支付宝POST过来反馈信息
Map<String,String> params = new HashMap<String,String>();
Map requestParams = request.getParameterMap();

	for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
	    String name = (String) iter.next();
	    String[] values = (String[]) requestParams.get(name);
	    String valueStr = "";
	    for (int i = 0; i < values.length; i++) {
	        valueStr = (i == values.length - 1) ? valueStr + values[i]: valueStr + values[i] + ",";
		}
  	//乱码解决,这段代码在出现乱码时使用。
 	 //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
 	 params.put(name, valueStr);
	 }

	//切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
	//boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type)

	boolean flag = AlipaySignature.rsaCheckV1(params, alipaypublicKey, charset, "RSA")
复制代码
相关文章
相关标签/搜索