精华内容
下载资源
问答
  • 微信二维码支付 熟悉微信支付全家桶的童鞋应该都清楚,微信支付是没有提供PC网关支付的,那么传统的网站需要怎么接入微信支付产品呢? 我们可以选择微信支付中的Native支付产品,官方介绍: Native支付是指商户...

    微信二维码支付

    熟悉微信支付全家桶的童鞋应该都清楚,微信支付是没有提供PC网关支付的,那么传统的网站需要怎么接入微信支付产品呢?

    我们可以选择微信支付中的Native支付产品,官方介绍:

    Native支付是指商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。该模式适用于PC网站、实体店单品或订单、媒体广告支付等场景。 开发文档

    开发流程

    微信支付的对接流程还是比较简单、规范的,支付环节都是先调用统一下单接口,交易类型trade_type传为NATIVE,会得到code_url,这个就是微信支付的二维码地址,将其生成二维码,即可拿起手机扫描该二维码完成支付。

     

    支付宝二维码支付

    支付宝二维码支付(主扫),是支付宝当面付产品中支持的一种模式,官网介绍:

    当面付帮助商家在线下消费场景下实现快速收款,支持 条码支付 和 扫码支付 两种付款方式。商家可通过以下任一方式进行收款,提升商家收银效率,资金实时到账。

    • 商家通过扫描线下买家支付宝钱包中的条码、二维码等方式完成收款。

    • 买家通过使用支付宝 “扫一扫” 功能,扫描商家的二维码等方式完成支付。

    开发流程

    支付宝扫码支付产品主要是通过统一收单线下交易预创建(扫码支付)接口实现的,响应报文中,能拿到qr_code,即为支付宝得人二维码支付地址,将其生成二维码,即可使用支付宝app扫描该二维码完成支付。开发文档

     

    将我们系统中的调试页面分享下吧,供参考

     

    展开全文
  • vue pc生成二维码支付

    2021-04-15 17:53:29
    这里介绍两种vue生成二维码的方法 QRcode vue-qr vue-qr比QRcode功能多在可以在中间加logo QRcode npm npm install qrcodejs2 import 在所需页面导入 import QRCode from 'qrcodejs2' use 复制代码<div class=...

    这里介绍两种vue生成二维码的方法

    1. QRcode
    2. vue-qr

    vue-qr比QRcode功能多在可以在中间加logo

    QRcode

    npm

    npm install qrcodejs2

    import

    在所需页面导入
    import QRCode from 'qrcodejs2'

    use

    复制代码
    <div class="qrcode" ref="qrCodeUrl"></div>
    <script>
    methods: {
    creatQrCode() {
      var qrcode = new QRCode(this.$refs.qrCodeUrl, {
          text: 'xxxx',
          width: 100,
          height: 100,
          colorDark: '#000000',
          colorLight: '#ffffff',
          correctLevel: QRCode.CorrectLevel.H
     })
    },
    }
    

    mounted() {
    this.creatQrCode();
    },
    </script>

    vue-qr

    npm

    npm install vue-qr --save

    use

    复制代码
    <vue-qr :logoSrc="imageUrl" text="xxx" :size="200"></vue-qr>
    <script>
      import vueQr from 'vue-qr'
      export default {
        name: "qecode",
        data() {
          return {
            imageUrl: require("../assets/logo.png"),
          }
        },
        components: {
          vueQr
        },
        },
      }
    </script>
    

    是不是比qrcode简单的多, 只不过两种生成二维码的样式还是有区别的,各有所爱吧,用哪个都可以

    要注意一点,引用的img路径一定要加require

    转载:

    作者:Zou-Wang

    出处:https://www.cnblogs.com/zouwangblog/

    展开全文
  • 一、导读 当我第一次对接的时候还是遇到了不少的问题,也找了开源的支付demo,但是网上的开源支付demo感觉不够简单显而易见,我刚好自己对接过,相关支付,只保留了最简单的支付功能和回调通知,有完整的项目,修改...

    一、导读

    当我第一次对接的时候还是遇到了不少的问题,也找了开源的支付demo,但是网上的开源支付demo感觉不够简单显而易见,我刚好自己对接过,相关支付,只保留了最简单的支付功能和回调通知,有完整的项目,修改配置文件即可运行。

    二、技术架构

    • 基础框架 Spring Boot 2.2.1.RELEASE

    • thymeleaf页面模板

    三、开发环境

    • 语言:Java 8

    • IDE(JAVA): Eclipse安装lombok插件 或者 IDEA

    • 依赖管理:Maven

    四、使用说明

    1. 修改application.yml文件,替换自己的配置信息,以及证书位置。

    2. 运行DemoApplication程序

    3. 访问http://localhost:8080,支付demo已经创建好了,页面上直接点击即可
      (订单默认创建好了,金额默认一分)

    五、支付相关图片

    1. 支付首页

      在这里插入图片描述

    2. 微信支付页面

      在这里插入图片描述

    3. 支付宝支付页面

      在这里插入图片描述

    六、地址

    码云源码地址:传送门

    展开全文
  • 2、根据链接生成二维码图片(可以使用qrious) 3、扫码支付支付 4、支付成功会有一个回调函数,根据实际情况来进行支付完成后的业务操作 微信没有提供maven仓库坐标,因此我们必须下载使用。下载链接...

    微信支付官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/api.shtml

    下图是微信支付的一个流程图:

    我们需要做的是:

    • 1、调用微信下单接口,生成支付链接。
    • 2、根据链接生成二维码图片(可以使用qrious)
    • 3、扫码支付支付
    • 4、支付成功会有一个回调函数,根据实际情况来进行支付完成后的业务操作

    微信没有提供maven仓库坐标,因此我们必须下载使用。下载链接 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1

     

    微信SDK提供了一个统一的微信支付工具类:WXPay:

     

    我们主要关注其中的unifiedOrder方法,统一下单:

    /**
         * 作用:统一下单<br>
         * 场景:公共号支付、扫码支付、APP支付
         * @param reqData 向wxpay post的请求数据
         * @return API返回数据
         * @throws Exception
         */
    public Map<String, String> unifiedOrder(Map<String, String> reqData) throws Exception {
        return this.unifiedOrder(reqData, config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
    }

    这里的请求参数是:Map<String, String> reqData,就是官方API说明中的请求参数了,不过并不需要我们填写所有参数,而只需要下面的:

    • body:商品描述
    • out_trade_no:订单编号
    • total_fee:订单应支付金额
    • spbill_create_ip:设备IP
    • notify_url:回调地址
    • trade_type:交易类型

    剩下的:appidmch_idnonce_strsign_typesign参数都有WXPay对象帮我们设置,那么问题来了:这些参数数据WXPay是怎么拿到的呢?

    其中,

    • nonce_str:是随机字符串,因此由WXPay随机生成,
    • sign_type:是签名算法,由WXPay指定,默认是HMACSHA256;
    • sign:是签名,有签名算法结合密钥加密而来,因此这里的关键是密钥:key
    • appid、mch_id是商家信息,需要配置

    也就是说,这例需要配置的包括:appid、mch_id、密钥key。这些从哪里来呢?

    看下WXPay的构造函数:

    public WXPay(final WXPayConfig config) throws Exception {
        this(config, null, true, false);
    }

    这里需要一个WXPayConfig对象,显然是配置对象。

    WXPayConfig配置

    WXPay依赖于WXPayConfig进行配置,那么WXPayConfig是什么呢?

    看下源码中的关键部分:

    public abstract class WXPayConfig {
        /**
         * 获取 App ID
         *
         * @return App ID
         */
        abstract String getAppID();
        /**
         * 获取 Mch ID
         *
         * @return Mch ID
         */
        abstract String getMchID();
        /**
         * 获取 API 密钥
         *
         * @return API密钥
         */
        abstract String getKey();
        
        // 。。。省略
    }

     

    这不就是WXPay中需要配置的3个属性嘛,当我们实现这个类,并且给出其中的值,把WXPayConfig传递给WXPay时,WXPay就会获取到这些数据:

    1580547534423

     

    当我们利用WXPay发送请求时,WXPay就会帮我们封装到请求参数中:

    1580547680115

     

    而在我提供给大家的SDK中,就编写了一个WXPayConfig的实现:

    package com.github.wxpay.sdk;
    
    import lombok.Data;
    
    import java.io.InputStream;
    
    /**
     * @author 黑马程序员
     */
    @Data
    public class WXPayConfigImpl extends WXPayConfig {
        /**
         * 公众账号ID
         */
        private String appID;
        /**
         * 商户号
         */
        private String mchID;
        /**
         * 生成签名的密钥
         */
        private String key;
        /**
         * 支付回调地址
         */
        private String notifyUrl;
        /**
         * 支付方式
         */
        private String payType;
    
        public InputStream getCertStream(){
            return null;
        }
    
        public IWXPayDomain getWXPayDomain(){
            return WXPayDomainSimpleImpl.instance();
        }
    }

    将来我们只需要new出这个实现类对象,并且给这3个参数赋值即可。

     

    话不多说,开撸

    首先,把下载的SDK打包并安装到本地的maven仓库,方便在项目中使用。

    直接对SDK进行打包,在项目maven中执行如下命令:

    mvn source:jar install -Dmaven.test.skip=true

    如图所示:

     

    image-20200403112617377

    打包完成后

    引入依赖(除了wxpay的依赖,还需要一个转换xml的依赖)

    <dependency>
        <groupId>com.github.wxpay</groupId>
        <artifactId>wxpay-sdk</artifactId>
        <version>3.0.9</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
    </dependency>

     在yml中配置 (如果服务运行在本地,那么回调接口就无法回调成功,需要使用内网穿透工具)

    #微信APP支付参数
    pay:
      wx:
        #商户应用appId
        appId: 
        #设备号
        mchId: 
        #商户key:api秘钥(32位)
        key: 
        #回调接口
        notifyUrl: http://服务ip:port/wx/notify
        #支付类型(扫码)
        payType: NATIVEVE

     将这些属性注入到PayProperties中:

    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Data
    @Component
    @ConfigurationProperties(prefix = "pay.wx")
    public class PayProperties {
        private String appId;
        private String mchId;
        private String key;
        private String notifyUrl;
        private String payType;
    }

    配置微信支付所需要的对象注入到spring容器中:

    import com.github.wxpay.sdk.PayConfig;
    import com.github.wxpay.sdk.WXPay;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * 初始化微信支付需要的对象
     */
    @Configuration
    public class PayConfiguration {
        @Autowired
        private PayProperties payProps;
    
        @Bean
        public WXPay wxPay() throws Exception {
            PayConfig payConfig = new PayConfig();
            payConfig.setAppID(payProps.getAppId());
            payConfig.setMchID(payProps.getMchId());
            payConfig.setKey(payProps.getKey());
            return new WXPay(payConfig);
        }
    
    }

    封装支付工具类

    
    import com.github.wxpay.sdk.WXPay;
    import com.zhiwan.exception.ZwException;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import java.util.HashMap;
    import java.util.Map;
    
    @Component
    @Slf4j
    public class PayHelper {
    
        @Autowired
        private WXPay wxPay;
        @Autowired
        private PayProperties payProps;
    
        /**
         * 生成支付链接
         */
        public String getPayUrl(String orderId,Long totalFee){
            // 请求参数:
            Map<String, String> data = new HashMap<String, String>();
            data.put("body", "乐优商城-商品订单支付");
            data.put("out_trade_no", orderId.toString());
            data.put("total_fee", totalFee.toString());
            data.put("spbill_create_ip", "123.12.12.123");
            data.put("notify_url", payProps.getNotifyUrl());
            data.put("trade_type", payProps.getPayType());  // 此处指定为扫码支付
    
            try {
                Map<String, String> resp = wxPay.unifiedOrder(data);
    
                if(resp.get("return_code").equals("SUCCESS")&&
                        resp.get("result_code").equals("SUCCESS")){
                    log.info("【微信支付】生成支付链接成功");
                    return resp.get("code_url");
                }else{
                    log.error("【微信支付】生成支付链接失败,原因:"+resp.get("return_code"));
                    throw new ZwException(500,"【微信支付】生成支付链接失败");
                }
            } catch (Exception e) {
                e.printStackTrace();
                throw new ZwException(500,"【微信支付】生成支付链接失败,"+e.getMessage());
            }
        }
    
    }
    

    到这生成微信支付的代码就已经完成了,调用即可

     

    以下以供参考

    controller调用生成支付链接:

    
    @RestController
    public class OrderController {
    
        @Autowired
        private OrderService orderService;
    /**
         * 生成支付链接
         *
         */
        @GetMapping("/order/url/{id}")
        public ResponseEntity<String> buildPayUrl(@PathVariable("id") Long id){
            String payUrl = orderService.buildPayUrl(id);
            return ResponseEntity.ok(payUrl);
        }
    }

    service代码:

    可以设置支付链接的有效时间,可以使用redis缓存:

    @Service
    @Slf4j
    @Transactional
    public class OrderService {
    
    
    /**
         * 生成微信支付链接
         *
         * @param id
         * @return
         */
        public String buildPayUrl(String id) {
            //1.先到redis取出当前订单的支付链接
            String payUrl = redisTemplate.opsForValue().get("PAY_URL_" + id);
            //2.如果redis有,则直接取出订单的支付链接
            if (StringUtils.isNotEmpty(payUrl)) {
                return payUrl;
            }
    
            //3.如果redis没有,则调用微信支付系统生成该订单的支付链接,把该链接存入redis,并设置有效期(2小时)
            //根据订单id查询订单(获取支付金额)
            //Order order = orderMapper.selectById(id);
            //生成支付链接,这里我们直接先设置1分钱
            payUrl = payHelper.getPayUrl(id,1L);
            //把该链接存入redis,并设置有效期(2小时)
            redisTemplate.opsForValue().set("PAY_URL_" + id, payUrl, 2, TimeUnit.HOURS);
            return payUrl;
        }
    
    }

    页面响应结果:

     

    使用qrious.js将该链接转成二维码

    支付成功后微信会回调一个请求(回调的接口notifyUrl指定)

    controller:

    /**
         * 微信支付回调方法
         * 接受的参数是xml类型
         */
        @PostMapping(value = "/wx/notify", produces = "application/xml")
        public Map<String, String> wxNotify(@RequestBody Map<String, Object> paramMap) {
            orderService.wxNotify(paramMap);
    
            log.warn("【回调的信息:】"+paramMap.toString());
    
            //返回成功信息给微信支付
            Map<String, String> resultMap = new HashMap<>();
            resultMap.put("return_code", "SUCCESS");
            resultMap.put("return_msg", "OK");
            return resultMap;
        }

    service

    /**
         * 微信支付回调
         *
         * @param paramMap
         */
        public void wxNotify(Map<String, Object> paramMap) {
            //1.订单ID
            String orderId = (String) paramMap.get("out_trade_no");
            //2.支付金额
            Long totalFee = Long.valueOf((String) paramMap.get("total_fee"));
    
            //3.查询订单
            Order order = orderMapper.selectById(orderId);
            log.warn("订单是:" + order.toString());
    
            if (order == null) {
                throw new ZwException(500, "订单不存在");
            }
    
            if (order.getActualFee() != totalFee) {
                throw new ZwException(500, "订单金额不正确");
            }
    
            //修改订单状态
            try {
                order.setStatus(OrderStatusEnum.PAY_UP.value());
                /**
                 * 微信支付1
                 */
                order.setPaymentType(1);
                order.setPayTime(new Date());
                QueryWrapper<Order> query = Wrappers.query();
                query.eq("order_id", orderId);
                orderMapper.update(order, query);
                log.info("【微信通知】更新订单状态成功");
            } catch (Exception e) {
                e.printStackTrace();
                log.error("【微信通知】更新订单状态失败");
                throw new ZwException(500, "更新订单状态失败");
            }
        }

     

    到这里整个支付流程就完成了

     

     

     

     

     

    展开全文
  • try { logger.info("开始调用支付宝生成支付二维码..."); // 实例化客户端 String appId = cpPayUtils.getConfig().getAppId(); String aliPayPublicKey = cpPayUtils.getConfig().getAliPayPublicKey(); String ...
  • 支付宝开放平台 扫码登录支付宝开放平台 沙箱环境 沙箱环境介绍 沙箱控制台 应用网关:该地址用于接收开放平台的异步通知。目前沙箱环境不需要配置此参数; 授权回调地址;第三方应用授权或获取用户信息中用于接收...
  • 昨天测试提交了一个bug,说是公司网站调用微信支付时无法显示微信二维码,于是去测试环境测试了一下,发现果然有问题:   此时后台日志打印了如下信息,微信接口返回的错误提示是:”invalid spbill_create_ip...
  • python支付宝支付 微信、支付宝二维码聚合SDK下载 点我下载 1、沙箱环境配置 在支付宝提供的沙箱环境中进行开发,用自己的支付宝账号去申请一个沙箱账号。 可以参考沙箱使用说明获取AppID等,然后根据说明下载安卓...
  • 1、安装一个转换二维码的插件 qrcodejs2 npm install qrcodejs2 --save 2、在需要使用该插件的 Vue 文件中引入 import QRCode from 'qrcodejs2'; 3、接下来页面结构编写,在表格点击“支付”按钮,跳出...
  • 先看示例,用微信扫一扫与支付宝扫一扫来扫描下方的二维码。 该判断实现方式可以从前端Javascript实现和后端实现(Java,Python等) 一、前端实现方式 只需要判断 userAgent 是 MICROMESSENGER 或者 ...
  • 方式一 判断应用类型做相应跳转微信和支付宝融合到一张二维码上是可以实现的,这个二维码就是一个地址链接url实际上是一个支付网页(我们自己网站的页面),支付宝和微信的扫一扫实际上就是在应用内部打开的这个网页。...
  • 微信二维码支付

    千次阅读 多人点赞 2021-02-02 02:10:20
    --微信支付--> <dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.3</version> </dependency> <!--...
  • 阿里云生成支付二维码支付

    千次阅读 2021-01-11 20:33:27
    1添加微信支付SDK 方式一:service_trade中添加依赖 <dependencies> <!--微信支付--> <dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</...
  • 场景:springboot网页点击缴费,弹出二维码支付成功后回调服务器,保存订单信息。 1.先导入包,返回二维码链接,采用第三方包qrcode-utils生成图片。 <dependency> <groupId>...
  • 微信: 需求:微信支付 跳出弹框 二维码 下载二维码生成器 npm i qrcodejs2 --save
  • 一安装二维码生成器 npm install vue-qriously@1.1.1 二配置插件 创建 plugins/vue-qriously-plugin.js import Vue from 'vue' import VueQriously from 'vue-qriously' Vue.use(VueQriously) nuxt.config.js...
  • 第一步引入第三方插件: ...微信扫码支付</h2> <div id="qrcode"></div> </template> <script> import QRCode from 'qrcodejs2' export default { data() { return { } },
  • //payResponse.QrCode即二维码对于的链接 //将链接用二维码工具生成二维码打印出来,顾客可以用支付宝钱包扫码支付。 string result = ""; switch (precreateResult.Status) { case ResultEnum.SUCCESS: ...
  • 微信支付 Native模式 微信支付,可以说是当前,比较流行和方便的一个技术,出门玩
  • 1.导入依赖 <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase<...2.二维码生成类 package com.imooc.mall.utils; import com.google.zxing.Bar
  • 标题码支付源码 无授权—个人免签约支付系统二维码收款即时到账源码 绝非网络上面缺斤少两那种垃圾源码 云端已本地化,ck协议本地化,完全脱离云端控制,不受云端控制, 修复监控了不在线BUG 搭建教程 1.上传主机/...
  • 如何创建自己的支付宝收款二维码

    万次阅读 2016-12-07 12:44:43
    蚂蚁金服商家平台”对话窗口,右下角我的-我的收款码中就可以看到自己的收款码了。 将商户码贴在柜台上,就可以开始收款啦!   针对“支付宝收款”,支付宝也将推出一系列扶持政策,包括给商家的优惠...
  • 支付需求客户提供快捷、灵活、标准的支付服务,有独立后台,拥有系统所有权,业务运作更加灵活,收益更加丰富。 系统支持微信、支付宝收付款,D0秒到账,安全可靠。 全行业收单费率低,成功率达到99.9%合适全...
  • 二维码支付和NFC支付到底有什么不同呢?谁更胜一筹呢?今天一度蜜想和大家盘点一下它们各自的优缺点,看看几年后谁能干掉谁。 NFC是什么? NFC,老司机们都知道是怎么回事,但有些用二维码“长大”的小伙伴还...
  • 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。图片 是用某种特定的几何...
  • 当你发起请求的时候,系统会自动匹配和价格最接近的固定金额二维码,如果没有找到可用的(比如已经被使用或者不存在这个价格的二维码)系统会使用不固定金额二维码(页面会提示消费者手动输入金额)。 举例:比如你...
  • 场景:PC端点击下单后,生成二维码返回给前端,用户扫码支付 直接上代码 主要依赖 <!-- 微信开发工具 --> <dependency> <groupId>com.github.liyiorg</groupId> <artifactId>...
  • 生成的二维码是一个网页的链接,应用打开网页的时候,是在该应用打开的该网页,网页通过检测打开网页的应用的标识进行分辨,如果是微信支付就跳转的微信的支付接口,如果只支付宝就跳转到支付宝的支付接口
  • } } 二、生成微信支付二维码 public Map createNative(String orderNo) { try { //1 根据订单号查询订单信息 QueryWrapper<Order> wrapper = new QueryWrapper(); wrapper.eq("order_no", orderNo); Order order =...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,770
精华内容 14,708
关键字:

二维码支付平台