当前位置: 首页 > news >正文

深圳做网上商城网站wordpress+模板+国外

深圳做网上商城网站,wordpress+模板+国外,wordpress怎么解密密码,阜南网站建设公司点击蓝色字关注我们#xff01;一个努力中的公众号长的好看的人都关注了本文给大家讲解微信小程序支付全流程#xff0c;以及相关功能源代码#xff0c;项目不开放#xff0c;带来不便尽请谅解。小程序支付主要包含如下几步骤#xff0c;1.预下单-调用微信统一下单接口进行… 点击蓝色字关注我们一个努力中的公众号长的好看的人都关注了本文给大家讲解微信小程序支付全流程以及相关功能源代码项目不开放带来不便尽请谅解。小程序支付主要包含如下几步骤1.预下单-调用微信统一下单接口进行预下单。2.小程序拿到支付参数唤醒支付。3.支付成功后发起退款申请本文使用okHttpUtil进行接口交互 使用goole的gson与阿里的fastJson进行解析JsonObect使用封装的http工具类进行携带证书进行接口交互使用封装的工具类实现map转xml等。相关工具类代码过多所以在本文最后有下载方式下面是正文微信支付文档:  https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter9_1一.获取微信用户的openId用户登录小程序 通过授权得到微信code然后将微信code、秘钥、密文传递后端后端进行解密后 得到微信openId(前端也可以进行解密,但建议放后端)下面是获取openId的代码(java)//微信接口url https://api.weixin.qq.com/sns/jscode2session/** * 解析小程序登录数据获取参数* param code ---微信code * param encryptedData --- 加密参数* param iv --- 秘钥* return*/public Result getAuthByApplet(String code, String encryptedData,     String iv) { MapString, Object resultMap new HashMap(); try {log.debug(小程序获取unionId: code);//封装参数MapString, String params new HashMapString, String();//获取小程序的openId params.put(appid, appletId); //微信秘钥 params.put(secret, appletSecret);params.put(js_code, code);params.put(grant_type, authorization_code);//调用接口进行读取参数JsonObject retJson OkHttpUtils.doGetRetJson(appletOpenIdUrl, params);log.debug(retJson.toString());//如果获取到了openIdif(retJson.get(openid) ! null) {//获取会话密钥(session_key)String session_key retJson.get(session_key).getAsString();resultMap.put(session_key, session_key);resultMap.put(openId, retJson.get(openid).getAsString());}else{throw new Exception(code已失效,请重新获取);}return Result.ok(resultMap);} catch (Exception e) {log.error(e.getMessage(), e); throw new RuntimeException();}}得到openId后要进行业务保存因为小程序很多接口都依赖openId而且同一小程序下每个微信号的openId是一样的。二统一下单与小程序支付    通过业务系统的封装参数得到支付的商品信息价格业务订单后封装参数进行加密得到sign签名然后调用统一下单接口进行下单成功后返回小程序支付参数。(需要注意的是 微信预下单请求参数要求是xml格式全String类型)//微信预下单接口urlhttps://api.mch.weixin.qq.com/pay/unifiedorder /** * 微信支付-统一下单* param body --- 商品描述* param outTradeNo --- 业务系统订单号* param totalFee --- 支付金额* param spBillCreateIP ---支付人所在 * param openId --- 支付人的微信openId * return */Overridepublic MapString, String toPay(String body, String outTradeNo,              String totalFee, String spBillCreateIP, String openId) {try{MapString, String map new HashMap();       //封装支付必须参数SortedMapObject,Object params new TreeMapObject,Object(); //支付类型 String tradeType JSAPI;      //支付后回调地址      String notifyUrl ;String nonceStr RandomUtil.randomString(16);//小程序idparams.put(appid, appletId);//商户平台idparams.put(mch_id, mchId);//随机字符串params.put(nonce_str, nonceStr);//商品描述params.put(body, body);//商品订单号params.put(out_trade_no, outTradeNo);//价格的单位为分params.put(total_fee, totalFee);//支付ipparams.put(spbill_create_ip, spBillCreateIP);//异步回调apiparams.put(notify_url, notifyUrl);//JSAPI、h5调用params.put(trade_type, tradeType);//支付用户openidparams.put(openid, openId);String sign WxPaySignatureUtils.createSign(params, key);params.put(sign, sign);String requestXML WxPaySignatureUtils.getRequestXml(params);log.info(发送给微信的报文 requestXML);log.info(加密后的的签名字符串 sign);//调用微信接口String result OkHttpUtils.postXml(unifiedorder, requestXML);log.info(-------------------请求返回结果------------------);log.info(result);map WXPayUtil.xmlToMap(result);//如果返回有数据if(map ! null){//并且返回有signif(map.get(sign) ! null){return map;} }return map;}catch (Exception e) {log.error(e.getMessage(), e); throw new RuntimeException();} }接口请求成功后微信返回也是xml格式的报文需要将xml转为map或其他本文使用map接收参数预下单后微信会返回预付订单标识标识用于进支付//预付订单标识String prepayId resultMap.get(prepay_id);然后封装小程序支付 所需参数//签名类型默认为MD5String signType MD5;SortedMapObject,Object params new TreeMapObject,Object();params.put(appId, appletId);params.put(timeStamp, timestamp );params.put(timeStamp, timestamp );params.put(nonceStr, nonceStr);params.put(package, prepay_id prepayId);params.put(signType, signType);//生成签名String sign WxPaySignatureUtils.createSign(params, key);params.put(paySign, sign);将支付参数返回给小程序小程序通过组件 requestPayment 唤醒支付小程序支付代码如下:wx.requestPayment({      timeStamp:param.result.timeStamp,      nonceStr: param.result.nonceStr,      package: param.result.package,      signType:param.result.signType,      paySign: param.result.paySign,      success: function(res){        console.log(res);        wx.showToast({          title: 支付成功,          icon: success,          duration: 2000          });                },      fail: function(res) {        wx.showModal({          title:支付失败,          content:,          showCancel: false        })      }    })三: 退款小程序支付成功后可以通过支付订单号进行退款操作需要注意的是退款需要http携带商户证书进行支付这里图图已经封装好工具类只需要修改下证书的url就可以愉快使用了//微信退款使用的urlhttps://api.mch.weixin.qq.com/secapi/pay/refund/** * 微信支付-退款* param transaction_id ---微信支付订单* param out_refund_no --- 系统退款单号* param total_fee --- 订单总金额* param refund_fee --- 退款金额* return*/Overridepublic MapString, String refundToPay(String transaction_id, String out_refund_no, String out_trade_no, int total_fee, int refund_fee) {//定义返回参数MapString, String map new HashMap(); try{SortedMapObject,Object params new TreeMapObject,Object();String notifyUrl https://baidu.com;String nonceStr RandomUtil.randomString(16);//小程序idparams.put(appid, appletId);//商户平台idparams.put(mch_id, mchId);//随机字符串params.put(nonce_str, nonceStr);//系统订单号params.put(out_trade_no, out_trade_no);//微信订单号params.put(transaction_id, transaction_id);//系统退款单号params.put(out_refund_no, out_refund_no);//订单金额params.put(total_fee, total_fee);//退款金额params.put(refund_fee, refund_fee);//签名String sign WxPaySignatureUtils.createSign(params, key);params.put(sign, sign);//封装请求报文String requestXML WxPaySignatureUtils.getRequestXml(params);log.info(发送给微信的报文 requestXML);log.info(加密后的的签名字符串 sign);//调用微信接口String result WXPayUtil.doRefundRequest(mchId, refund, requestXML, certificateUrl);log.info(-------------------请求返回结果------------------);log.info(result); if(StrUtil.isNotEmpty(result)){map WXPayUtil.xmlToMap(result);//如果返回有数据if(map ! null){//并且返回有signif(map.get(sign) ! null){return map;} } }else{log.info(-------------------请求返回空结果------------------);}return map;}catch (Exception e) {log.error(e.getMessage(), e); throw new RuntimeException();}}本文中所使用到的工具类图图已经帮大家打包好了一份在百度网盘为防止百度网盘失效在图图的QQ群中也有一份。百度网盘下载链接链接https://pan.baidu.com/s/1YbMrvO3qK1rdmyYyET2xzw提取码ljv6本文先总结到此后面继续更新技术一些文章。大家一起加油鸭如果对您有帮助 请点个关注万分感谢                                          (QQ招聘群  710566091                                 微信招聘群 请加图图微信)
http://wiki.neutronadmin.com/news/327387/

