IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Java实现微信支付功能 -> 正文阅读

[移动开发]Java实现微信支付功能

微信实现支付功能与支付宝实现支付功能是相似的,接入前的准备工作,包括申请APPID、申请mchid、绑定APPID及mchid、配置API key、下载并配置商户证书等,具体可查看微信支付文档

接入前准备-APP支付 | 微信支付商户平台文档中心 (qq.com)icon-default.png?t=M5H6https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_5_1.shtml之后需要将APP与微信支付进行绑定,文档如下:

看一下微信支付的流程图:

微信支付的流程,同样与支付宝相似,?微信支付需要调微信生成预付单,然后由客户端发起真正的支付。

微信支付请求参数

Map<String, String> callWeChatPay = new HashMap<>();
// 调用微信统一下单接口
Map<String, String> requestPara = new HashMap<>();
// 公众账号ID
requestPara.put("appid", appid);
// 商户号
requestPara.put("mch_id", mch_id);
// 商品描述
requestPara.put("body", body);
requestPara.put("out_trade_no", tradeNo);
// 总金额
requestPara.put("total_fee", amount.intValue() + "");
// 终端IP
requestPara.put("spbill_create_ip", "127.0.0.1");
// 通知地址
requestPara.put("notify_url", notify_url);
// 交易类型
requestPara.put("trade_type", "APP");
//加密方式
requestPara.put("sign_type", FreePayUtils.MD5);
//标价币种
requestPara.put("fee_type", "CNY");
//订单失效时间
requestPara.put("time_expire", DateUtil.addMinute("", 10, "yyyyMMddHHmmss"));
//签名
String sign = WechatPaykey(微信支付秘钥生成);

//parseString2Xml
String xmlData = FreePayUtils.parseString2Xml(requestPara, sign);

//调用微信统一下单接口
HttpSupport httpSupport = HttpSupport.makeConnect();
String result = httpSupport.doPostBody("https://api.mch.weixin.qq.com/pay/unifiedorder", xmlData).result();

//xmlToMap
Map<String, String> returnMap = FreePayUtils.xmlToMap(result);
String returnCode = returnMap.get("return_code");
String resultCode = returnMap.get("result_code");

if ("SUCCESS".equals(returnCode) && "SUCCESS".equals(resultCode)) {
    String prepayId = returnMap.get("prepay_id");
    //应用ID
    callWeChatPay.put("appid", waistcoat.getWechatAppid());
    //商户号
    callWeChatPay.put("partnerid", waistcoat.getWechatMchid());
    //预支付交易会话ID
    callWeChatPay.put("prepayid", prepayId);
    //扩展字段
    callWeChatPay.put("package", "Sign=WXPay");
    callWeChatPay.put("noncestr", FreePayUtils.generateNonceStr());
    callWeChatPay.put("timestamp", FreePayUtils.getCurrentTimestamp() + "");
    // 签名
    String appSign = FreePayUtils.generateSignature(callWeChatPay, waistcoat.getWechatPaykey());
    callWeChatPay.put("sign", appSign);

注意,微信发起请求之后,返回的数据是XML格式的,如下

<xml>
  <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
  <attach><![CDATA[支付测试]]></attach>
  <bank_type><![CDATA[CFT]]></bank_type>
  <fee_type><![CDATA[CNY]]></fee_type>
  <is_subscribe><![CDATA[Y]]></is_subscribe>
  <mch_id><![CDATA[10000100]]></mch_id>
  <nonce_str><![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]></nonce_str>
  <openid><![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]></openid>
  <out_trade_no><![CDATA[1409811653]]></out_trade_no>
  <result_code><![CDATA[SUCCESS]]></result_code>
  <return_code><![CDATA[SUCCESS]]></return_code> 
  <sign><![CDATA[B552ED6B279343CB493C5DD0D78AB241]]></sign>
  <time_end><![CDATA[20140903131540]]></time_end>
  <total_fee>1</total_fee>
  <coupon_fee><![CDATA[10]]></coupon_fee>
  <coupon_count><![CDATA[1]]></coupon_count>
  <coupon_type><![CDATA[CASH]]></coupon_type>
  <coupon_id><![CDATA[10000]]></coupon_id>
  <coupon_fee><![CDATA[100]]></coupon_fee>
  <trade_type><![CDATA[JSAPI]]></trade_type>
  <transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id>
</xml>

所以拿到微信支付的结果之后,需要转换成自己需要的格式。

将这些数据返回给客户端,由客户端发起支付,就可以实现微信的支付功能。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:57:45  更:2022-07-03 10:59:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 2:54:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码