微信小程序-商户号转账到微信余额

使用条件

 1、商户号(或同主体其他非服务商商户号)已入驻90日

  2、截止今日回推30天,商户号(或同主体其他非服务商商户号)连续不间断保持有交易

  3、 登录微信支付商户平台-产品中心,开通企业付款。

需要去商户平台配置

  1,企业付款到零钱需要证书,需要下载证书

  2,需要设置支付白名单,可以是ip也可以是域名。

下面直接上代码了。

企业付款到零钱支付常量类,这里需要注意的是证书,证书的位置可以放在,如图所示,这个位置,这样就可以读取到了

 

支付常类,企业付款到零钱没有回调地址,可以不写。支付要用到,这里的配置这样写不太好,正确的写发是放在配置文件里面,然后去读配置文件,这里就先这样写了

package com.util;
/**
 * 支付常量类
 */

public class WXPayConstant {
	
	/**
	 * 小程序 appId
	 */
	public static final String APP_ID = "";
	/**
	 * 商户id
	 */
	public static final String MCH_ID = "";
	/**
	 * 支付密钥
	 */
	public static final String PAY_APP_SECRET = "";

	/**
	 * 支付回调地址
	 */
	public static final String PAY_NOTIFY_URL = "";
	
	/**
	 * 统一下单API接口链接
	 */
	public static final String PAY_URL = "https://api.mch.weixin.qq.com/pay/unifiedorder";
	/**
	 * 证书名字
	 */
	public static final String CLIENT_CERT_NAME = "cart/apiclient_cert.p12";

	/**
	 * 微信退款接口
	 */
	public static final String WEIXIN_REFUND_URL = "https://api.mch.weixin.qq.com/secapi/pay/refund";

}

 

 

业务处理类,退款需要2个参数,一个是appendid(openid),一个是money


	
	@Autowired
	private RedisTemplate<String, String> redisTemplate;
	
	public Object Presentation(String appendid, String money) {
		String key = WXPayConstant.PAY_APP_SECRET;
 
		// 1.0 拼凑企业支付需要的参数
		String appid = WXPayConstant.APP_ID; // 微信公众号的appid
		String mch_id = WXPayConstant.MCH_ID; // 商户号
		//String nonce_str = CreateRandomUtil.getRandom(20);// 随机字符串
		String nonce_str =CreateRandomUtil.getRandom(20);// 随机字符串
		String partner_trade_no="";
		synchronized (this) {
			 partner_trade_no = orderNo("T");// 商户订单号
		}
		String openid = appendid; // 支付给用户openid
		String check_name = "NO_CHECK"; // 是否验证真实姓名呢
		String re_user_name = "KOLO"; // 收款用户姓名(非必须)
		
		BigDecimal tmoney=new BigDecimal("100");
		BigDecimal newtmoney=new BigDecimal(money);
		money=newtmoney.multiply(tmoney).toString();
		
		Integer aaaaaaa= newtmoney.multiply(tmoney).intValue();
		String amount = aaaaaaa.toString(); // 企业付款金额,最少为100,单位为分
		
		String desc = "恭喜你,提现成功"; // 企业付款操作说明信息。必填。
		String spbill_create_ip = "127.0.0.1"; // 用户的ip地址
		// 2.0 生成map集合
	    SortedMap<Object,Object> packageParams = new TreeMap<Object,Object>();    
		//Map<String, String> packageParams = new HashMap<String, String>();
		packageParams.put("mch_appid", appid); // 微信公众号的appid
		packageParams.put("mchid", mch_id); // 商务号
		packageParams.put("nonce_str", nonce_str); // 随机生成后数字,保证安全性
		packageParams.put("partner_trade_no", partner_trade_no); // 生成商户订单号
		packageParams.put("openid", openid); // 支付给用户openid
		packageParams.put("check_name", check_name); // 是否验证真实姓名呢
		packageParams.put("re_user_name", re_user_name);// 收款用户姓名
		packageParams.put("amount", amount); // 企业付款金额,单位为分
		packageParams.put("desc", desc); // 企业付款操作说明信息。必填。
		packageParams.put("spbill_create_ip", spbill_create_ip); // 调用接口的机器Ip地址
 
		try {
            //3.0 签名
		    String sign = XMLUtil.createSign("UTF-8", packageParams,key);  //获取签名  
			packageParams.put("sign", sign);
			// 5.0将当前的map结合转化成xml格式
			//String xml = WXPayUtil.mapToXml(packageParams);
			String xml = XMLUtil.getRequestXml(packagePar
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值