• 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

微信小程序支付

  • list

  • -paddingleft-2">

  • 微信提供文档的业务流程时序图

  • 第一步
    进入小程序,下单,请求下单支付,调用小程序登录API来获取Openid,生成商户订单,这些都是在小程序端完成的业务。

小程序端代码

// pages/pay/pay.jsvar app = getApp();
Page({
    data: {},
    onLoad: function (options) {
        // 页面初始化 options为页面跳转所带来的参数
    },    /* 微信支付 */
    wxpay: function () {
        var that = this
        //登陆获取code
        wx.login({
            success: function (res) {
                console.log(res.code)                //获取openid
                that.getOpenId(res.code)
            }
        });
    },
    getOpenId: function (code) {
        var that = this;
        wx.request({
            url: "https://api.weixin.qq.com/sns/jscode2session?appid=wxa142513e524e496c&secret=5d6a7d86048884e7c60f84f7aa85253c&js_code=" + code + "&grant_type=authorization_code",
            data: {},
            method: 'GET',
            success: function (res) {
                console.log('返回openId')
                console.log(res.data)
                that.generateOrder(res.data.openid)
            },
            fail: function () {
                // fail
            },
            complete: function () {
                // complete
            }
        })
    },    /**生成商户订单 */
    generateOrder: function (openid) {
        var that = this
        //统一支付
        wx.request({
            url: 'http://localhost:8070/RMS/pay_pay.action',
            method: 'GET',
            data: {
                total_fee: '5',
                body: '支付测试',
                attach:'真假酒水'
            },
            success: function (res) {
                console.log(res)                var pay = res.data                //发起支付
                var timeStamp = pay[0].timeStamp;
                console.log("timeStamp:"+timeStamp)                var packages = pay[0].package;
                console.log("package:"+packages)                var paySign = pay[0].paySign;
                console.log("paySign:"+paySign)                var nonceStr = pay[0].nonceStr;
                 console.log("nonceStr:"+nonceStr)                var param = { "timeStamp": timeStamp, "package": packages, "paySign": paySign, "signType": "MD5", "nonceStr": nonceStr };
                that.pay(param)
            },
        })
    },    /* 支付   */
    pay: function (param) {
        console.log("支付")
        console.log(param)
        wx.requestPayment({
            timeStamp: param.timeStamp,
            nonceStr: param.nonceStr,
            package: param.package,
            signType: param.signType,
            paySign: param.paySign,
            success: function (res) {
                // success
                console.log("支付")
                console.log(res)
                wx.navigateBack({
                    delta: 1, // 回退前 delta(默认为1) 页面
                    success: function (res) {
                        wx.showToast({
                            title: '支付成功',
                            icon: 'success',
                            duration: 2000
                        })
                    },
                    fail: function () {
                        // fail

                    },
                    complete: function () {
                        // complete
                    }
                })
            },
            fail: function (res) {
                // fail
                console.log("支付失败")
                console.log(res)
            },
            complete: function () {
                // complete
                console.log("pay complete")
            }
        })
    }
})
  • 第二步
    调用支付统一下单API来获取prepay_id,并将小程序调起支付数据需要签名的字段appId,timeStamp,nonceStr,package再次签名

后台代码

package cn.it.shop.action;import java.io.ByteArrayInputStream;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import cn.it.shop.util.MessageUtil;import cn.it.shop.util.PayUtil;import cn.it.shop.util.PaymentPo;import cn.it.shop.util.UUIDHexGenerator;import net.sf.json.JSONArray;import net.sf.json.JSONObject;/** 
* @author 
* @version 创建时间:2017年1月21日 下午4:59:03 
* 小程序端请求的后台action,返回签名后的数据传到前台
*/public class PayAction {    private String total_fee;//总金额
    private String body;//商品描述
    private String detail;//商品详情    
    private String attach;//附加数据
    private String time_start;//交易起始时间
    private String time_expire;//交易结束时间 
    private String openid;//用户标识

    private JSONArray jsonArray=new JSONArray();    public String pay() throws UnsupportedEncodingException, DocumentException{

         body = new String(body.getBytes("UTF-8"),"ISO-8859-1");  
        String appid = "替换为自己的小程序ID";//小程序ID
        String mch_id = "替换为自己的商户号";//商户号
        String nonce_str = UUIDHexGenerator.generate();//随机字符串
        String today = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());        String code = PayUtil.createCode(8);        String out_trade_no = mch_id+today+code;//商户订单号
        String spbill_create_ip = "替换为自己的终端IP";//终端IP
        String notify_url = "http://www.weixin.qq.com/wxpay/pay.php";//通知地址
        String trade_type = "JSAPI";//交易类型  
        String openid="替换为用户的openid";//用户标识

        /**/
        PaymentPo paymentPo = new PaymentPo();

        paymentPo.setAppid(appid);
        paymentPo.setMch_id(mch_id);
        paymentPo.setNonce_str(nonce_str);        String newbody=new String(body.getBytes("ISO-8859-1"),"UTF-8");//以utf-8编码放入paymentPo,微信支付要求字符编码统一采用UTF-8字符编码
        paymentPo.setBody(newbody);
        paymentPo.setOut_trade_no(out_trade_no);
        paymentPo.setTotal_fee(total_fee);
        paymentPo.setSpbill_create_ip(spbill_create_ip);
        paymentPo.setNotify_url(notify_url);
        paymentPo.setTrade_type(trade_type);
        paymentPo.setOpenid(openid);        // 把请求参数打包成数组
        Map<String, String> sParaTemp = new HashMap<String, String>();
        sParaTemp.put("appid", paymentPo.getAppid());
        sParaTemp.put("mch_id", paymentPo.getMch_id());
        sParaTemp.put("nonce_str", paymentPo.getNonce_str());
        sParaTemp.put("body",  paymentPo.getBody());
        sParaTemp.put("out_trade_no", paymentPo.getOut_trade_no());
        sParaTemp.put("total_fee",paymentPo.getTotal_fee());
        sParaTemp.put("spbill_create_ip", paymentPo.getSpbill_create_ip());
        sParaTemp.put("notify_url",paymentPo.getNotify_url());
        sParaTemp.put("trad



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

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

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

相关文章

  • 2017-06-20微信小程序-公众号热门文章信息流 demo代码
  • 2018-11-30微信小程序中如何来设置全局变量(代码)
  • 2018-11-30从零开发微信小程序(四)
  • 2018-11-30微信开发之开发者模式
  • 2018-11-30微信小程序中post方法与get方法的封装
  • 2018-11-30微信小程序完成轮播图效果的实例分享
  • 2018-11-30微信小程序开发怎样创建项目
  • 2018-11-30小程序开发试题库找答案功能
  • 2018-11-30微信小程序实现向左滑动删除效果
  • 2018-11-30微信小程序 textarea 的使用方法

文章分类

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

最近更新的内容

    • Event emitter的监听事件
    • 微信小程序 使用canvas制作K线实例详解
    • console怎样打印日志信息
    • 微信小程序云开发参考信息
    • 详解微信小程序解析网页内容实例介绍
    • 总结小程序开发中遇到的问题
    • 从零开始开发微信小程序步骤(三)
    • 微信小程序开发之分页滑动栏代码展示
    • 微信小程序实现手指缩放图片代码分享
    • 微信小程序中用Python生成二维码的两种方式

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

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