Java集成微信H5支付/支付宝手机网站支付

微信H5支付:

1,微信外部H5支付:

名词解释:就是在自己的H5网站页面里调用微信支付功能,注意,这里只能是在微信外部支付,在微信内打开网站是无法支付的,

要另外使用微信公众号支付

调用微信H5支付接口前提条件:

1,注册公众号并且通过认证

2,在公众号里申请微信支付,成为商户号

3,在商户平台里申请H5支付

4,在商户平台里的开发设置里设置好H5支付域名

以上4个条件都满足时,便可以调用微信H5支付接口

https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1

上面网址是微信支付API文档,先了解调用接口需要传递的参数,仅看必填项:

appid:微信分配的公众账号ID(企业号corpid即为此appId)

mch_id:微信支付分配的商户号

nonce_str:随机字符串,不长于32位

sign:签名

body:商品简单描述,该字段须严格按照规范传递

out_trade_no:商户系统内部的订单号,32个字符内、可包含字母

total_fee:订单总金额,单位为分

spbill_create_ip:必须传正确的用户端IP

notify_url:接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数

trade_type:H5支付的交易类型为MWEB

scene_info:场景信息,API文档上标注是必填项,但是我没用到,也成功了

以上就是我们要调用微信H5支付接口需要的参数,然后按照以下步骤处理参数:

先调用统一下单接口,获取微信跳转的支付页面URL地址

1,先生成一个随机的32位字符串

String nonceStr = UUID.randomUUID().toString().trim().replaceAll("-", "").toUpperCase();

2,生成签名sign

把参数封装成一个map,传递到以下方法中,得到一个排序后的字符串stringA:

Map<String, String> map = new HashMap<String, String>();
map.put("nonce_str", nonceStr);
map.put("appid", appId);
map.put("mch_id", mchId);
map.put("body", body);
map.put("out_trade_no", outTradeNo);
map.put("total_fee", totalFee);
map.put("spbill_create_ip", "113.87.162.45");
map.put("notify_url", notifyUrl);
map.put("trade_type", tradeType);
map.put("key", key);

注意:这个key是商户平台里面设置的一个秘钥key,要拼接到参数中

String stringA = UnicodeUtils.formatUrlMap(map, false, true);

/** 
     *  
     * 方法用途: 对所有传入参数按照字段名的Unicode码从小到大排序(字典序),并且生成url参数串<br> 
     * 实现步骤: <br> 
     *  
     * @param paraMap   要排序的Map对象 
     * @param urlEncode   是否需要URLENCODE 
     * @param keyToLower    是否需要将Key转换为全小写 
     *            true:key转化成小写,false:不转化 
     * @return 
     */  
    public static String formatUrlMap(Map<String, String> p
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java可以通过调用微信支付提供的API来实现微信H5支付。下面是实现微信H5支付的大致步骤: 1. 首先,需要在微信支付商户平台上注册一个商户账号,并获取到商户ID(mch_id)、商户密钥(key)、AppID和AppSecret等必要的凭证信息。 2. 在Java项目中引入微信支付的SDK,可以使用第三方库,例如微信官方提供的微信支付Java SDK、Alipay等。 3. 创建一个支付接口,接收前端传递的支付请求参数。参数中需要包含订单号、订单金额、支付描述等信息。 4. 通过调用微信支付SDK中的统一下单接口(unifiedorder),传递必要的参数,包括商户ID、商户密钥、AppID、订单号、订单金额等,获取预支付交易会话标识(prepay_id)和支付签名。 5. 将预支付交易会话标识(prepay_id)和支付签名返回给前端,前端可以通过支付签名调起微信支付页面。 6. 在前端页面中,通过调用微信JSAPI的支付接口,传递预支付交易会话标识(prepay_id)等参数,拉起微信支付页面。 7. 用户在微信支付页面输入密码并完成支付后,微信会自动将支付结果返回给前端。 8. 前端将支付结果通知给后台,后台可以通过调用微信支付SDK中的查询订单接口(orderquery),传递必要的参数,包括商户ID、商户密钥、AppID、订单号等,获取到订单的支付结果。 9. 根据支付结果,可以进行相应的逻辑处理,例如更新订单状态、生成支付成功的通知等。 需要注意的是,在实现过程中要保证支付接口的安全性,例如使用HTTPS协议、对参数进行签名验证等,以防止支付过程中的信息泄露和篡改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值