gpt4 book ai didi

微信APP支付Java代码

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章微信APP支付Java代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例为大家分享了java微信APP支付代码,供大家参考,具体内容如下 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import java.io.IOException;
import java.io.UnsupportedEncodingException;
 
import java.util.Random;
 
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONML;
import org.json.JSONObject;
 
public class Test {
  private static final String appid = "wx0378bf81abfe3d26" ; //自己设置
  private static final int mch_id = 1252196606 ; //自己设置
  private static final String api_key = "b8b9c2bbe92d57cc38fde49745056167" ; //自己设置
  private static final String notify_url = "http://www.xxx.com/weixin_notify_url.jsp" ;//自己设置
  private static final String trade_type = "APP" ; //
 
  public static void main(String[] args) {
  postToWeChat( "5455545" , "test" , 0.01 );
  postToWeChat( "5455545" , "中文" , 0.01 ); //会失败
  }
 
  /**
  * 提交到微信
  *
  * @param out_trade_no
  *   自己系统的订单号
  * @param body
  *   标题
  * @param money
  *   金额
  * @return
  */
  private static JSONObject postToWeChat(String out_trade_no, String body, double money) {
  StringBuilder xml = new StringBuilder();
  String nonce_str = getRandomString( 32 );
  String ip = "127.0.0.1" ; // 客户端IP自己处理
  JSONObject jso = new JSONObject();
  String prepay_id = "" , sign = "" ;
  try {
  String weixinMoney = new java.text.DecimalFormat( "#" ).format(money * 100 ); // 微信是以分为单位的所以要乘以100
  xml.append( "appid=" ).append(appid).append( "&body=" ).append( new String(body.getBytes( "UTF-8" ), "utf-8" ));
  xml.append( "&mch_id=" ).append(mch_id).append( "&nonce_str=" ).append(nonce_str);
  xml.append( "¬ify_url=" ).append(notify_url).append( "&out_trade_no=" ).append(out_trade_no).append( "&spbill_create_ip=" ).append(ip);
  xml.append( "&total_fee=" ).append(weixinMoney).append( "&trade_type=" ).append(trade_type).append( "&key=" ).append(api_key);
  sign = new Util().MD5Purity(xml.toString()).toUpperCase(); // MD5加密签名加密类自己解决就不放上来了
  xml.delete( 0 , xml.length());
  xml.append( "<xml>" );
  xml.append( " <appid>" ).append(appid).append( "</appid>" );
  xml.append( " <body>" ).append(body).append( "</body>" );
  xml.append( " <mch_id>" ).append(mch_id).append( "</mch_id>" );
  xml.append( " <nonce_str>" ).append(nonce_str).append( "</nonce_str>" );
  xml.append( " <notify_url>" ).append(notify_url).append( "</notify_url>" );
  xml.append( " <out_trade_no>" ).append(out_trade_no).append( "</out_trade_no>" );
  xml.append( " <spbill_create_ip>" ).append(ip).append( "</spbill_create_ip>" );
  xml.append( " <total_fee>" ).append(weixinMoney).append( "</total_fee>" );
  xml.append( " <trade_type>" ).append(trade_type).append( "</trade_type>" );
  xml.append( " <sign>" ).append(sign).append( "</sign>" );
  xml.append( "</xml>" );
  HttpPost post = new HttpPost( "https://api.mch.weixin.qq.com/pay/unifiedorder" );
  StringEntity entity = new StringEntity(xml.toString(), "UTF-8" );
  entity.setContentEncoding( "utf-8" );
  entity.setContentType( "text/xml" );
  post.setEntity(entity);
  JSONArray childNodes = JSONML.toJSONObject(EntityUtils.toString( new DefaultHttpClient().execute(post).getEntity(), "utf-8" )).getJSONArray(
   "childNodes" );
  System.out.println(childNodes);
  int len = childNodes.length() - 1 ;
  for ( int i = len; i > - 1 ; i--) {
  JSONObject js = childNodes.getJSONObject(i);
  if (js.get( "tagName" ).equals( "prepay_id" )) {
   prepay_id = js.getJSONArray( "childNodes" ).getString( 0 );
   break ;
  }
  }
  } catch (UnsupportedEncodingException e) {
  e.printStackTrace();
  } catch (ParseException e) {
  e.printStackTrace();
  } catch (ClientProtocolException e) {
  e.printStackTrace();
  } catch (IOException e) {
  e.printStackTrace();
  }
  jso.put( "sign" , sign);
  jso.put( "appid" , appid);
  jso.put( "noncestr" , nonce_str);
  jso.put( "package" , "Sign=WXPay" );
  jso.put( "partnerid" , mch_id);
  jso.put( "prepayid" , prepay_id);
  jso.put( "timestamp" , System.currentTimeMillis());
  return jso;
  }
 
  /**
  * 表示生成字符串的长度
  *
  * @param length
  * @return
  */
  private static String getRandomString( int length) {
  String base = "abcdefghijklmnopqrstuvwxyz0123456789" ;
  Random random = new Random();
  StringBuffer sb = new StringBuffer();
  for ( int i = 0 ; i < length; i++) {
  int number = random.nextInt(base.length());
  sb.append(base.charAt(number));
  }
  return sb.toString();
  }
}

以上就是本文的全部内容,希望对大家学习java程序设计有所帮助.

最后此篇关于微信APP支付Java代码的文章就讲到这里了,如果你想了解更多关于微信APP支付Java代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com