国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

uniapp前端+python后端=微信小程序支付到底怎么開發(fā)???國內(nèi)的資料為什么沒一篇能講清楚,簡(jiǎn)簡(jiǎn)單單的只需要3步就可以了-V2版本

這篇具有很好參考價(jià)值的文章主要介紹了uniapp前端+python后端=微信小程序支付到底怎么開發(fā)???國內(nèi)的資料為什么沒一篇能講清楚,簡(jiǎn)簡(jiǎn)單單的只需要3步就可以了-V2版本。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一.微信小程序支付

真的,在接到這個(gè)任務(wù)的時(shí)候,本以為很簡(jiǎn)單,不就是普通的瀏覽器復(fù)制粘貼,最不濟(jì)找下gpt給生成一下,但是到實(shí)際開發(fā)就不同了,不是后端出問題就是前端,搜資料,上百度上google,基本每一個(gè)人講的都不一樣,不是這問題就是那問題,特別是微信官方,自己接口的邏輯也不整清楚,就算是報(bào)錯(cuò),參數(shù)錯(cuò)誤連個(gè)提示也沒有,而且用python寫后端的少之又少,我只是想說,python-flask寫接口簡(jiǎn)直不要太好用,java真的太胖了,這里的胖就是指的是,像小程序這種邏輯和體量并不大的項(xiàng)目來說,python作為后端就是不是太好用

二.前期準(zhǔn)備(你必須會(huì)的,要準(zhǔn)備的)

2.1你必須會(huì)的

uniapp開發(fā)小程序的前端

這個(gè)國內(nèi)的資源還是蠻全的,一搜一大把,先搜《uniapp開發(fā)第一個(gè)小程序hello word》一天搞點(diǎn)到入門

python-flask開發(fā)小程序的后端

這個(gè)更多,先搜《python-flask如何開發(fā)后端接口》

2.2要準(zhǔn)備的

appid:不用多說,小程序的appid
mch_id:商家號(hào),先搜《微信支付》,點(diǎn)擊進(jìn)去,一通申請(qǐng),一通綁定到小程序
今天篇文章主要是講代碼開發(fā)的,需要講講怎么綁定的可以評(píng)論,專門來講講怎么綁定怎么申請(qǐng)或者
文章最后會(huì)寫怎么聯(lián)系我
key:商家支付密鑰
沒了,沒了,就這三個(gè),基本就是登錄注冊(cè),得到這些玩意

三.開始第一步

首先你有個(gè)可以獲取openid的接口,可以就是我們python-flask里面寫就ok了
先看看整體

import flask
from flask import request, jsonify, send_file
from gevent import pywsgi
from flask_cors import CORS
import requests
import json
from datetime import datetime
import hashlib
import string
import random
import xmltodict
import time
import threading

#你的代碼區(qū)開始



#你的代碼區(qū)結(jié)束

if __name__ == '__main__':
    server2 = pywsgi.WSGIServer(('0.0.0.0', 7004), server)
    server2.serve_forever()

我們就往開發(fā)到結(jié)束來進(jìn)行講解
首先還是你要有一個(gè)獲取openid的接口

@server.route('/api/GetOpenid')
def GetOpenidYSGJ():
    # 獲取用戶的code,從而獲取用戶的唯一標(biāo)識(shí)openid
    code = request.args.get('code')
    res = {}
    if code!="":
        response = requests.get('https://api.weixin.qq.com/sns/jscode2session?appid=xxxxxxxxxx&secret=1c56f6b24ad40c468879ae3bae6bcd5b&js_code='+code+'&grant_type=authorization_code')
        resdata=json.loads(response.text)
        try:
            if resdata['openid'] != "":
                res['openid'] = resdata['openid']
                return res
            else:
                res['openid'] = "0"
                return res
        except:
            res['openid'] = "0"
            return res
    else:
        res['openid']="0"
        return res

看懂了曬,前端訪問這個(gè)接口/api/GetOpenid,傳入code,code開發(fā)小程序的都是wx.login()或者uniapp開發(fā)的,uni.logo()就能獲取code,code以獲取就獲取到openid了

開始第二步

