首页 > 其他分享 >微信支付Native支付调式

微信支付Native支付调式

时间:2024-09-11 17:36:52浏览次数:1  
标签:微信 app cert 二维码 支付 id Native

简介

Native支付是指商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。

#应用场景

Native支付适用于PC网站、实体店单品或订单、媒体广告支付等场景

用户扫描商户展示在各种场景的二维码进行支付,具体操作流程如下:

步骤一 商户根据微信支付的规则,为不同商品生成不同的二维码(如图3.1),展示在各种场景,用于用户扫描购买。

步骤二 用户使用微信“扫一扫”(如图3.2)扫描二维码后,获取商品支付信息,引导用户完成支付(如图3.3)。

示例图示例图示例图
图3.1 支付二维码 图3.2 打开微信扫一扫二维码 图3.3 确认支付页面

步骤三 用户确认支付,输入支付密码(如图3.4)。

步骤四 支付完成后会提示用户支付成功(如图3.5),商户后台得到支付成功的通知,然后进行发货处理。

示例图示例图
图3.4 用户确认支付,输入密码 图3.5 支付成功提示

 

 

php代码实现:

1》前端显示支付二维码PC端 仅支持扫码支付 不支持长按二维码完成支付

微信sdk采用的easywechat 

composer require w7corp/easywechat

//显示支付二维码 支持pc端 或者线下扫码
public function test(Request $request){
    $config = [
        // 必要配置
        'app_id'             => 'xxxxx',
        'mch_id'             => 'xxxxxx',
        'key'                => 'A1b2C3d4E5f6G7h8I9j0KlMnOpQrStUv',   // API v2 密钥 (注意: 是v2密钥 是v2密钥 是v2密钥)
        // 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
        'cert_path'          => '/pay_cert/apiclient_cert.pem', // XXX: 绝对路径!!!!
        'key_path'           => '/pay_cert/apiclient_key.pem',      // XXX: 绝对路径!!!!
        'notify_url'         => 'xxxxxxx/open/wx/pay/callback',     // 你也可以在下单时单独设置来想覆盖它
    ];

    $app = Factory::payment($config);

    $content = $app->scheme("123");
    $img = QrCode::format('png')->size(200)->generate($content);
    $qr_code = 'data:image/png;base64,' . base64_encode($img);
    echo '<img src="'.$qr_code.'">';exit;

}

 

2》回调接口

public  function payCallback(Request $request){
        Log::info(json_encode($request->all()));


        $config = [
            // 必要配置
            'app_id'             => 'xxxxx',
            'mch_id'             => 'xxxxx',
            'key'                => 'xxxxx',   // API v2 密钥 (注意: 是v2密钥 是v2密钥 是v2密钥)
            // 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
            'cert_path'          => '/pay_cert/apiclient_cert.pem', // XXX: 绝对路径!!!!
            'key_path'           => '/pay_cert/apiclient_key.pem',      // XXX: 绝对路径!!!!

            'notify_url'         => 'xxxxx/open/wx/pay/callback',     // 你也可以在下单时单独设置来想覆盖它
        ];

        $app = Factory::payment($config);
        $response = $app->handleScannedNotify(function ($message, $fail, $alert) use ($app) {
            Log::info(json_encode($message));
            Log::info(json_encode($fail));
            Log::info(json_encode($alert));
            // 如:$alert('商品已售空');
            // 如业务流程正常,则要调用“统一下单”接口,并返回 prepay_id 字符串,代码如下
            $result = $app->order->unify([
                'out_trade_no' => 'kefu20240911'.rand(1,99999),
                'trade_type' => 'NATIVE',
                'total_fee' => 1,
                'body' => '客服咨询支持',
//                'product_id' => $message['product_id'] ?? 123, // $message['product_id'] 则为生成二维码时的产品 ID
                // ...
            ]);
            Log::info(json_encode($result));
            return $result['prepay_id'];
        });

        $response->send();



        return "ok";
    }

 

相关请求和接收参数日志:

[2024-09-11 17:16:21] prod.INFO: callBack:request 参数:{"_url":"\/open\/wx\/callBack","signature":"468d8b3be71ac6ecdae1c3877329eeee6bd321ed","timestamp":"1726046181","nonce":"1322485648",
"openid":"otzk36fXsQ1tVNQ83ulCISk5hVww"} [2024-09-11 17:16:21] prod.INFO: {"ToUserName":"gh_c99244526f10","FromUserName":"otzk36fXsQ1tVNQ83ulCISk5hVww","CreateTime":"1726046181","MsgType":"event","Event":"LOCATION",
"Latitude":"22.537125","Longitude":"114.024910","Precision":"24.191069"} [2024-09-11 17:26:19] prod.INFO: {"_url":"\/open\/wx\/pay\/callback"} [2024-09-11 17:26:20] prod.INFO: {"appid":"wx82dd5de1c159bb98","openid":"otzk36QMuBbysDM_e8geEY8eAsyw","mch_id":"1685067562","is_subscribe":"N","nonce_str":"nVGs3p9pR4AZ2QAm",
"product_id":"123","sign":"63F0A0395256563DDCE1EE4657AF4646"} [2024-09-11 17:26:20] prod.INFO: [{},"fail"] [2024-09-11 17:26:20] prod.INFO: [{},"alert"] [2024-09-11 17:26:20] prod.INFO: {"return_code":"SUCCESS","return_msg":"OK","result_code":"SUCCESS","mch_id":"1685067562","appid":"wx82dd5de1c159bb98","nonce_str":"ZJLmxMII4lUdQSpg",
"sign":"630839B7E44D8657DF0435D116BA8198",
"prepay_id":"wx111726202439445ff081d1555036cf0000","trade_type":"NATIVE","code_url":"weixin:\/\/wxpay\/bizpayurl?pr=SEnksOyz1"}

 