相关文章:

  • 烟台网站建设诚信臻动传媒营销类网站建设
  • 中企做一个网站多少钱长沙网站制作哪
  • 云建站自动建站系统源码网站升级及政务新媒体建设方案
  • 徐州模板自助建站wordpress导航菜单栏
  • 规划案例网站本科毕业设计代做网站
  • 网站做多久才有流量佛山网站建设服务商
  • 大学生做兼职的网站有哪些如何提升网站pr值
  • 杭州网站建设网站制作wordpress防止机器评论
  • 优化游戏的软件优化方案化学
  • 赤水市建设局官方网站wordpress 黄聪
  • 深圳企业网站建设哪家好网站外链建设需要考核
  • 平凉哪有做网站的北京最大公司排名
  • 北京网站制作报价html响应式网页设计代码范文
  • 文安做网站个人网站与企业网站
  • 汕头网络推广平台搜索引擎优化的目标
  • 怎么看网站哪个公司做的十大免费网站推广平台
  • 海南省建设网站的公司电话号码增城网站建设方案
  • 信用网站建设招标书wordpress 侧栏主题
  • 应持续抓好二级网站的建设工作黑龙江省和城乡建设厅网站
  • 网站后台更新内容后建筑设计有哪些专业
  • 网站建设与管理的专业群深圳建设局网站首页
  • 阿里云加WordPress建站成都网站制作-中国互联
  • 中国市场营销网网站搜索引擎优化总结感悟
  • 做网站的公司周年活动公司的网站如何建设
  • 电子商务网站建设复习题公共体育课程网站建设
  • 设计素材网站月收益漳州北京网站建设
  • 西安手机网站制作南京网站建设优化
  • 上海城乡建设部网站首页wordpress 公式
  • 通河新村街道网站建设线下推广活动有哪些
  • 淮阳网站建设小程序怎么开发自己的小程序代码