首先創(chuàng)建4個(gè)方法
1.獲取隨機(jī)字符串generate_nonce_str()
2.獲取簽名generate_sign((data, key),
3.將字典轉(zhuǎn)換為xml格式dict_to_xml(data)
4.將xml格式的數(shù)據(jù)轉(zhuǎn)換為字典xml_to_dict(xml_data)
分別是

def generate_nonce_str(length=32):
    chars = string.ascii_letters + string.digits
    return ''.join(random.choice(chars) for _ in range(length))
def generate_sign(data, key):
    sorted_keys = sorted(data.keys())
    stringA = '&'.join([f"{key}={data[key]}" for key in sorted_keys])
    stringSignTemp = f"{stringA}&key={key}".encode('utf-8')
    sign = hashlib.md5(stringSignTemp).hexdigest().upper()
    return sign


def dict_to_xml(data):
    """
    將字典轉(zhuǎn)換為xml格式
    """
    xml_data = ["<xml>"]
    for k, v in data.items():
        xml_data.append(f"<{k}>{v}</{k}>")
    xml_data.append("</xml>")
    return "".join(xml_data)

def xml_to_dict(xml_data):
    """
    將xml格式的數(shù)據(jù)轉(zhuǎn)換為字典
    """
    xml_dict = {}
    soup = BeautifulSoup(xml_data, 'xml')
    for item in soup.find_all():
        xml_dict[item.name] = item.text
    return xml_dict

創(chuàng)建微信支付接口請(qǐng)求unifiedorder

@server.route('/api/unifiedorder', methods=['POST'])
def unifiedorder():
    # 獲取請(qǐng)求中的訂單信息
    data = request.json
    # 獲取當(dāng)前時(shí)間戳
    client_ip = request.headers.get('X-Forwarded-For', request.headers.get('X-Real-IP', request.remote_addr))
    #獲取隨機(jī)字符串的方法
    sss=generate_nonce_str()
    # 構(gòu)造統(tǒng)一下單請(qǐng)求參數(shù)
    params = {
        'appid': '你的小程序appid',
        'mch_id': '商品號(hào)',
        'nonce_str': sss,
        'body': data['body'],
        'out_trade_no': data['out_trade_no'],
        'total_fee': data['total_fee'],
        'spbill_create_ip': client_ip,
        'notify_url': 'https://xxxxxxxxxx/wallpaper/api/your_notify_url',  # 異步通知地址
        'trade_type': 'JSAPI',  # 小程序支付
        'openid': data['openid'],  # 用戶在小程序中的openid
    }
    # 生成簽名
    sign = generate_sign(params, '微信商戶的密鑰V2的')
    params['sign'] = sign
    param = {'root': params}
    xml = xmltodict.unparse(param)
    # 將參數(shù)轉(zhuǎn)換為 XML 格式
    xml_data = dict_to_xml(params)

    # 發(fā)送請(qǐng)求到微信支付服務(wù)器
    response = requests.post('https://api.mch.weixin.qq.com/pay/unifiedorder', data=xml.encode('utf-8'),headers={'Content-Type': 'text/xml'})

    # 解析微信支付服務(wù)器的響應(yīng)
    result = xmltodict.parse(response.content.decode('utf-8'))
    # 封裝返回結(jié)果
    # 從微信支付服務(wù)器返回的結(jié)果中提取用于驗(yàn)證簽名的部分參數(shù)
    result_params = {
        'appId': '小程序的appid',
        'timeStamp': str(int(time.time())),
        'nonceStr': generate_nonce_str(),
        'package': "prepay_id="+result['xml']['prepay_id'],
        'signType': 'MD5',
    }
    result_params['paySign'] = generate_sign(result_params, '微信商戶的密鑰V2的')
    return json.dumps(result_params)

開始第三步,回調(diào)地址

創(chuàng)建python回調(diào)地址接口

@server.route('/api/your_notify_url', methods=['POST'])
def handle_payment_notification():
    # 處理微信支付結(jié)果異步通知的邏輯
    data = request.data
    # 在這里處理通知數(shù)據(jù),驗(yàn)證簽名等操作
    print("有用戶充值啦")
    # 解析微信支付服務(wù)器的響應(yīng)
    result = xmltodict.parse(data.decode('utf-8'))
    print(result)
    #獲取openid
    openid=result['xml']['openid']
    #獲取充值了多少
    cash_fee=result['xml']['cash_fee']
    # 狀態(tài)
    result_code = result['xml']['result_code']
    # 狀態(tài)2
    return_code = result['xml']['return_code']
    # 訂單號(hào)
    transaction_id = result['xml']['transaction_id']
    if result_code=="SUCCESS" and return_code=="SUCCESS":
        # 進(jìn)行你的數(shù)據(jù)處理
        print(openid)
        print(cash_fee)
        print(type(cash_fee))
    # 返回成功響應(yīng)給微信支付服務(wù)器
    # 構(gòu)建回復(fù)內(nèi)容
    response_data = {"code":"SUCCESS","message":"ok"}
    return 'SUCCESS',200

開始第四步,前端調(diào)用

我這里用的前端是uniapp
創(chuàng)建按鈕進(jìn)行請(qǐng)求
就是一個(gè)簡(jiǎn)單的創(chuàng)建按鈕,然后綁定事件,舉例綁定的事件是chongzhi()
具體事件代碼就是

generateUniqueOrderNumber() {
  // 這里可以使用你的邏輯生成唯一訂單號(hào)
  return 'your_order_' + new Date().getTime();
},
chongzhi(amount){
	const lll=this;
	try{
		// 假設(shè)以下參數(shù)是從前端獲取的
		const body = "Kbit";
		const total_fee = amount; // 訂單總金額,單位為分
		const openid = uni.getStorageSync("openid");
		
		// 生成商戶訂單號(hào),這里可以使用你自己的邏輯生成唯一訂單號(hào)
		const out_trade_no = this.generateUniqueOrderNumber();
		console.log("----------------"+out_trade_no)
		// 發(fā)送支付請(qǐng)求
		uni.request({
		  url: "https://你的服務(wù)器/api/unifiedorder",
		  method: "POST",
		  data: JSON.stringify({
		    body: body,
		    out_trade_no: out_trade_no,
		    total_fee: total_fee,
		    openid: openid,
		  }),
		  success: (res) => {
		    // 調(diào)起支付
		    uni.requestPayment({
		        provider: 'wxpay',
		    	timeStamp: res.data.timeStamp,
		    	nonceStr: res.data.nonceStr,
		    	package: res.data.package,
		    	signType: res.data.signType,
		    	paySign: res.data.paySign,
		    	success: function (res) {
		    		console.log(res);
					if(res.errMsg=="requestPayment:ok"){
						//成功付款,進(jìn)行查詢和提示成功
						//查詢余額
						//請(qǐng)求用戶的個(gè)人信息
						uni.showToast({
							title: "充值成功",
						})
		    	},
		    	fail: function (err) {
					console.log("失敗了")
		    		console.log(err);
		    	}
		    });
		  },
		  fail: (err) => {
		    console.error('支付請(qǐng)求失敗:', err);
			uni.showToast({
			  title: err,
			  duration: 2000, // 提示的延遲時(shí)間,單位毫秒,默認(rèn)值 1500
			  mask: true, // 是否顯示透明蒙層,防止觸摸穿透,默認(rèn)值 false
			  success: function() {
			    // 提示框關(guān)閉后的回調(diào)函數(shù)
			  }
			})
		  },
		});
		console.log(amount)
	}catch (e) {
	  // TODO handle the exception
	  console.log("充值失敗,聯(lián)系客服")
	  console.log(e)
	}
},

uniapp能寫后端嗎 python,uni-app,前端,python,微信小程序

是不是超級(jí)的簡(jiǎn)單,很簡(jiǎn)單的四步就能充值成功,前端其實(shí)沒啥講的,主要是python來做微信支付的后端很少人講到,所以才寫了這一篇,希望能幫到大家

總結(jié)

總之就是一個(gè)很簡(jiǎn)單的v2版本的微信支付,簡(jiǎn)單來說就是3個(gè)外部接口,分別是獲取openid的接口、微信支付主接口和回調(diào)接口,其他4個(gè)方法主要是來處理數(shù)據(jù),前端更簡(jiǎn)單,傳入該傳入的值,金額,主要坑的點(diǎn)是在簽名環(huán)節(jié),網(wǎng)上很多方法,我這個(gè)方法是百分之百可以用的,不會(huì)出現(xiàn)簽名錯(cuò)誤
如果不懂的,可以通過關(guān)注微信公眾號(hào):程序員PG
來聯(lián)系我
這邊會(huì)提供

  • 提供test的反向代理(如果沒有服務(wù)器想用自己的電腦當(dāng)服務(wù)器的,我可以用我的服務(wù)器給你做代理)
  • 提供源碼,更進(jìn)一步的指導(dǎo)
  • 提供技術(shù)服務(wù)

ok 這次就講到這里了,如果有大神或者其他伙伴看出問題的,歡迎評(píng)論,大家一起交流文章來源地址http://www.zghlxwxcb.cn/news/detail-814212.html

到了這里,關(guān)于uniapp前端+python后端=微信小程序支付到底怎么開發(fā)???國內(nèi)的資料為什么沒一篇能講清楚,簡(jiǎn)簡(jiǎn)單單的只需要3步就可以了-V2版本的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【微信小程序支付計(jì)算簽名值-前端】

    1、后端通過JSAPI下單接口獲取到發(fā)起支付的必要參數(shù)prepay_id,前端取到prepay_id就可以調(diào)用wx.requestPayment發(fā)起支付。調(diào)起支付的參數(shù)需要按照簽名規(guī)則進(jìn)行簽名計(jì)算。微信支付文檔 2、前端得到prepay_id后就可以按照規(guī)則計(jì)算簽名了。 2.1 構(gòu)造簽名串,簽名串一共有四行,每一行為

    2024年02月16日
    瀏覽(25)
  • 前端實(shí)現(xiàn)微信支付(H5,微信小程序)

    前端實(shí)現(xiàn)微信支付(H5,微信小程序)

    通常一些電商項(xiàng)目使用到微信支付操作,所以簡(jiǎn)單地介紹一下微信支付的具體流程。 微信支付是微信內(nèi)置微信瀏覽器(其他瀏覽器不支持)或者微信小程序的支付接口,主要負(fù)責(zé)用戶對(duì)商家執(zhí)行支付操作的流程。 例如常見的電商在下單環(huán)節(jié),就需要通過使用微信支付接口,

    2024年02月08日
    瀏覽(25)
  • uniapp兼容微信小程序和支付寶小程序遇到的坑

    uniapp兼容微信小程序和支付寶小程序遇到的坑

    改為v-if。 App端和H5端支持 v-html ,微信小程序會(huì)被轉(zhuǎn)為 rich-text,其他端不支持 v-html。 解決方法:去插件市場(chǎng)找一個(gè)支持跨端的富文本組件。 兼容微信小程序和支付寶小程序? pages.json: 給支付寶的導(dǎo)航欄設(shè)置 透明 agent頁面: 支付寶加上 my.setNavigationBar 設(shè)置標(biāo)題文字即可,

    2024年02月15日
    瀏覽(24)
  • 【uniapp】將微信小程序的代碼兼容支付寶小程序(持續(xù)更新)

    【uniapp】將微信小程序的代碼兼容支付寶小程序(持續(xù)更新)

    目前本身就有一套完善的微信小程序(兼容h5)的代碼,現(xiàn)在的需求是將它編譯成支付寶小程序,做好兼容的處理,以便后續(xù)接入支付寶服務(wù)商,在這里簡(jiǎn)單記錄一下目前發(fā)現(xiàn)的把微信小程序編譯成支付寶小程序的問題和解決方案。 建議配合其他人的記錄一起看,這里只是我

    2024年02月09日
    瀏覽(93)
  • 使用uniapp開發(fā)微信小程序的微信支付流程

    在我們做一些購物車的結(jié)算功能時(shí)是一定會(huì)有支付功能的,那我們?nèi)绾稳プ鑫⑿胖Ц哆@個(gè)功能呢,首先我們先要理清思路,并且要了解到接口需要哪些數(shù)據(jù)以及會(huì)返回哪些數(shù)據(jù) 注意:一定要先看接口文檔! 創(chuàng)建訂單。 ○ 請(qǐng)求創(chuàng)建訂單的 API 接口:把(訂單金額、收貨地址、

    2024年02月09日
    瀏覽(95)
  • 【微信小程序系列:三】前端實(shí)現(xiàn)微信支付與代扣簽約

    【微信小程序系列:三】前端實(shí)現(xiàn)微信支付與代扣簽約

    微信支付 算是比較常見的功能了,這里主要說下整個(gè)流程中 前端負(fù)責(zé) 實(shí)現(xiàn)的一些方面,其實(shí)官方文檔說得也很詳細(xì)了,可以直接看官方文檔。覺得文檔比較復(fù)雜的話,可以直接看我寫的~ 跳到官方文檔。 微信支付: 理清流程最重要,以購買一件A商品為例子。主要說明前端

    2024年02月11日
    瀏覽(26)
  • uniapp 小程序?qū)崿F(xiàn)微信授權(quán)登錄(前端和后端)

    uniapp 小程序?qū)崿F(xiàn)微信授權(quán)登錄(前端和后端)

    1.主要流程:先通過 uni.getUserProfile授權(quán)獲取用戶名稱和頭像等信息 在調(diào)用 uni.login 獲取微信登錄需要的臨時(shí)code 2. 前端代碼: 1.主要流程:在前端調(diào)用接口成功的將臨時(shí)code 傳遞給后端時(shí) ,后端通過調(diào)用微信的第三方接口拿到 openid, session_key 這兩個(gè)參數(shù),查詢數(shù)據(jù)庫是否有

    2024年02月16日
    瀏覽(30)
  • 全網(wǎng)最詳細(xì)實(shí)現(xiàn)微信小程序支付功能【前端部分】

    全網(wǎng)最詳細(xì)實(shí)現(xiàn)微信小程序支付功能【前端部分】

    用戶點(diǎn)擊立即購買后進(jìn)入確認(rèn)訂單頁面,在此頁面可選擇商品數(shù)量,是否使用優(yōu)惠券,以及一些簡(jiǎn)單的個(gè)人信息填寫,點(diǎn)擊支付輸入密碼則支付成功,如果點(diǎn)擊支付后沒有付款關(guān)閉了頁面會(huì)跳轉(zhuǎn)到待支付頁面并開始倒計(jì)時(shí)(待支付頁面顯示該商品適用的店鋪信息及個(gè)人信息訂

    2024年02月11日
    瀏覽(33)
  • uniapp開發(fā)APP跳轉(zhuǎn)微信小程序和支付寶小程序(安卓版)

    開發(fā)APP時(shí)需要支付時(shí)跳轉(zhuǎn)微信或者支付寶去支付,但是因?yàn)殂y行合作問題不能直接跳轉(zhuǎn),所以選擇跳轉(zhuǎn)到小程序頁面進(jìn)行支付,微信小程序和支付寶小程序?qū)懛ú煌?APP跳轉(zhuǎn)微信小程序 (需要manifest.json中APP模塊配置Share中微信分享保持開啟) 微信小程序原始id在微信開放平臺(tái)查

    2024年02月06日
    瀏覽(86)
  • 微信小程序完整項(xiàng)目實(shí)戰(zhàn)(前端+后端)

    微信小程序完整項(xiàng)目實(shí)戰(zhàn)(前端+后端)

    基于微信小程序的在線商城點(diǎn)單系統(tǒng) 前言:閑來無事,制作一個(gè)微信小程序商城。系統(tǒng)采用Java語言作為后端實(shí)現(xiàn)與小程序的交互,給用來學(xué)習(xí)或者想自己開個(gè)小店的朋友當(dāng)個(gè)參考。 小程序 管理端 1.創(chuàng)建maven project,先創(chuàng)建一個(gè)名為SpringBootDemo的項(xiàng)目,選擇【New Project】 然后在

    2024年02月03日
    瀏覽(98)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包