标签:微信,app,cert,二维码,支付,id,Native
From: https://www.cnblogs.com/sunlong88/p/18408610

相关文章

  • 使用W外链创建微信短链接的方法
    创建短链是将长链接转换为更短、更易于分享和记忆的链接的过程。W外链是一个提供短链接生成服务的平台,它支持多种功能,包括但不限于:短链制作:用户可以将长链接缩短为易于分享的短链接,还支持自定义短链后缀。防红防封:通过技术手段对原始链接进行加密和伪装,以绕过一些限制和屏蔽......
  • Nginx节点健康检查与自动上下线管理脚本,推送告警到企业微信
    文章目录案例:Linux定时任务调取脚本执行场景说明告警脚本(text)check_nginx_tcp_up.shcheck_nginx_tcp_up.logcheck_nginx_tcp_up_run.shcheck_nginx_tcp_up_run.log告警效果案例:Linux定时任务调取脚本执行由于需求是每2秒执行一次,但Linux......
  • uni-app开发微信小程序
    Uni-app是一个使用Vue.js开发跨平台应用的框架,支持构建微信小程序、H5、iOS、Android等多种平台的应用。以下是使用Uni-app开发微信小程序的基本步骤和一些实用技巧。1.环境准备安装HBuilderXHBuilderX是DCloud提供的IDE,支持Uni-app的开发。你可以从HBui......
  • 10分钟在企业微信中集成一个 AI 助手
    您只需10分钟,无需任何编码,即可为您的组织在企业微信上集成一个有大模型能力加成的AI助手。这个助手可以全天候(7x24)响应用户咨询,还能解答私域问题,成为您企业的专属助手,提升用户体验,增强业务竞争力。方案概览在企业微信中集成一个AI助手,只需几步:创建大模型问答应用:通......
  • 使用第三方库(Senparc)完成小程序支付
    1.添加第三方库,如下图:2.支付代码:///<summary>///支付///</summary>///<paramname="model"></param>///<returns></returns>[Route("Pay")]publicWeixinJsPaySignaturePay(PayRequestmodel){stringtimeSt......
  • 小程序开发费用揭秘:影响微信小程序价格的因素有哪些?
    微信小程序的开发费用因具体需求和开发方式而异。以下是一些影响微信小程序开发费用的因素:功能和复杂度:微信小程序的功能和复杂度直接影响开发费用。简单的小程序可能只需要几千元,而复杂的小程序可能需要数万元或更高。设计和用户体验:微信小程序的设计和用户体验也会影响开......
  • 支付宝分成计划:小白也能月入五位数,矩阵批量操作的秘密
    项目准备账号准备:一张身份证可实名认证3个支付宝账号,无需额外养号。开通流程:支付宝首页进入视频,点击右上角创作者中心,满足条件(100粉丝、4个视频、100播放量、发布10条视频)后加入。素材来源:抖音搜索影视解说类视频,选择时长1分钟左右的热门视频。项目实操素材处理:使......
  • 支付宝分成计划:小白也能月入五位数,矩阵批量操作的秘密
    项目准备账号准备:一张身份证可实名认证3个支付宝账号,无需额外养号。开通流程:支付宝首页进入视频,点击右上角创作者中心,满足条件(100粉丝、4个视频、100播放量、发布10条视频)后加入。素材来源:抖音搜索影视解说类视频,选择时长1分钟左右的热门视频。项目实操素材处理:使......
  • 支付宝分成计划:小白也能月入五位数,矩阵批量操作的秘密
    项目准备账号准备:一张身份证可实名认证3个支付宝账号,无需额外养号。开通流程:支付宝首页进入视频,点击右上角创作者中心,满足条件(100粉丝、4个视频、100播放量、发布10条视频)后加入。素材来源:抖音搜索影视解说类视频,选择时长1分钟左右的热门视频。项目实操素材处理:使......
  • 支付宝分成计划:小白也能月入五位数,矩阵批量操作的秘密
    项目准备账号准备:一张身份证可实名认证3个支付宝账号,无需额外养号。开通流程:支付宝首页进入视频,点击右上角创作者中心,满足条件(100粉丝、4个视频、100播放量、发布10条视频)后加入。素材来源:抖音搜索影视解说类视频,选择时长1分钟左右的热门视频。项目实操素材处理:使......