【微信小程序付款转二维码付款】

该代码实现了一个小程序支付的过程,首先通过sessionId获取订单数据,然后利用获取的uuid生成二维码。主要涉及的参数有:sessionId、timeStamp、nonceStr、package、paySign、appid等,最终调用接口生成支付二维码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要的参数:session_id, timeStamp, nonceStr, package, paySign, appid,uuid
session_id是协议获取
timeStamp, nonceStr, package, paySign, appid是订单数据
uuid是调用接口获取

  1. 第一步要获取小程序的sessionId 基于pc协议不风控
    pc协议
  2. 获取订单数据timeStamp, nonceStr, package, paySign, appid
    调用https://open.weixin.qq.com/wxaruntime/getuuid?session_id= 获取uuid
  3. 调用接口获取到的uuid拼接https://api.weixin.qq.com/wxaruntime/readqrcode?uuid=转二维码

代码奉上

public String pay(String appId,String timeStamp,String nonceStr,String packages,String paySign,String sessionId){
        Map<String, Object> map = new HashMap<>();
        map.put("adUxInfo","");
        map.put("provider","wxpay");
        map.put("timeStamp",timeStamp);
        map.put("nonceStr",nonceStr);
        map.put("package",packages);
        map.put("paySign",paySign);
        map.put("signType","MD5");
        map.put("cookie","busid=wxapp; appid="+appId+";; busid=wxapp; sessionid=;; busid=wxapp; scene=1001;; busid=wxapp; scene_note=");
        map.put("grantMessageQuota",true);
        Map<String, Object> map1 = new HashMap<>();
        map1.put("args", JSON.toJSONString(map));
        map1.put("isBridgedJsApi",true);
        map1.put("jsapiType","appservice");
        map1.put("miniprogramAppID",appId);
        map1.put("name","requestPayment");
        map1.put("transitiveData","");
        Map<String, Object> map2 = new HashMap();
        map2.put("invokeData",JSON.toJSONString(map1));
        map2.put("pathType",1);
        map2.put("rumtimeAppid",appId);
        map2.put("runtimeSessionId",sessionId);
        map2.put("runtimeTicket","Product");
        Map<String, Object> map3 = new HashMap<>();
        map3.put("appid",appId);
        map3.put("req_data",JSON.toJSONString(map2));
        String body = HttpRequest.post("https://open.weixin.qq.com/wxaruntime/getuuid?session_id=" + sessionId)
                .body(JSONObject.toJSONString(map3))
                .header("Host","open.weixin.qq.com")
                .header("Accept","*/*")
                .header("Content-Type","application/x-www-form-urlencoded")
                .header("Expect","100-continue")
                .execute().body();
        if (!StrUtil.contains(body,"uuid")){
            return null;
        }
        return QrCodeUtil.generateAsBase64("https://api.weixin.qq.com/wxaruntime/readqrcode?uuid="
                + JSONObject.parseObject(body).getString("uuid"), new QrConfig(300,300), "jpg");

    }
### 微信小程序中实现支付二维码生成 在微信小程序生态体系里,支付二维码作为连接商家与消费者的重要桥梁,在交易过程中扮演着不可或缺的角色。为了实现在微信小程序内部生成支付二维码的功能,开发者需遵循特定的技术路径。 #### 准备工作 确保已获取到合法有效的`access_token`用于调用微信开放平台提供的服务接口[^5]。此令牌对于发起安全可靠的HTTP POST请求至关重要,该请求指向官方指定URL以换取所需的二维码图像数据。 #### 接口调用流程 构建含有必要字段(如`qrcode_ticket`)的JSON对象并向上述提及的服务端点发送POST请求。这里需要注意的是,所提交的数据结构应当严格匹配文档规定格式: ```json { "qrcode_ticket": "05ba627d5b73b6f3ef0dcfc7" } ``` 一旦接收到响应消息,则应解析其中携带的内容特别是名为`qrcode_buf`的部分——它代表经过Base64编码处理后的二进制图片流。随后利用JavaScript内置方法完成解码操作并将最终得到的结果渲染至前端界面供用户查看或下载保存。 #### 客户端展示逻辑 考虑到用户体验优化方面的需求,建议采用如下策略来呈现新创建出来的支付二维码: - 将其换成适合移动端设备显示尺寸; - 提供清晰直观的操作指引以便于顾客顺利完成付款动作; 以下是简化版的代码片段展示了如何接收来自服务器返回的数据并将其化为可视化的QRCode图形: ```javascript wx.request({ url: 'https://api.weixin.qq.com/shop/funds/qrcode/get', method: 'POST', data: { access_token: YOUR_ACCESS_TOKEN, qrcode_ticket: QR_CODE_TICKET }, success(res){ const base64Data = res.data.qrcode_buf; // Assuming there's an img element with id="qr-code-image" in your page. document.getElementById('qr-code-image').src = `data:image/png;base64,${base64Data}`; } }) ```
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值