bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

java微信掃碼支付代碼,h5掃碼微信支付寶支付

用Java怎么實(shí)現(xiàn)微信支付?

具體方法步驟:

屯留ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

一、準(zhǔn)備階段:已認(rèn)證微信號,且通過微信支付認(rèn)證,這個可以看微信文檔,很詳細(xì),這里就不再重復(fù)。

二、配置授權(quán)目錄,官方推薦使用https類型的url,不知道http能不能行,個人也推薦使用https的保證不會錯。

配置授權(quán)域名

三、微信支付二次開發(fā)所需要的參數(shù):

APP_ID,APP_KEY,PARTNER,PARTNER_KEY(AppSecret)

APP_ID和PARTNER_KEY(AppSecret)

PARTNER

APP_KEY(自行設(shè)置32位字符)

四、具體編程

1、通過頁面跳轉(zhuǎn)到確認(rèn)支付頁面,其中的redirect_uri必須是配置授權(quán)目錄下的。

2、獲取到openid,再經(jīng)服務(wù)器向微信請求獲取prepay_id,封裝字段并進(jìn)行簽名后通過jsapi調(diào)起微信支付

3、測試結(jié)果

? ?

怎么用java調(diào)用微信支付接口

java調(diào)用微信支付接口方法:

RequestHandler requestHandler = new RequestHandler(super.getRequest(),super.getResponse());

//獲取token //兩小時內(nèi)有效,兩小時后重新獲取

Token = requestHandler.GetToken();

//更新token 到應(yīng)用中

requestHandler.getTokenReal();

System.out.println("微信支付獲取token=======================:" +Token);

//requestHandler 初始化

requestHandler.init();

requestHandler.init(appid,appsecret, appkey,partnerkey, key);

// --------------------------------本地系統(tǒng)生成訂單-------------------------------------

// 設(shè)置package訂單參數(shù)

SortedMapString, String packageParams = new TreeMapString, String();

packageParams.put("bank_type", "WX"); // 支付類型

packageParams.put("body", "xxxx"); // 商品描述

packageParams.put("fee_type", "1"); // 銀行幣種

packageParams.put("input_charset", "UTF-8"); // 字符集

packageParams.put("notify_url", ""); // 通知地址 這里的通知地址使用外網(wǎng)地址測試,注意80端口是否打開。

packageParams.put("out_trade_no", no); // 商戶訂單號

packageParams.put("partner", partenerid); // 設(shè)置商戶號

packageParams.put("spbill_create_ip", super.getRequest().getRemoteHost()); // 訂單生成的機(jī)器IP,指用戶瀏覽器端IP

packageParams.put("total_fee", String.valueOf(rstotal)); // 商品總金額,以分為單位

// 設(shè)置支付參數(shù)

SortedMapString, String signParams = new TreeMapString, String();

signParams.put("appid", appid);

signParams.put("noncestr", noncestr);

signParams.put("traceid", PropertiesUtils.getOrderNO());

signParams.put("timestamp", timestamp);

signParams.put("package", packageValue);

signParams.put("appkey", this.appkey);

// 生成支付簽名,要采用URLENCODER的原始值進(jìn)行SHA1算法!

String sign ="";

try {

sign = Sha1Util.createSHA1Sign(signParams);

} catch (Exception e) {

e.printStackTrace();

}

// 增加非參與簽名的額外參數(shù)

signParams.put("sign_method", "sha1");

signParams.put("app_signature", sign);

// api支付拼包結(jié)束------------------------------------

//獲取prepayid

String prepayid = requestHandler.sendPrepay(signParams);

System.out.println("prepayid :" + prepayid);

// --------------------------------生成完成---------------------------------------------

//生成預(yù)付快訂單完成,返回給android,ios 掉起微信所需要的參數(shù)。

SortedMapString, String payParams = new TreeMapString, String();

payParams.put("appid", appid);

payParams.put("noncestr", noncestr);

payParams.put("package", "Sign=WXPay");

payParams.put("partnerid", partenerid);

