国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ WeChat アプレット WeChatの開(kāi)発 Koa2 を使用して WeChat QR コード スキャン決済を開(kāi)発する方法

Koa2 を使用して WeChat QR コード スキャン決済を開(kāi)発する方法

May 29, 2018 am 11:23 AM
koa2 開(kāi)発する

今回は、Koa2 を使用して WeChat QR コード スキャンと支払いを開(kāi)発する方法を説明します。Koa2 を使用して WeChat QR コード スキャンと支払いを開(kāi)発する場(chǎng)合の 注意事項(xiàng) は何ですか。

私は少し前に機(jī)能を開(kāi)発していましたが、その要件は WeChat QR コードをスキャンして支払うことです。このシナリオは、さまざまな電子ショッピング モール、オフライン自動(dòng)販売機(jī)などすべてにこの機(jī)能が搭載されています。普段、私は単なるユーザーですが、今は開(kāi)発者です。これは小さな落とし穴ではありません。そこで、記録としてブログを書(shū)きます。

注: WeChat QR コード決済を開(kāi)発するには、対応する販売アカウントの許可が必要です。許可されていない場(chǎng)合は開(kāi)発できません。対応する権限がない場(chǎng)合は、この記事を読むことはお?jiǎng)幛幛扦蓼护蟆?

2つのモード

WeChat支払い文書(shū)を開(kāi)くと、モード1とモード2の2つの支払いモードが表示されます。どちらのフローチャートも WeChat のドキュメントに記載されています (ただし、正直に言うと、図は非常に見(jiàn)苦しいです)。

この 2 つの違いはドキュメントで指摘されています:

モデル 1 の開(kāi)発前に、販売者はパブリック プラットフォームのバックエンドに支払いコールバック URL を設(shè)定する必要があります。 URL によって実裝される機(jī)能: ユーザーが QR コードをスキャンした後、WeChat 支払いシステムによってコールバックされる productid と openid を受け取ります。

モード1と比較して、モード2のプロセスはより単純であり、設(shè)定されたコールバック支払いURLに依存しません。販売者のバックエンド システムは、最初に WeChat 支払いの統(tǒng)合注文インターフェイスを呼び出し、リンク パラメータ code_url を返します。ユーザーは WeChat クライアントを使用してコードをスキャンし、開(kāi)始します。支払い。注: code_url は 2 時(shí)間有効です。有効期限が切れると、コードをスキャンしても支払いを開(kāi)始できません。

オンラインで買(mǎi)い物をする場(chǎng)合は、QR コードをスキャンして支払うための特別なページが表示され、支払いが成功すると、このページが再びコールバック ページに戻り、支払いが完了したことが通知されます。成功。 2 番目の方法は正しい可能性は低くなりますが、2 番目の方法は開(kāi)発が比較的簡(jiǎn)単です。

この記事では主にモード2の開(kāi)発について紹介します

Koa2の簡(jiǎn)単な開(kāi)発環(huán)境を構(gòu)築する

