微信支付v3开发(5) 扫码并输入金额支付

关键字:微信支付 微信支付v3 动态native支付 统一支付 Native支付 prepay_id 
作者:方倍工作室

本文介绍微信支付下的扫描二维码并输入自定义金额的支付的开发过程。

注意

微信支付现在分为v2版和v3版,2014年9月10号之前申请的为v2版,之后申请的为v3版。V3版的微信支付没有paySignKey参数。v2的相关介绍请参考方倍工作室的其他文章。本文介绍的为微信支付v3。

一. OAuth2.0授权

JSAPI 支付前需要调用 登录授权接口获取到用户的 Openid 。所以需要做一次授权,这次授权是不弹出确认框的。
其实质就是在用户访问

http://www.fangbei.org/wxpay/js_api_call.php

时跳转到

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://www.fangbei.org/wxpay/js_api_call.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

以此来获得code参数,并根据code来获得授权access_token及openid

其实现的详细流程可参考 微信公众平台开发(71)OAuth2.0网页授权

二、获取用户输入金额

上述流程中是获得用户的openid,另外还需要获得本次的交易金额。

    <body onselectstart="return true;" ondragstart="return false;">
        <form method="post" action="submit.php" id="form" onsubmit="return tgSubmit()">
            <div class="container gray_bg">
                <div class="explain">
                    <h3>
                         企业微信支付-扫码自定义金额
                    </h3>
                </div>
                <div class="box apply_box" id="applyBox">
                    <dl class="pb15">
                        <dt>
                            金额(¥)
                        </dt>
                        <dd>
                            <input name="amount" class="txt required" id="amount" value="" placeholder="请输入数字金额,单位元" type="tel" onkeyup="checkNum(this)"/>
                        </dd>

                    </dl>
                </div>
                <footer class="sub_wrap">
                    <input type="hidden" name="openid" value="<?php echo $openid;?>">
                    <input type="submit" class="btn mt20" id="subBtn" value="提交" />
                    <div class="copyright">技术支持 方倍工作室
                    </div>
                </footer>
            </div>
        </form>
    </body>

三、拉取支付插件

获得openid和金额之后,直接使用统一订单接口输入参数

    $jsApi = new JsApi_pub();

    //=========步骤2:使用统一支付接口,获取prepay_id============
    //使用统一支付接口
    $unifiedOrder = new UnifiedOrder_pub();

    //设置统一支付接口参数
    //设置必填参数
    //appid已填,商户无需重复填写
    //mch_id已填,商户无需重复填写
    //noncestr已填,商户无需重复填写
    //spbill_create_ip已填,商户无需重复填写
    //sign已填,商户无需重复填写
    $unifiedOrder->setParameter("openid","$openid");//商品描述
    $unifiedOrder->setParameter("body","自定义价格扫码商品");//商品描述
    //自定义订单号,此处仅作举例
    $timeStamp = time();
    $out_trade_no = WxPayConf_pub::APPID."$timeStamp";
    $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号
    $unifiedOrder->setParameter("total_fee",($amount * 100));//总金额
    $unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址
    $unifiedOrder->setParameter("trade_type","JSAPI");//交易类型
    //非必填参数,商户可根据实际情况选填
    //$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号
    // $unifiedOrder->setParameter("device_info","XXXX");//设备号
    //$unifiedOrder->setParameter("attach","XXXX");//附加数据
    //$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间
    //$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间
    //$unifiedOrder->setParameter("goods_tag","XXXX");//商品标记
    //$unifiedOrder->setParameter("openid","XXXX");//用户标识
    $unifiedOrder->setParameter("product_id","XXXX");//商品ID

    $prepay_id = $unifiedOrder->getPrepayId();
    // logger("prepay_id ".$prepay_id);
    //=========步骤3:使用jsapi调起支付============
    $jsApi->setPrepayId($prepay_id);

    $jsApiParameters = $jsApi->getParameters();

详细流程,可以参考 微信支付开发(1) JS API支付

四、效果展示

扫描二维码

  

时间: 2024-11-10 11:22:27

微信支付v3开发(5) 扫码并输入金额支付的相关文章

Java微信公众平台开发之扫码支付模式二

官方文档点击查看 准备工作:已通过微信认证的公众号,域名可以不通过ICP备案借鉴了很多大神的文章,在此先谢过了大体过程:根据固定金额和商品的ID先生成订单,再生成二维码,客户扫一扫付款模式二支付的流程如下图,可以说是最简单的支付方式了 业务流程说明:(1)商户后台系统根据用户选购的商品生成订单.(2)用户确认支付后调用微信支付[统一下单API]生成预支付交易:(3)微信支付系统收到请求后生成预支付交易单,并返回交易会话的二维码链接code_url.(4)商户后台系统根据返回的code_url生成