payParams.put("prepayid", prepayid);

payParams.put("appkey", this.appkey);

//這里除1000 是因?yàn)閰?shù)長度限制。

int time = (int) (System.currentTimeMillis() / 1000);

payParams.put("timestamp",String.valueOf(time));

System.out.println("timestamp:" + time);

//簽名

String paysign ="";

try {

paysign = Sha1Util.createSHA1Sign(payParams);

} catch (Exception e) {

e.printStackTrace();

}

payParams.put("sign", paysign);

//拼json 數(shù)據(jù)返回給客戶端

BasicDBObject backObject = new BasicDBObject();

backObject.put("appid", appid);

backObject.put("noncestr", payParams.get("noncestr"));

backObject.put("package", "Sign=WXPay");

backObject.put("partnerid", payParams.get("partnerid"));

backObject.put("prepayid", payParams.get("prepayid"));

backObject.put("appkey", this.appkey);

backObject.put("timestamp",payParams.get("timestamp"));

backObject.put("sign",payParams.get("sign"));

String backstr = dataObject.toString();

System.out.println("backstr:" + backstr);

return backstr;

====================到此為止,預(yù)付款訂單已生成,并且已返回客戶端====================

//坐等微信服務(wù)器通知,通知的地址就是生成預(yù)付款訂單的notify_url

ResponseHandler resHandler = new ResponseHandler(request, response);

resHandler.setKey(partnerkey);

//創(chuàng)建請求對象

//RequestHandler queryReq = new RequestHandler(request, response);

//queryReq.init();

if (resHandler.isTenpaySign() == true) {

//商戶訂單號

String out_trade_no = resHandler.getParameter("out_trade_no");

System.out.println("out_trade_no:" + out_trade_no);

//財(cái)付通訂單號

String transaction_id = resHandler.getParameter("transaction_id");

System.out.println("transaction_id:" + transaction_id);

//金額,以分為單位

String total_fee = resHandler.getParameter("total_fee");

//如果有使用折扣券,discount有值,total_fee+discount=原請求的total_fee

String discount = resHandler.getParameter("discount");

//支付結(jié)果

String trade_state = resHandler.getParameter("trade_state");

//判斷簽名及結(jié)果

if ("0".equals(trade_state)) {

//------------------------------

//即時到賬處理業(yè)務(wù)開始

//------------------------------

System.out.println("----------------業(yè)務(wù)邏輯執(zhí)行-----------------");

//——請根據(jù)您的業(yè)務(wù)邏輯來編寫程序(以上代碼僅作參考)——

System.out.println("----------------業(yè)務(wù)邏輯執(zhí)行完畢-----------------");

System.out.println("success"); // 請不要修改或刪除

System.out.println("即時到賬支付成功");

//給財(cái)付通系統(tǒng)發(fā)送成功信息,財(cái)付通系統(tǒng)收到此結(jié)果后不再進(jìn)行后續(xù)通知

resHandler.sendToCFT("success");

//給微信服務(wù)器返回success 否則30分鐘通知8次

return "success";

}else{

System.out.println("通知簽名驗(yàn)證失敗");

resHandler.sendToCFT("fail");

response.setCharacterEncoding("utf-8");

}

}else {

System.out.println("fail -Md5 failed");

微信移動支付時用官方給的例子嗎

微信支付jsapi(java版),具體代碼如下:

代碼太多,更多代碼請?jiān)L問

1.?項(xiàng)目使用springmvc?restful風(fēng)格的,需要用到j(luò)ar包請自行下載

2.?整個項(xiàng)目只需要修改com.tenpay.configure.WxPayConfig中的配置信息就行。

//?appid

public?static?String?APP_ID?=?"公眾id";

//?JSAPI接口中獲取openid,審核后在公眾平臺開啟開發(fā)模式后可查看

public?static?String?APP_SECRET?=?"公眾號中的秘鑰";

//?受理商ID,身份標(biāo)識

public?static?String?MCH_ID?=?"商戶id";

