1:首先去微信平台和支付平台下载所需要的资源
2:微信客户端代码 事例:
private void wx() { new Thread(){ @Override public void run() { final String url=""; //请求自己服务地址 下单 // final JSONObject canshu=new JSONObject(); final Map<String, String> canshu = new HashMap<String, String>(); canshu.put("appid",""); //微信开放平台审核通过的应用APPID canshu.put("attach","1600804523"); //附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 canshu.put("body","canshu"); //商品描述交易字段格式根据不同的应用场景按照以下格式:APP——需传入应用市场上的APP名字-实际商品名称,天天爱消除-游戏充值。 canshu.put("mch_id","1600804523");// //微信支付分配的商户号 String nonce=getRandomString(32); canshu.put("nonce_str",nonce); //随机字符串,不长于32位。推荐随机数生成算法 Log.e("微信支付随机数",nonce); canshu.put("notify_url","http://62.234.172.46:8080/pay/zifubaoCallback/payCallback"); //接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。 canshu.put("out_trade_no","32546895648756541235"); //商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号 String ipv4= IPUtils.getIpAddress(pay.this); Log.e("ipv4",ipv4); canshu.put("spbill_create_ip",ipv4); //支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP canshu.put("total_fee","1"); //订单总金额,单位为分,详见支付金额 canshu.put("trade_type","APP"); //支付类型 // canshu.put("sign","0.01"); //签名,详见签名生成算法 Log.e("微信支付",url+canshu); String orderInfo= post.doPost(url,canshu)+""; Log.e("微信支付",orderInfo); try { JSONObject jsonObject=JSON.parseObject(orderInfo.toString()); String appid=jsonObject.getString("appid"); String mch_id=jsonObject.getString("mch_id"); String nonce_str=jsonObject.getString("nonce_str"); String sign=jsonObject.getString("sign"); String trade_type=jsonObject.getString("trade_type"); String prepay_id=jsonObject.getString("prepay_id"); WX_Pay pay = new WX_Pay(getContext()); //调用接口去吊起微信支付 //appid,商户号,预付款ID pay.pay(appid,mch_id,prepay_id,nonce_str,sign); } catch (Exception e) { e.printStackTrace(); } } }.start();
public class WX_Pay { public IWXAPI api; private PayReq req; public WX_Pay(Context context) { api = WXAPIFactory.createWXAPI(context, "appid",false); } /** * 向微信服务器发起的支付请求 */ public void pay(String appid,String partnerid,String prepayid,String nonce_str,String sign) { req = new PayReq(); req.appId = appid;//APPID req.partnerId = partnerid;// 商户号 req.prepayId = prepayid;// 预付款ID req.nonceStr = nonce_str;//随机数 req.timeStamp = getTimeStamp();//时间戳 req.packageValue = "Sign=WXPay";//固定值Sign=WXPay //String sign = getSign(); req.sign = sign;//签名 api.registerApp(appid); api.sendReq(req); } priv