위챗 JSSDK 결제
1 var appId,timeStamp,nonceStr,package,signType,paySign;
2 function goumai(){
3 $.confirm({
4 title: ' ',
5 text: '<div class="comfirm-tip"> ?div>',
6 onOK: function () {
7 $('#rechargeHalf').removeClass('weui-popup__container--visible');
8 $('#rechargeHalf').hide();
9 var price = ($("#monid").text() * 100).toFixed(0);
10 mui.ajax(wxshop.serverUrl+"/wxUserCenter/gotozhifu",{
11 type:'post',
12 data:{
13 code:wxshop.getUrlParam("code"),
14 price:price,
15 },
16 dataType:'json',
17 success:function(data){
18 if(data.ret == 1){
19 appId=data.payMap.appId;
20 timeStamp=data.payMap.timeStamp;
21 nonceStr=data.payMap.nonceStr;
22 package=data.payMap.package;
23 signType=data.payMap.signType;
24 paySign=data.payMap.paySign;
25 callpay();
26 }
27 if(data.ret == 2){
28 wxshop.getOpenId(data.appid);
29 return;
30 }
31 if(data.ret == 0){
32 alert(data.msg);
33 }
34 }
35 });
36 },
37 onCancel: function () {
38 $('#rechargeHalf').removeClass('weui-popup__container--visible');
39 $('#rechargeHalf').hide();
40 }
41 });
42 function callpay(){
43 if (typeof WeixinJSBridge == "undefined"){
44 if( document.addEventListener ){
45 document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
46 }else if (document.attachEvent){
47 document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
48 document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
49 }
50 }else{
51 onBridgeReady();
52 }
53 }
54 function onBridgeReady(){
55 WeixinJSBridge.invoke( 'getBrandWCPayRequest', {
56 "appId":appId, // ,
57 "timeStamp":timeStamp, // , 1970
58 "nonceStr":nonceStr, //
59 "package":package,
60 "signType":signType, // :
61 "paySign":paySign //
62 },
63 function(res){
64 if(res.err_msg == "get_brand_wcpay_request:ok" ) {
65 console.log(' ');
66 }else if(res.err_msg == "get_brand_wcpay_request:cancel"){
67 console.log(' ');
68 }else if(res.err_msg == "get_brand_wcpay_request:fail"){
69 console.log(' ');
70 WeixinJSBridge.call('closeWindow');
71 }
72 });
73 }
74}
1 public class PayUtil {
2
3 /**
4 * jssdk
5 * @param request
6 * @param response
7 * @param fee
8 * @return
9 */
10 public static Map pay(HttpServletRequest request, HttpServletResponse response, String fee) {
11 Map preData = new HashMap();
12 Map payMap = new HashMap();
13 try {
14 String openid = null;
15 WsMember member = WsUtils.getMember(request, response);
16 if (member != null) {
17 openid = member.getOpenId();
18 }
19 WxAccount account = WsUtils.getAccount();
20 preData.put("appid", account.getAccountAppid());
21 preData.put("mch_id", account.getMchId());
22 preData.put("nonce_str", WXPayUtil.generateNonceStr());
23 String body = utf8Utils.toUTF8(" ");
24 preData.put("body", body);
25 Random random = new Random();
26 String out_trade_no = "";
27 for (int i = 0; i < 30; i++) {
28 out_trade_no += random.nextInt(10);
29 }
30 // preData.put("out_trade_no", WXPayUtil.generateNonceStr());
31 preData.put("total_fee", fee);
32 preData.put("spbill_create_ip", request.getLocalAddr());
33 preData.put("notify_url", "xxx.com/bpphone/index.html");
34 preData.put("openid", openid);
35 preData.put("trade_type", "JSAPI");
36 String sign = WXPayUtil.generateSignature(preData, account.getPayKey());
37 preData.put("sign", sign);
38 String xml = WXPayUtil.mapToXml(preData);
39 String unifiedorder_url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
40 String xmlStr = httpUtils.post(unifiedorder_url, xml);
41 System.out.println("xmlStr============="+xmlStr);
42 String prepay_id = "";
43 if (xmlStr.indexOf("SUCCESS") != -1) {
44 Map map = WXPayUtil.xmlToMap(xmlStr);
45 prepay_id = (String) map.get("prepay_id");
46 }
47 payMap.put("appId", account.getAccountAppid());
48 payMap.put("timeStamp", WXPayUtil.getCurrentTimestamp() + "");
49 payMap.put("nonceStr", WXPayUtil.generateNonceStr());
50 payMap.put("package", "prepay_id=" + prepay_id);
51 payMap.put("signType", "MD5");
52 String paySign = WXPayUtil.generateSignature(payMap, account.getPayKey());
53 payMap.put("paySign", paySign);
54 } catch (Exception e) {
55 payMap.put("ret", InterConstant.RET_WX);
56 payMap.put("appid", WsUtils.getAccount().getAccountAppid());
57 e.printStackTrace();
58 }
59 return payMap;
60 }
61 }
62 }
다음으로 전송:https://www.cnblogs.com/3b2414/p/10820347.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.