//?商戶支付密鑰Key,裝完整數(shù)后,配置得到。32位長度

public?static?String?KEY?=?"商戶平臺中配置證書,設(shè)置的秘鑰";

//?異步回調(diào)地址

public?static?String?NOTIFY_URL?=?"支付成功后的回調(diào)action";

public?static?String?CHARTSET?=?"UTF-8";

//?加密方式

public?static?String?SIGN_TYPE?=?"MD5";

//?redirect_uri,微信授權(quán)重定向地址

public?static?String?REDIRECT_URI;

static?{

try?{

REDIRECT_URI?=?URLEncoder.encode("微信授權(quán)成功后重定向的action",?CHARTSET);

}?catch?(UnsupportedEncodingException?e)?{

e.printStackTrace();

}

}

3.?項(xiàng)目核心類com.tenpay.action.WxPayAction

pay函數(shù):支付前準(zhǔn)備函數(shù),從數(shù)據(jù)庫獲取訂單號,查詢訂單金額,訂單描述、openid、prepay_id等等。

notify函數(shù):支付成功后異步回調(diào)函數(shù)。

一、新建基于springMVC框架的javaweb項(xiàng)目名字為wxPay

二、java代碼實(shí)現(xiàn)

2.1?com.tenpay.action.WxPayAction代碼

package?com.tenpay.action;

import?java.io.ByteArrayOutputStream;

import?java.io.IOException;

import?java.io.InputStream;

import?java.io.UnsupportedEncodingException;

import?java.util.Map;

import?java.util.SortedMap;

import?java.util.TreeMap;

import?javax.servlet.http.HttpServletRequest;

import?javax.servlet.http.HttpServletResponse;

import?org.jdom2.JDOMException;

import?org.springframework.stereotype.Controller;

import?org.springframework.web.bind.annotation.RequestMapping;

import?com.tenpay.RequestHandler;

import?com.tenpay.configure.WxPayConfig;

import?com.tenpay.service.ServiceUtil;

import?com.tenpay.util.MD5Util;

import?com.tenpay.util.Sha1Util;

import?com.tenpay.util.XMLUtil;

import?net.sf.json.JSONObject;

/*******************************************************************************

*?b類名:?WxPayAction.java/b?br/

*?功能:微信支付,調(diào)用jsapibr/

*?日期:br/

*?

*?@author?V型知識庫?

*?@version?1.0

*?

******************************************************************************/

@Controller

@RequestMapping("/v_3")

