jsapi支付java_详解Java通过JsApi方式实现微信支付方法

本文详细介绍了如何使用Java实现微信JsApi支付。首先需要获取prepay_id,然后调用微信jsapi完成支付。文章提供了示例代码,包括前端调用示例和Java后端处理逻辑,涉及到UnifiedOrderReqData类的构建以及使用httpclient进行网络传输。
摘要由CSDN通过智能技术生成

本文讲解了Java如何实现JsApi方式的微信支付,代码内容详细,文章思路清晰,需要的朋友可以参考下

要使用JsApi进行微信支付,首先要从微信获得一个prepay_id,然后通过调用微信的jsapi完成支付,JS API的返回结果get_brand_wcpay_request:ok仅在用户成功完成支付时返回。由于前端交互复杂,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以统一处理为用户遇到错误或者主动放弃,不必细化区分。

示例代码如下:function onBridgeReady(){

WeixinJSBridge.invoke(

'getBrandWCPayRequest', {

"appId" : "wx2421b1c4370ec43b", //公众号名称,由商户传入

"timeStamp":" 1395712654", //时间戳,自1970年以来的秒数

"nonceStr" : "e61463f8efa94090b1f366cccfbbb444", //随机串

"package" : "u802345jgfjsdfgsdg888",

"signType" : "MD5", //微信签名方式:

"paySign" : "70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名

},

function(res){

if(res.err_msg == "get_brand_wcpay_request:ok" ) {} // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。

}

);

}

if (typeof WeixinJSBridge == "undefined"){

if( document.addEventListener ){

document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);

}else if (document.attachEvent){

document.attachEvent('WeixinJSBridgeReady', onBridgeReady);

document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);

}

}else{

onBridgeReady();

}

以上传入的参数package,即为prepay_id

下面讲的是获得参数来调用jsapi

我们调用JSAPI时,必须获得用户的openid,(trade_type=JSAPI,openid为必填参数。)

首先定义一个请求的对象:package com.unstoppedable.protocol;

import com.unstoppedable.common.Configure;

import com.unstoppedable.common.HttpService;

import com.unstoppedable.common.RandomStringGenerator;

import com.unstoppedable.common.Signature;

import java.lang.reflect.Field;

import java.util.HashMap;

import java.util.Map;

public class UnifiedOrderReqData {

private String appid;

private String mch_id;

private String device_info;

private String nonce_str;

private String sign;

private String body;

private String detail;

private String attach;

private String out_trade_no;

private String fee_type;

private int total_fee;

private String spbill_create_ip;

private String time_start;

private String time_expire;

private String goods_tag;

private String notify_url;

private String trade_type;

private String product_id;

private String limit_pay;

private String openid;

private UnifiedOrderReqData(UnifiedOrderReqDataBuilder builder) {

this.appid = builder.appid;

this.mch_id = builder.mch_id;

this.device_info = builder.device_info;

this.nonce_str = RandomStringGenerator.getRandomStringByLength(32);

this.body = builder.body;

this.detail = builder.detail;

this.attach = builder.attach;

this.out_trade_no = builder.out_trade_no;

this.fee_type = builder.fee_type;

this.total_fee = builder.total_fee;

this.spbill_create_ip = builder.spbill_create_ip;

this.time_start = builder.time_start;

this.time_expire = builder.time_expire;

this.goods_tag = builder.goods_tag;

this.notify_url = builder.notify_url;

this.trade_type = builde

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值