• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信小程序 > 微信小程序支付流程

微信小程序支付流程

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-11-30

匿名通过本文主要向大家介绍了微信小程序,微信小程序,开发,支付等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

支付步骤逻辑:

1. 小程序发起请求预支付

2. 服务端调用接口发起预支付信息

3. 微信小程序调起支付完成支付

1. 小程序发起请求预支付


2. 服务端调用接口发起预支付信息

服务端接收到请求后,调用微信的api接口,调用成功会得到一个prepay_id 这个就是相当于小程序的预支付id 过程中会生成签名,按照官方文档的实例参数生成即可,如果非必填可选择不填,然后向 api 发送一个xml

<xml>
   <appid>wx2421b1c4370ec43b</appid>
   <attach>支付测试</attach>
   <body>JSAPI支付测试</body>
   <mch_id>10000100</mch_id>
   <detail><![CDATA[{ "goods_detail":[ { "goods_id":"iphone6s_16G", "wxpay_goods_id":"1001", "goods_name":"iPhone6s 16G", "quantity":1, "price":528800, "goods_category":"123456", "body":"苹果手机" }, { "goods_id":"iphone6s_32G", "wxpay_goods_id":"1002", "goods_name":"iPhone6s 32G", "quantity":1, "price":608800, "goods_category":"123789", "body":"苹果手机" } ] }]]></detail>
   <nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
   <notify_url>[url]http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>[/url]
   <openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid>
   <out_trade_no>1415659990</out_trade_no>
   <spbill_create_ip>14.23.150.211</spbill_create_ip>
   <total_fee>1</total_fee>
   <trade_type>JSAPI</trade_type>
   <sign>0CB01533B8C1EF103065174F50BCA001</sign>
</xml>

需要注意sign 生成方式和公众号生成方式一致,下面是PHP生成签名方法, 可根据不同的框架修改,记得修改 key

 /**
     * 生成签名
     * @return 签名,本函数不覆盖sign成员变量,如要设置签名需要调用SetSign方法赋值
     */
    public function MakeSign()
    {
        //签名步骤一:按字典序排序参数
        ksort($this->_prepay);
        $string = $this->ToUrlParams();
        //签名步骤二:在string后加入KEY
        $string = $string . "&key=".WxPayConfig::KEY;
        //签名步骤三:MD5加密
        $string = md5($string);
        //签名步骤四:所有字符转为大写
        $result = strtoupper($string);
        return $result;
    }
    /**
     * 格式化参数格式化成url参数
     */
    public function ToUrlParams()
    {
        $buff = "";
        foreach ($this->values as $k => $v)
        {
            if($k != "sign" && $v != "" && !is_array($v)){
                $buff .= $k . "=" . $v . "&";
            }
        }
        $buff = trim($buff, "&");
        return $buff;
    }

调用统一下单api

/**
     * 统一下单调取返回值
     * @return mixed
     * $output['return_code'] 状态码 SUCCESS/FAIL
     * $output['return_msg'] 返回信息,如非空,为错误原因 签名失败 参数格式校验错误
     * $output['time'] 当前时间戳
     * $output['nonceStr'] 随机字符串
     * $output['prepay_id'] 预支付id
     * $output['sign'] 签名
     * */
    public function pay_place_order()
    {
        $xml = '<xml>
                   <appid>'.$this->_prepay['appid'].'</appid>
                   <body>'.$this->_prepay['body'].'</body>
                   <mch_id>'.$this->_prepay['mch_id'].'</mch_id>
                   <nonce_str>'.$this->_prepay['nonce_str'].'</nonce_str>
                   <notify_url>'.$this->_prepay['notify_url'].'</notify_url>
                   <openid>'.$this->_prepay['openid'].'</openid>
                   <out_trade_no>'.$this->_prepay['out_trade_no'].'</out_trade_no>
                   <spbill_create_ip>'.$this->_prepay['spbill_create_ip'].'</spbill_create_ip>
                   <total_fee>'.$this->_prepay['total_fee'].'</total_fee>
                   <trade_type>'.$this->_prepay['trade_type'].'</trade_type>
                   <sign>'.$this->MakeSign().'</sign>
                </xml>';
//调用api,自定义对参数进行处理,改请求方式是自定义方式 
        $xml_result = post_request_https('https://api.mch.weixin.qq.com/pay/unifiedorder', $xml);

对返回的参数从新生成sign,得到一个新的sign,返回小程序

注意: 生成返回小程序签的名参与生成的签名的字段有

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 微信小程序跟读 demo代码
  • 微信小程序-GetWeApp聊天室 代码
  • 微信小程序demo 仿手机淘宝
  • 微信小程序 Artand 瀑布流风格 代码demo
  • 微信小程序高仿手机QQ应用程序
  • 微信小程序-小商城前台
  • 微信小程序仿手机淘宝demo代码
  • 微信小程序仿Apple Music demo代码
  • 微信小程序整合一套UI库
  • 微信小程序妹子图片展示demo代码

相关文章

  • 2018-11-30微信小程序实现前台循环数据绑定的案例
  • 2018-11-30 微信小程序开发基础篇之回调函数,匿名函数,闭包(4)
  • 2018-11-30微信小程序使用image组件显示图片的方法
  • 2018-11-23微信小程序云开发API update
  • 2018-11-30CnClock桌面时钟-Winform小程序开发
  • 2018-11-30关于微信小程序 request接口的封装介绍
  • 2018-11-30微信小程序之小豆瓣图书的介绍
  • 2018-11-30小程序开发中怎样应用block
  • 2018-11-30微信小程序template模板的分析
  • 2018-11-30微信小程序 setData的使用方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 前端和微信小程序的未来与发展
    • 小程序开发如何使用?总结小程序开发实例用法
    • 微信小程序中表单Form的解析
    • 微信小程序-获得用户输入内容
    • 微信小程序游戏2048demo代码
    • 关于容器组件的6篇文章推荐
    • 微信小程序多张图片上传功能的实现
    • 微信小程序云开发API 指定返回结果中记录需返回的字段
    • 微信小程序开发中怎样实现Android环境下的横向滚动
    • 微信小程序如何使用webview调用微信扫一扫的功能

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有