微信Native支付 商户端python SDK

本文介绍了如何使用Django实现微信Native支付模式二,包括支付流程、核心代码示例,以及自定义的随机字符串函数和签名校验方法。通过统一下单API生成预支付交易,用户扫码完成支付,同时讲解了微信支付API的使用和关键参数。
摘要由CSDN通过智能技术生成

最近接触到了微信支付,主要做的是用django实现PC端的Native支付模式,即商户系统页面生成支付二维码,用户用“扫一扫”完成支付的模式,下面简单了解一下微信支付的开发文档。

微信支付模式分类

  • 付款码支付
    主要应用线下面对面收银的场景;
  • Native支付
    Native支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。该模式适用于PC网站支付、实体店单品或订单支付、媒体广告支付等场景;
  • JSAPI支付
    JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付;
  • APP支付
    APP支付又称移动端支付,是商户通过在移动端应用APP中集成开放SDK调起微信支付模块完成支付的模式;
  • H5支付
    H5支付主要是在手机、ipad等移动设备中通过浏览器来唤起微信支付的支付产品;
  • 小程序支付
    小程序支付是专门被定义使用在小程序中的支付产品。目前在小程序中能且只能使用小程序支付的方式来唤起微信支付。

Native支付模式

Native支付有两种模式,我们可以根据支付场景选择相应的模式:

  • 模式一
    商户后台系统根据微信支付规则链接生成二维码,链接中带固定参数productid(可定义为产品标识或订单号)。用户扫码后,微信支付系统将productid和用户唯一标识(openid)回调商户后台系统(需要设置支付回调URL),商户后台系统根据productid生成支付交易,最后微信支付系统发起用户支付流程。

  • 模式二
    商户后台系统调用微信支付统一下单API生成预付交易,将接口返回的链接生成二维码,用户扫码后输入密码完成支付交易。该模式的预付单有效期为2小时,过期后无法支付。

相比之下,模式二较为简单,更容易上手,因此选择了模式二。

native模式二支付流程及核心代码(关键函数见尾部)

事先需获取到微信公众账号的appid和商户号mch_id

  1. 商户后台系统根据用户选购的商品生成订单;

    关键参数:生成订单时需提供product_id,商户订单号out_trade_no以及订单金额total_fee(单位分);
    
  2. 用户确认支付后调用微信支付统一下单API生成预支付交易;

    关键参数:UNIFIED_ORDER_URL统一下单地址,NOTIFY_URL自定义的支付回调地址,nonce_str随机字符串,sign签名,body商品描述,spbill_create_ip终端IP,trade_type此处为NATIVE。
    

    以上所有参数(包含appid、mch_id等)均用来构建xml请求参数,xml示例如下:

     <xml>
        <appid>xxxxxx</appid>
        <body>NATIVE支付测试</body>
        <mch_id>10000100</mch_id>
        <nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
        <notify_url>xxx.com</notify_url>
        <out_trade_no>1415659990</out_trade_no>
        <spbill_create_ip>0.0.0.0</spbill_create_ip>
        <total_fee>1</total_fee>
        <trade_type>NATIVE</trade_type>
        <sign>0CB01533B8C1EF103065174F50BCA001</sign>
     </xml>
    

    代码实现

    # 构建原始参数dict,之后转成xml格式
    params = {
         
            "appid": APP_ID,
            "mch_id": MCH_ID,
            "nonce_str": nonce_str,
            "out_trade_no": out_trade_no,
            "body": 'xxxx',
            "total_fee": total_fee,
            "spbill_create_ip": spbill_create_ip,
            "notify_url": NOTIFY_URL,
            "trade_type": "NATIVE",
            "product_id": product_id,
        }
    sign = 
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值