public?class?WxPayAction?{

/**

*?微信客戶端授權(quán)成功后根據(jù)redirect_uri參數(shù)調(diào)整到pay接口,去準(zhǔn)備支付前信息接口

*?@param?request

*?@param?response

*?@return

*?@throws?Exception

*/

@RequestMapping("pay")

public?String?order(HttpServletRequest?request,?HttpServletResponse?response)?throws?Exception?{

/**

*?第一步:用戶同意授權(quán),根據(jù)參數(shù),獲取code

*?授權(quán)成功后返回的授權(quán)碼,參考:

*/

String?code?=?request.getParameter("code");

String?state?=?request.getParameter("state");

//?state可以為任何含義,根據(jù)你前端需求,這里暫時叫商品id

//?授權(quán)碼、商品id

System.out.println("code="?+?code?+?",state="?+?state);

/**

*?第二步:通過code換取網(wǎng)頁授權(quán)access_token

*?根據(jù)授權(quán)碼code獲取access_token,參考:

*/

//?下面就到了獲取openid,這個代表用戶id.

//?獲取openID

String?openid?=?ServiceUtil.getOpenId(code);

//?生成隨機(jī)字符串

String?noncestr?=?Sha1Util.getNonceStr();

//?生成1970年到現(xiàn)在的秒數(shù).

String?timestamp?=?Sha1Util.getTimeStamp();

//?訂單號,自定義生成規(guī)則,只要全局唯一就OK

String?out_trade_no?=?"NO"?+?System.currentTimeMillis()?+?"0001";

//?訂單金額,應(yīng)該是根據(jù)state(商品id)從數(shù)據(jù)庫中查詢出來

String?order_price?=?String.valueOf(1);

//?商品描述,應(yīng)該是根據(jù)state(商品id)從數(shù)據(jù)庫中查詢出來

String?body?=?"商品描述,測試....";

/**

*?第三步:統(tǒng)一下單接口

*?需要第二步生成的openid,參考:

*/

RequestHandler?reqHandler?=?new?RequestHandler(request,?response);

//?初始化?RequestHandler?類可以在微信的文檔中找到.還有相關(guān)工具類

reqHandler.init();

//?執(zhí)行統(tǒng)一下單接口?獲得預(yù)支付id,一下是必填參數(shù)

//?微信分配的公眾賬號ID(企業(yè)號corpid即為此appId)

reqHandler.setParameter("appid",?WxPayConfig.APP_ID);?

//?微信支付分配的商戶號

reqHandler.setParameter("mch_id",?WxPayConfig.MCH_ID);?

//?終端設(shè)備號(門店號或收銀設(shè)備ID),注意:PC網(wǎng)頁或公眾號內(nèi)支付請傳"WEB"

reqHandler.setParameter("device_info",?"WEB");?

//?隨機(jī)字符串,不長于32位。推薦隨機(jī)數(shù)生成算法

reqHandler.setParameter("nonce_str",?noncestr);?

//?商品描述

reqHandler.setParameter("body",?body);?

//?商家訂單號

reqHandler.setParameter("out_trade_no",?out_trade_no);?

//?商品金額,以分為單位

reqHandler.setParameter("total_fee",?order_price);?

//?APP和網(wǎng)頁支付提交用戶端ip,Native支付填調(diào)用微信支付API的機(jī)器IP。

reqHandler.setParameter("spbill_create_ip",?"123.57.58.123");?

//?下面的notify_url是用戶支付成功后為微信調(diào)用的action?異步回調(diào).

reqHandler.setParameter("notify_url",?WxPayConfig.NOTIFY_URL);

//?交易類型,取值如下:JSAPI,NATIVE,APP,詳細(xì)說明見參數(shù)規(guī)定

reqHandler.setParameter("trade_type",?"JSAPI");

//?------------需要進(jìn)行用戶授權(quán)獲取用戶openid-------------

reqHandler.setParameter("openid",?openid);?//?這個必填.

/*

*?xmlappidwx2421b1c4370ec43b/appidattach支付測試/attachbody

*?JSAPI支付測試/bodymch_id10000100/mch_idnonce_str

*?1add1a30ac87aa2db72f57a2375d8fec/nonce_strnotify_url.

*?weixin.qq.com/pub_v2/pay/notify.v2.php/notify_urlopenid

*?oUpF8uMuAJO_M2pxb1Q9zNjWeS6o/openidout_trade_no1415659990/

*?out_trade_nospbill_create_ip14.23.150.211/spbill_create_ip

*?total_fee1/total_feetrade_typeJSAPI/trade_typesign

*?0CB01533B8C1EF103065174F50BCA001/sign/xml

*/

//?生成簽名,并且轉(zhuǎn)為xml

String?requestXml?=?reqHandler.getRequestXml();

System.out.println("requestXml:"?+?requestXml);

//?得到的預(yù)支付id

String?prepay_id?=?ServiceUtil.unifiedorder(requestXml);

SortedMapString,?String?params?=?new?TreeMapString,?String();

params.put("appId",?WxPayConfig.APP_ID);

params.put("timeStamp",?timestamp);

params.put("nonceStr",?noncestr);

params.put("package",?"prepay_id="?+?prepay_id);

params.put("signType",?"MD5");

System.out.println("params:"?+?JSONObject.fromObject(params).toString());

//?生成支付簽名,這個簽名?給?微信支付的調(diào)用使用

SortedMapObject,Object?signMap?=?new?TreeMapObject,Object();

signMap.put("appId",?WxPayConfig.APP_ID);?

signMap.put("timeStamp",?timestamp);

signMap.put("nonceStr",?noncestr);

signMap.put("package",?"prepay_id="?+?prepay_id);

signMap.put("signType",?"MD5");

//?微信支付簽名

String?paySign?=?MD5Util.createSign(signMap,?WxPayConfig.KEY);

System.out.println("PaySIGN:"?+?paySign);

//微信分配的公眾賬號ID(企業(yè)號corpid即為此appId)

request.setAttribute("appId",?WxPayConfig.APP_ID);

//?時間戳

request.setAttribute("timeStamp",?timestamp);?

//?隨機(jī)字符串

request.setAttribute("nonceStr",?noncestr);?

//?預(yù)支付id?,就這樣的格式

request.setAttribute("package",?"prepay_id="?+?prepay_id);

//?加密格式

request.setAttribute("signType",?WxPayConfig.SIGN_TYPE);?

//?微信支付簽名

request.setAttribute("paySign",?paySign);

return?"pay";

}

/**

*?異步返回

*/

@RequestMapping("notify")

public?String?notify(HttpServletRequest?request,?HttpServletResponse?response)?{

try?{

InputStream?inStream?=?request.getInputStream();

ByteArrayOutputStream?outSteam?=?new?ByteArrayOutputStream();

byte[]?buffer?=?new?byte[1024];

int?len?=?0;

while?((len?=?inStream.read(buffer))?!=?-1)?{

outSteam.write(buffer,?0,?len);

}

outSteam.close();

inStream.close();

String?resultStr?=?new?String(outSteam.toByteArray(),?WxPayConfig.CHARTSET);

MapString,?String?resultMap?=?XMLUtil.doXMLParse(resultStr);

System.out.println("微信回調(diào)結(jié)果:"?+?resultMap.toString());

String?result_code?=?resultMap.get("result_code");

String?is_subscribe?=?resultMap.get("is_subscribe");

String?out_trade_no?=?resultMap.get("out_trade_no");

String?transaction_id?=?resultMap.get("transaction_id");

String?sign?=?resultMap.get("sign");

String?time_end?=?resultMap.get("time_end");

String?bank_type?=?resultMap.get("bank_type");

String?return_code?=?resultMap.get("return_code");

//?簽名驗(yàn)證

//??????????GenericValue?userLogin?=?delegator.findOne("UserLogin",?UtilMisc.toMap("userLoginId",?"admin"),?false);

if?(return_code.equals("SUCCESS"))?{

//?此處就是你的邏輯代碼

//?修改數(shù)據(jù)庫支付狀態(tài)

}

request.setAttribute("out_trade_no",?out_trade_no);

//?通知微信.異步確認(rèn)成功.必寫.不然會一直通知后臺.八次之后就認(rèn)為交易失敗了.

response.getWriter().write(RequestHandler.setXML("SUCCESS",?""));

}?catch?(UnsupportedEncodingException?e)?{

e.printStackTrace();

}?catch?(IOException?e)?{

e.printStackTrace();

}?catch?(JDOMException?e)?{

e.printStackTrace();

}

return?"notify";

}

}

java微信支付掃碼支付怎樣生成二維碼

微信掃碼支付,有兩種模式,文檔中有介紹。第二種模式,微信接口會返回二維碼信息給我們。而第一種模式則需要我們自己去生成二維碼信息。會有些麻煩。尤其 是參數(shù)大小寫,還有簽名的問題,容易出錯。

總的來說第二種模式比第一種模式簡單。所有我采用的是第二種模式,比較通用。京東與攜程亦用的是第二種模式。

新聞名稱:java微信掃碼支付代碼,h5掃碼微信支付寶支付
地址分享:http://vcdvsql.cn/article14/heojge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站品牌網(wǎng)站設(shè)計(jì)用戶體驗(yàn)定制網(wǎng)站外貿(mào)網(wǎng)站建設(shè)虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)