Koa2の開(kāi)発環(huán)境を手早く構(gòu)築するには、koa-generatorを使用することをお?jiǎng)幛幛筏蓼埂%攻悭榨┅`ルディングは、Koa プロジェクトの開(kāi)始時(shí)にいくつかの基本的なミドルウェア作成手順を節(jié)約するのに役立ちます。 (Koa を?qū)Wびたい場(chǎng)合は、自分で構(gòu)築するのが最善です。すでに Koa を知っている場(chǎng)合は、簡(jiǎn)単なスキャフォールディングを使用できます。)

まず、koa-generator をグローバルにインストールします:

npm?install?-g?koa-generator
#or
yarn?global?add?koa-generator
koa-generator
npm?install
#or
yarn

然后找一個(gè)目錄用來(lái)存放Koa項(xiàng)目,我們打算給這個(gè)項(xiàng)目取個(gè)名字叫做 koa-wechatpay ,然后就可以輸入 koa2 koa-wechatpay 。然后腳手架會(huì)自動(dòng)創(chuàng)建相應(yīng)文件夾 koa-wechatpay ,并生成基本骨架。進(jìn)入這個(gè)文件夾,安裝相應(yīng)的插件。輸入:

{
?"title":?"koa2?json"
}

接著你可以輸入 npm start 或者 yarn start 來(lái)運(yùn)行項(xiàng)目(默認(rèn)監(jiān)聽(tīng)在3000端口)。

如果不出意外,你的項(xiàng)目跑起來(lái)了,然后我們用postman測(cè)試一下:

這條路由是在 routes/index.js 里。

如果你看到了

npm?install?md5?--save
#or
yarn?add?md5

就說(shuō)明沒(méi)問(wèn)題。(如果有問(wèn)題,檢查一下是不是端口被占用了等等。)

接下來(lái)在 routes 文件夾里我們新建一個(gè) wechatpay.js 的文件用來(lái)書(shū)寫(xiě)我們的流程。

簽名

跟微信的服務(wù)器交流很關(guān)鍵的一環(huán)是簽名必須正確,如果簽名不正確,那么一切都白搭。

首先我們需要去公眾號(hào)的后臺(tái)獲取我們所需要的如下相應(yīng)的id或者key的信息。其中 notify_urlserver_ip 是用于當(dāng)我們支付成功后,微信會(huì)主動(dòng)往這個(gè)url post 支付成功的信息。

簽名算法如下:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=4_3

為了簽名正確,我們需要安裝一下 md5次に、 Koa プロジェクトを保存するために使用されるディレクトリ。このプロジェクトに koa-wechatpay という名前を付け、「koa2 koa-wechatpay」と入力する予定です。次に、スキャフォールディングによって、対応するフォルダー koa-wechatpay が自動(dòng)的に作成され、基本的なスケルトンが生成されます。このフォルダーに移動(dòng)し、対応するプラグインをインストールします。次のように入力します:

const?md5?=?require('md5')
const?appid?=?'xxx'
const?mch_id?=?'yyy'
const?mch_api_key?=?'zzz'
const?notify_url?=?'http://xxx/api/notify'?//?服務(wù)端可訪問(wèn)的域名和接口
const?server_ip?=?'xx.xx.xx.xx'?//?服務(wù)端的ip地址
const?trade_type?=?'NATIVE'?//?NATIVE對(duì)應(yīng)的是二維碼掃碼支付
let?body?=?'XXX的充值支付'?//?用于顯示在支付界面的提示詞

次に、npm start または yarn start を入力してプロジェクトを?qū)g行します (デフォルトのリスニング ポートは 3000)。

??他に何も問(wèn)題がなければ、プロジェクトは実行されており、postman を使用してテストします。 ????このルートは routes/index.js にあります。 ??????????
const?signString?=?(fee,?ip,?nonce)?=>?{
?let?tempString?=?`appid=${appid}&body=${body}&mch_id=${mch_id}&nonce_str=${nonce}&notify_url=${notify_url}&out_trade_no=${nonce}&spbill_create_ip=${ip}&total_fee=${fee}&trade_type=${trade_type}&key=${mch_api_key}`
?return?md5(tempString).toUpperCase()
}
??を見(jiàn)かけたら、教えてください問(wèn)題ない。 (問(wèn)題がある場(chǎng)合は、ポートが占有されていないか確認(rèn)してください。) ????次に、Write our 用の新しいファイル wechatpay.jsroutes フォルダーに作成します。プロセス。 ????????署名???????? WeChat サーバーとの通信で重要なのは、署名が正しくなければすべてが無(wú)駄になります。 ????まず、公式アカウントのバックエンドに移動(dòng)して、次の対応する ID または必要なキー情報(bào)を取得する必要があります。このうち、notify_urlserver_ip は支払いが成功したときに使用され、WeChat はこの URL post に支払い成功情報(bào)を積極的に送信します。 ????署名アルゴリズムは次のとおりです: https://??pay.weixin.qq.com/wiki /doc/api/native.php?chapter=4_3????正しく署名するには、md5 をインストールする必要があります。 ??
const?xmlBody?=?(fee,?nonce_str)?=>?{
?const?xml?=?`
?<xml>
?<appid>${appid}</appid>
?<body>${body}</body>
?<mch_id>${mch_id}</mch_id>
?<nonce_str>${nonce_str}</nonce_str>
?<notify_url>${notify_url}</notify_url>
?<out_trade_no>${nonce_str}</out_trade_no>
?<total_fee>${fee}</total_fee>
?<spbill_create_ip>${server_ip}</spbill_create_ip>
?<trade_type>NATIVE</trade_type>
?<sign>${signString(fee,?server_ip,?nonce_str)}</sign>
?</xml>
?`
?return?{
?xml,
?out_trade_no:?nonce_str
?}
}
rree??次に、署名関數(shù)の作成を開(kāi)始します:??
const?signString?=?(fee,?ip,?nonce)?=>?{
?let?tempString?=?`appid=${appid}&body=${body}&mch_id=${mch_id}&nonce_str=${nonce}&notify_url=${notify_url}&out_trade_no=${nonce}&spbill_create_ip=${ip}&total_fee=${fee}&trade_type=${trade_type}&key=${mch_api_key}`
?return?md5(tempString).toUpperCase()
}

其中 fee 是要充值的費(fèi)用,以分為單位。比如要充值1塊錢(qián), fee 就是100。ip是個(gè)比較隨意的選項(xiàng),只要符合規(guī)則的ip經(jīng)過(guò)測(cè)試都是可以的,下文里我用的是 server_ip 。 nonce 就是微信要求的不重復(fù)的32位以?xún)?nèi)的字符串,通常可以使用訂單號(hào)等唯一標(biāo)識(shí)的字符串。

由于跟微信的服務(wù)器交流都是用xml來(lái)交流,所以現(xiàn)在我們要手動(dòng)組裝一下post請(qǐng)求xml :

const?xmlBody?=?(fee,?nonce_str)?=>?{
?const?xml?=?`
?<xml>
?<appid>${appid}</appid>
?<body>${body}</body>
?<mch_id>${mch_id}</mch_id>
?<nonce_str>${nonce_str}</nonce_str>
?<notify_url>${notify_url}</notify_url>
?<out_trade_no>${nonce_str}</out_trade_no>
?<total_fee>${fee}</total_fee>
?<spbill_create_ip>${server_ip}</spbill_create_ip>
?<trade_type>NATIVE</trade_type>
?<sign>${signString(fee,?server_ip,?nonce_str)}</sign>
?</xml>
?`
?return?{
?xml,
?out_trade_no:?nonce_str
?}
}

如果你怕自己的簽名的 xml 串有問(wèn)題,可以提前在微信提供的簽名校驗(yàn)工具里先校驗(yàn)一遍,看看是否能通過(guò)。

發(fā)送請(qǐng)求

因?yàn)樾枰⑿欧?wù)端發(fā)請(qǐng)求,所以我選擇了 axios 這個(gè)在瀏覽器端和node端都能發(fā)起ajax請(qǐng)求的庫(kù)。

安裝過(guò)程不再贅述。繼續(xù)在 wechatpay.js 寫(xiě)發(fā)請(qǐng)求的邏輯。

由于微信給我們返回的也將是一個(gè)xml格式的字符串。所以我們需要預(yù)先寫(xiě)好解析函數(shù),將xml解析成js對(duì)象。為此你可以安裝一個(gè) xml2js 。安裝過(guò)程跟上面的類(lèi)似,不再贅述。

微信會(huì)給我們返回一個(gè)諸如下面格式的 xml 字符串:

<xml><return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wx742xxxxxxxxxxxxx]]></appid>
<mch_id><![CDATA[14899xxxxx]]></mch_id>
<nonce_str><![CDATA[R69QXXXXXXXX6O]]></nonce_str>
<sign><![CDATA[79F0891XXXXXX189507A184XXXXXXXXX]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<prepay_id><![CDATA[wx152316xxxxxxxxxxxxxxxxxxxxxxxxxxx]]></prepay_id>
<trade_type><![CDATA[NATIVE]]></trade_type>
<code_url><![CDATA[weixin://wxpay/xxxurl?pr=dQNakHH]]></code_url>
</xml>

我們的目標(biāo)是轉(zhuǎn)為如下的js對(duì)象,好讓我們用js來(lái)操作數(shù)據(jù):

{
?return_code:?'SUCCESS',?//?SUCCESS?或者?FAIL
?return_msg:?'OK',
?appid:?'wx742xxxxxxxxxxxxx',
?mch_id:?'14899xxxxx',
?nonce_str:?'R69QXXXXXXXX6O',
?sign:?'79F0891XXXXXX189507A184XXXXXXXXX',
?result_code:?'SUCCESS',
?prepay_id:?'wx152316xxxxxxxxxxxxxxxxxxxxxxxxxxx',
?trade_type:?'NATIVE',
?code_url:?'weixin://wxpay/xxxurl?pr=dQNakHH'?//?用于生成支付二維碼的鏈接
}

于是我們寫(xiě)一個(gè)函數(shù),調(diào)用 xml2js 來(lái)解析xml:

//?將XML轉(zhuǎn)為JS對(duì)象
const?parseXML?=?(xml)?=>?{
?return?new?Promise((res,?rej)?=>?{
?xml2js.parseString(xml,?{trim:?true,?explicitArray:?false},?(err,?json)?=>?{
?if?(err)?{
?rej(err)
?}?else?{
?res(json.xml)
?}
?})
?})
}

上面的代碼返回了一個(gè) Promise 對(duì)象,因?yàn)?xml2js 的操作是在回調(diào)函數(shù)里返回的結(jié)果,所以為了配合Koa2的 async 、 await ,我們可以將其封裝成一個(gè) Promise 對(duì)象,將解析完的結(jié)果通過(guò) resolve 返回回去。這樣就能用 await 來(lái)取數(shù)據(jù)了:

const?axios?=?require('axios')
const?url?=?'https://api.mch.weixin.qq.com/pay/unifiedorder'?//?微信服務(wù)端地址
const?pay?=?async?(ctx)?=>?{
?const?form?=?ctx.request.body?//?通過(guò)前端傳來(lái)的數(shù)據(jù)
?const?orderNo?=?'XXXXXXXXXXXXXXXX'?//?不重復(fù)的訂單號(hào)
?const?fee?=?form.fee?//?通過(guò)前端傳來(lái)的費(fèi)用值
?const?data?=?xmlBody(fee,?orderNo)?//?fee是費(fèi)用,orderNo是訂單號(hào)(唯一)
?const?res?=?await?axios.post(url,?{
?data:?data.xml
?}).then(async?res?=>?{
?const?resJson?=?await?parseXML(res.data)
?return?resJson?//?拿到返回的數(shù)據(jù)
?}).catch(err?=>?{
?console.log(err)
?})
?if?(res.return_code?===?'SUCCESS')?{?//?如果返回的
?return?ctx.body?=?{
?success:?true,
?message:?'請(qǐng)求成功',
?code_url:?res.code_url,?//?code_url就是用于生成支付二維碼的鏈接
?order_no:?orderNo?//?訂單號(hào)
?}
?}
?ctx.body?=?{
?success:?false,
?message:?'請(qǐng)求失敗'
?}
}
router.post('/api/pay',?pay)
module.exports?=?router

然后我們要將這個(gè)router掛載到根目錄的 app.js 里去。

找到之前默認(rèn)的兩個(gè)路由,一個(gè) index ,一個(gè) user

const?index?=?require('./routes/index')
const?users?=?require('./routes/users')
const?wechatpay?=?require('./routes/wechatpay')?//?加在這里

然后到頁(yè)面底下掛載這個(gè)路由:

//?routes
app.use(index.routes(),?index.allowedMethods())
app.use(users.routes(),?users.allowedMethods())
app.use(wechatpay.routes(),?users.allowedMethods())?//?加在這里

于是你就可以通過(guò)發(fā)送 /api/pay 來(lái)請(qǐng)求二維碼數(shù)據(jù)啦。(如果有跨域需要自己考慮解決跨域方案,可以跟Koa放在同域里,也可以開(kāi)一層proxy來(lái)轉(zhuǎn)發(fā),也可以開(kāi)CORS頭等等)

注意, 本例里是用前端來(lái)生成二維碼,其實(shí)也可以通過(guò)后端生成二維碼,然后再返回給前端。不過(guò)為了簡(jiǎn)易演示,本例采用前端通過(guò)獲取 code_url 后,在前端生成二維碼。

展示支付二維碼

前端我用的是 Vue ,當(dāng)然你可以選擇你喜歡的前端框架。這里關(guān)注點(diǎn)在于通過(guò)拿到剛才后端傳過(guò)來(lái)的 code_url 來(lái)生成二維碼。

在前端,我使用的是 @xkeshi/vue-qrcode 這個(gè)庫(kù)來(lái)生成二維碼。它調(diào)用特別簡(jiǎn)單:

import?VueQrcode?from?'@xkeshi/vue-qrcode'
export?default?{
?components:?{
?VueQrcode
?},
?//?...其他代碼
}

然后就可以在前端里用 <vue-qrcode> 的組件來(lái)生成二維碼了:

<vue-qrcode :value="codeUrl" :options="{ size: 200 }">

放到Dialog里就是這樣的效果:

文本是我自己添加的

?

付款成功自動(dòng)刷新頁(yè)面

有兩種將支付成功寫(xiě)入數(shù)據(jù)庫(kù)的辦法。

一種是在打開(kāi)了掃碼對(duì)話框后,不停向微信服務(wù)端輪詢(xún)支付結(jié)果,如果支付成功,那么就向后端發(fā)起請(qǐng)求,告訴后端支付成功,讓后端寫(xiě)入數(shù)據(jù)庫(kù)。

一種是后端一直開(kāi)著接口,等微信主動(dòng)給后端的 notify_url 發(fā)起post請(qǐng)求,告訴后端支付結(jié)果,讓后端寫(xiě)入數(shù)據(jù)庫(kù)。然后此時(shí)前端向后端輪詢(xún)的時(shí)候應(yīng)該是去數(shù)據(jù)庫(kù)取輪詢(xún)?cè)撚唵蔚闹Ц督Y(jié)果,如果支付成功就關(guān)閉Dialog。

第一種比較簡(jiǎn)單但是不安全:試想萬(wàn)一用戶支付成功的同時(shí)關(guān)閉了頁(yè)面,或者用戶支付成功了,但是網(wǎng)絡(luò)有問(wèn)題導(dǎo)致前端沒(méi)法往后端發(fā)支付成功的結(jié)果,那么后端就一直沒(méi)辦法寫(xiě)入支付成功的數(shù)據(jù)。

第二種雖然麻煩,但是保證了安全。所有的支付結(jié)果都必須等微信主動(dòng)向后端通知,后端存完數(shù)據(jù)庫(kù)后再返回給前端消息。這樣哪怕用戶支付成功的同時(shí)關(guān)閉了頁(yè)面,下次再打開(kāi)的時(shí)候,由于數(shù)據(jù)庫(kù)已經(jīng)寫(xiě)入了,所以拿到的也是支付成功的結(jié)果。

所以 付款成功自動(dòng)刷新頁(yè)面 這個(gè)部分我們分為兩個(gè)部分來(lái)說(shuō):

前端部分

Vue的data部分

data:?{
?payStatus:?false,?//?未支付成功
?retryCount:?0,?//?輪詢(xún)次數(shù),從0-200
?orderNo:?'xxx',?//?從后端傳來(lái)的order_no
?codeUrl:?'xxx'?//?從后端傳來(lái)的code_url
}

在methods里寫(xiě)一個(gè)查詢(xún)訂單信息的方法:

//?...
handleCheckBill?()?{
?return?setTimeout(()?=>?{
?if?(!this.payStatus?&&?this.retryCount?< 120) {
 this.retryCount += 1
 axios.post(&#39;/api/check-bill&#39;, { // 向后端請(qǐng)求訂單支付信息
 orderNo: this.orderNo
 })
 .then(res =>?{
?if?(res.data.success)?{
?this.payStatus?=?true
?location.reload()?//?偷懶就用reload重新刷新頁(yè)面
?}?else?{
?this.handleCheckBill()
?}
?}).catch(err?=>?{
?console.log(err)
?})
?}?else?{
?location.reload()
?}
?},?1000)
}

在打開(kāi)二維碼Dialog的時(shí)候,這個(gè)方法就啟用了。然后就開(kāi)始輪詢(xún)。我訂了一個(gè)時(shí)間,200s后如果還是沒(méi)有付款信息也自動(dòng)刷新頁(yè)面。實(shí)際上你可以自己根據(jù)項(xiàng)目的需要來(lái)定義這個(gè)時(shí)間。

后端部分

前端到后端只有一個(gè)接口,但是后端有兩個(gè)接口。一個(gè)是用來(lái)接收微信的推送,一個(gè)是用來(lái)接收前端的查詢(xún)請(qǐng)求。

先來(lái)寫(xiě)最關(guān)鍵的微信的推送請(qǐng)求處理。由于我們接收微信的請(qǐng)求是在Koa的路由里,并且是以流的形式傳輸?shù)?。需要讓Koa支持解析xml格式的body,所以需要安裝一個(gè)rawbody 來(lái)獲取xml格式的body。

//?處理微信支付回傳notify
//?如果收到消息要跟微信回傳是否接收到
const?handleNotify?=?async?(ctx)?=>?{
?const?xml?=?await?rawbody(ctx.req,?{
?length:?ctx.request.length,
?limit:?'1mb',
?encoding:?ctx.request.charset?||?'utf-8'
?})
?const?res?=?await?parseXML(xml)?//?解析xml
?if?(res.return_code?===?'SUCCESS')?{
?if?(res.result_code?===?'SUCCESS')?{?//?如果都為SUCCESS代表支付成功
?//?...?這里是寫(xiě)入數(shù)據(jù)庫(kù)的相關(guān)操作
?//?開(kāi)始回傳微信
?ctx.type?=?'application/xml'?//?指定發(fā)送的請(qǐng)求類(lèi)型是xml
?//?回傳微信,告訴已經(jīng)收到
?return?ctx.body?=?`<xml>
?<return_code><![CDATA[SUCCESS]]></return_code>
?<return_msg><![CDATA[OK]]></return_msg>
?</xml>
?`
?}
?}
?//?如果支付失敗,也回傳微信
?ctx.status?=?400
?ctx.type?=?'application/xml'
?ctx.body?=?`<xml>
?<return_code><![CDATA[FAIL]]></return_code>
?<return_msg><![CDATA[OK]]></return_msg>
?</xml>
?`
}
router.post('/api/notify',?handleNotify)

這里的坑就是Koa處理微信回傳的xml。如果不知道是以 raw-body 的形式回傳的,會(huì)調(diào)試半天。。

接下來(lái)這個(gè)就是比較簡(jiǎn)單的給前端回傳的了。

const?checkBill?=?async?(ctx)?=>?{
?const?form?=?ctx.request.body
?const?orderNo?=?form.orderNo
?const?result?=?await?數(shù)據(jù)庫(kù)操作
?if?(result)?{?//?如果訂單支付成功
?return?ctx.body?=?{
?success:?true
?}
?}
?ctx.status?=?400
?ctx.body?=?{
?success:?false
?}
}
router.post('/api/check-bill',?checkBill)

相信看了本文案例你已經(jīng)掌握了方法,更多精彩請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

推薦閱讀:

如何操作Koa2微信公眾號(hào)開(kāi)發(fā)之本地開(kāi)發(fā)調(diào)試環(huán)境搭建

如何操作Koa2微信公眾號(hào)實(shí)現(xiàn)消息管理

以上がKoa2 を使用して WeChat QR コード スキャン決済を開(kāi)発する方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類(lèi)リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

おすすめのAI支援プログラミングツール4選 おすすめのAI支援プログラミングツール4選 Apr 22, 2024 pm 05:34 PM

この AI 支援プログラミング ツールは、急速な AI 開(kāi)発のこの段階において、多數(shù)の有用な AI 支援プログラミング ツールを発掘しました。 AI 支援プログラミング ツールは、開(kāi)発効率を向上させ、コードの品質(zhì)を向上させ、バグ率を減らすことができます。これらは、現(xiàn)代のソフトウェア開(kāi)発プロセスにおける重要なアシスタントです。今日は Dayao が 4 つの AI 支援プログラミング ツールを紹介します (すべて C# 言語(yǔ)をサポートしています)。皆さんのお役に立てれば幸いです。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot は、より少ない労力でより迅速にコードを作成できるようにする AI コーディング アシスタントであり、問(wèn)??題解決とコラボレーションにより集中できるようになります。ギット

どのAIプログラマーが一番優(yōu)れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る どのAIプログラマーが一番優(yōu)れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る Apr 07, 2024 am 09:10 AM

世界初の AI プログラマー Devin の誕生から 1 か月も経たない 2022 年 3 月 3 日、プリンストン大學(xué)の NLP チームはオープンソース AI プログラマー SWE-agent を開(kāi)発しました。 GPT-4 モデルを利用して、GitHub リポジトリの問(wèn)題を自動(dòng)的に解決します。 SWE ベンチ テスト セットにおける SWE エージェントのパフォーマンスは Devin と同様で、平均 93 秒かかり、問(wèn)題の 12.29% を解決しました。専用端末と対話することで、SWE エージェントはファイルの內(nèi)容を開(kāi)いて検索したり、自動(dòng)構(gòu)文チェックを使用したり、特定の行を編集したり、テストを作成して実行したりできます。 (注: 上記の內(nèi)容は元の內(nèi)容を若干調(diào)整したものですが、原文の重要な情報(bào)は保持されており、指定された文字?jǐn)?shù)制限を超えていません。) SWE-A

Go 言語(yǔ)を使用してモバイル アプリケーションを開(kāi)発する方法を?qū)Wぶ Go 言語(yǔ)を使用してモバイル アプリケーションを開(kāi)発する方法を?qū)Wぶ Mar 28, 2024 pm 10:00 PM

Go 言語(yǔ)開(kāi)発モバイル アプリケーション チュートリアル モバイル アプリケーション市場(chǎng)が活況を続ける中、ますます多くの開(kāi)発者が Go 言語(yǔ)を使用してモバイル アプリケーションを開(kāi)発する方法を検討し始めています。シンプルで効率的なプログラミング言語(yǔ)として、Go 言語(yǔ)はモバイル アプリケーション開(kāi)発でも大きな可能性を示しています。この記事では、Go 言語(yǔ)を使用してモバイル アプリケーションを開(kāi)発する方法を詳しく紹介し、読者がすぐに始めて獨(dú)自のモバイル アプリケーションの開(kāi)発を開(kāi)始できるように、具體的なコード例を添付します。 1. 準(zhǔn)備 始める前に、開(kāi)発環(huán)境とツールを準(zhǔn)備する必要があります。頭

Go 言語(yǔ)のフロントエンド テクノロジーの探求: フロントエンド開(kāi)発の新しいビジョン Go 言語(yǔ)のフロントエンド テクノロジーの探求: フロントエンド開(kāi)発の新しいビジョン Mar 28, 2024 pm 01:06 PM

Go 言語(yǔ)は、高速で効率的なプログラミング言語(yǔ)として、バックエンド開(kāi)発の分野で広く普及しています。ただし、Go 言語(yǔ)をフロントエンド開(kāi)発と結(jié)びつける人はほとんどいません。実際、フロントエンド開(kāi)発に Go 言語(yǔ)を使用すると、効率が向上するだけでなく、開(kāi)発者に新たな視野をもたらすことができます。この記事では、フロントエンド開(kāi)発に Go 言語(yǔ)を使用する可能性を探り、読者がこの分野をよりよく理解できるように具體的なコード例を示します。従來(lái)のフロントエンド開(kāi)発では、ユーザー インターフェイスの構(gòu)築に JavaScript、HTML、CSS がよく使用されます。

最も人気のある 5 つの Go 言語(yǔ)ライブラリの概要: 開(kāi)発に不可欠なツール 最も人気のある 5 つの Go 言語(yǔ)ライブラリの概要: 開(kāi)発に不可欠なツール Feb 22, 2024 pm 02:33 PM

最も人気のある 5 つの Go 言語(yǔ)ライブラリの概要: 特定のコード例が必要な、開(kāi)発に不可欠なツール Go 言語(yǔ)は、その誕生以來(lái)、広く注目され、応用されてきました。新しい効率的で簡(jiǎn)潔なプログラミング言語(yǔ)としての Go の急速な開(kāi)発は、豊富なオープンソース ライブラリのサポートと切り離すことができません。この記事では、Go 言語(yǔ)ライブラリの中で最も人気のある 5 つを紹介します. これらのライブラリは Go 開(kāi)発において重要な役割を果たし、開(kāi)発者に強(qiáng)力な機(jī)能と便利な開(kāi)発エクスペリエンスを提供します。同時(shí)に、これらのライブラリの用途と機(jī)能をよりよく理解するために、具體的なコード例を示して説明します。

Android 開(kāi)発に最適な Linux ディストリビューションはどれですか? Android 開(kāi)発に最適な Linux ディストリビューションはどれですか? Mar 14, 2024 pm 12:30 PM

Android 開(kāi)発は多忙で刺激的な仕事であり、開(kāi)発に適した Linux ディストリビューションを選択することが特に重要です。數(shù)多くある Linux ディストリビューションの中で、Android 開(kāi)発に最適なのはどれでしょうか?この記事では、この問(wèn)題をいくつかの側(cè)面から検討し、具體的なコード例を示します。まず、現(xiàn)在人気のある Linux ディストリビューション (Ubuntu、Fedora、Debian、CentOS など) をいくつか見(jiàn)てみましょう。これらにはそれぞれ獨(dú)自の利點(diǎn)と特徴があります。

VSCode 開(kāi)発にはどのフレームワークが最適ですか? VSCode 開(kāi)発にはどのフレームワークが最適ですか? Mar 25, 2024 pm 02:03 PM

VSCode は、開(kāi)発者に広く愛(ài)用されている、強(qiáng)力かつ柔軟で拡張が簡(jiǎn)単なオープン ソース コード エディターです。さまざまなプロジェクトのニーズを満たすために、多くのプログラミング言語(yǔ)とフレームワークをサポートしています。ただし、VSCode の利點(diǎn)はフレームワークによって異なる場(chǎng)合があります。この記事では、さまざまなフレームワークの開(kāi)発における VSCode の適用性について説明し、具體的なコード例を示します。 1.ReactReact は、ユーザー インターフェイスの構(gòu)築に使用される人気のある JavaScript ライブラリです。 Reactを使ってプロジェクトを開(kāi)発する場(chǎng)合、

総合ガイド: Java 仮想マシンのインストール プロセスの詳細(xì) 総合ガイド: Java 仮想マシンのインストール プロセスの詳細(xì) Jan 24, 2024 am 09:02 AM

Java 開(kāi)発の必需品: Java 仮想マシンのインストール手順の詳細(xì)な説明、必要な特定のコード例 コンピューター科學(xué)技術(shù)の発展に伴い、Java 言語(yǔ)は最も広く使用されるプログラミング言語(yǔ)の 1 つになりました。クロスプラットフォームとオブジェクト指向という利點(diǎn)があり、開(kāi)発者にとって徐々に好まれる言語(yǔ)になってきました。開(kāi)発に Java を使用する前に、まず Java 仮想マシン (JavaVirtualMachine、JVM) をインストールする必要があります。この記事では、Java 仮想マシンのインストール手順を詳細(xì)に説明し、具體的なコード例を示します。

See all articles