微信支付教程系列之扫码支付

微信支付教程系列之扫码支付 http://www.cnblogs.com/nangong/p/9fa625bfb92a986125f0ba72704c46ec.html 今天,我们来一起探讨一下这个微信扫码支付.何为扫码支付呢?这里面,扫的码就是二维码了,就是我们经常扫一扫的那种二维码图片,例如,我们自己添加好友的时候,可以通过输入对方的微信号,也可以扫一扫对方的二维码.扫码支付,作为,微信支付里面,不可或缺的一个功能,对商品的支付提供了极为方便的体验,用途也非常的多.例如我们在地铁.公交站常见

【原创分享&#183;微信支付】 C# 微信支付教程系列之扫码支付

微信支付教程系列之扫码支付 今天,我们来一起探讨一下这个微信扫码支付.何为扫码支付呢?这里面,扫的码就是二维码了,就是我们经常扫一扫的那种二维码图片,例如,我们自己添加好友的时候,可以通过输入对方的微信号,也可以扫一扫对方的二维码.扫码支付,作为,微信支付里面,不可或缺的一个功能,对商品的支付提供了极为方便的体验,用途也非常的多.例如我们在地铁.公交站常见的那些自动售货机(不错,就是那种投硬币,就可以自动出货的那种机器)中都用到.以前,那种机器,只能通过投硬币或者纸币,但是,这里面也有一定的风险

支付宝支付-支付宝PC端扫码支付

前言 支付宝支付—沙箱环境使用支付宝支付-支付宝PC端扫码支付「本文」支付宝支付-手机浏览器H5支付「待写」 PC端扫码支付,其实就是就是 电脑网站支付,本文基于支付宝沙箱环境,不了解的可以看一下上边的链接. 废话不多说,直接进入主题. 下载运行测试Demo 官方Demo下载链接:电脑网站支付(Java) 下载后导入 IDEA 中运行如下图所示: 如果在导入运行过程遇到错误,请参考这篇文章:IDEA中导入支付宝电脑网站支付测试Demo遇到的错误 进行支付测试,注意付款要用沙箱环境提供的支付宝AP

微信支付v3开发(6) 收货地址共享接口

请看新版教程  微信支付开发(7) 收货地址共享接口V2 本文介绍微信支付下的收货地址共享接口的开发过程. 一. 简单介绍 微信收货地址共享,是指用户在微信浏览器内打开网页,填写过地址后,兴许能够免填写支持高速选择.也可添加和编辑. 此地址为用户属性.可在各商户的网页中共享使用.支持原生控件填写地址.地址数据会传递到商户. 地址共享是基于微信JavaScript API 实现.仅仅能在微信内置浏览器中使用,其它浏览器调用无效. 同一时候,须要微信5.0 版本号才干支持,建议通过user agen

C#实现像微信PC版一样的扫码登录功能

现在好些网站都支持扫码登录,感觉上安全了很多,但是本地程序扫码登录的不多,就用C#实现了一下,需要作如下准备 在官网上申请一个企业微信,有条件的话做个企业认证吧,我们的是认证过的,所以账号和本地其他系统的账号是统一的. 在应用中创建一个应用,这个是关键,我们扫码就是和它有关. 点击打开自建的应用,里面有个企业微信授权登录 设置好可信的授权回调域名,这个域名需要是通过ICP备案的,生成的二维码扫描后是需要跳转到这个域名上的. 阅读API文档构造扫码登录链接,用户身份获取等 上面这些看起来很多,但是

PHP 区分微信、支付宝、QQ扫码

public function IsWeixinOrAlipay() { $ua = $_SERVER['HTTP_USER_AGENT']; if (strpos($ua, 'MicroMessenger')) { echo '微信'; } elseif (strpos($ua, 'AlipayClient')) { echo "支付寶"; } elseif (strpos($ua, 'QQ/')) { echo "QQ"; }else{ echo "其

iOS开发 判断扫码是否为有效网址

- (BOOL)achiveStringWithWeb:(NSString *)infor { NSString *emailRegex = @"[a-zA-z]+://.*"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; return [emailTest evaluateWithObject:infor]; }

微信支付公的众号支付和扫码支付

公众号支付是手机端的微信公众号H5页面支付,这种支付方式必须是在微信内置浏览器发起. 扫码支付分为模式一和模式二,模式一主要为线下服务,该模式是先扫码,再生成订单,商户先为自己的商品生成二维码连接,然后用户扫码之后决定是否购买,二维码无过期时间,比如自动售卖机大多采用这种模式:模式二主要为线上电商服务,用户选择商品后生成订单,根据订单生成二维码,然后支付,该二维码为临时二维码. 开发流程 一.授权目录 官方文档说必须是精确目录,其实是二级或三级目录就可以了,太精确的可能还会出现不识别的情况.如果