微信の支払いはまた成功して私に人間として教えてくれた.
33817 ワード
时间が过ぎるのが速くて、あっという间に就职の先端はすでにいくつかの年になって、多すぎるシーンを见て、思いがけない间违い、自分が十分に成熟して冷静だと思っている时、支払いはもう一度私に教えて、どのように一人になります.の
事の経緯は大体このようにして、会社はh 5の新しいプロジェクトがあって、それから再開発する時ドッキングして支払う必要があります.調査研究を経て、後に微信の支払いと支付宝の支払いだけを計画して、ここでまず支付宝の支払いapiの開発者に敬意を表して、本当に使いやすいです.それからまた微信ができます...h 5支払い、公衆番号支払い、そして小さなプログラム支払いがあります...ここで皆さんにお勧めします.もし本当に多方面にログインして、支払う时、やはり微信のオープンプラットフォームを使って、结局は少子優生に属して、幸せな一生の選択を探して、さもなくば私の次の経験があるかもしれません.
h 5アリペイ支払い
おおよその支払いを開始する過程は以下の通りである.注文情報 を作成する.返却フォーム を入手レンダーフォーム フォーム提出 クライアント呼び出し、プロジェクトはvueを使用して、直接コンポーネントを貼り付け、上の内容をパラメータとしてコンポーネントに伝達するok フォームなので、v-htmlでデータバインドして、正常に支払を呼び出す必要があるので注意してください.
微信支払いのホームページ支払い
大体の手順は上記と同じですが、微信h 5の支払いは携帯電話のブラウザでしかテストできません.バックグラウンドインタフェースを呼び出し、注文を作成する(微信支払いはjsapiを初期化する必要がある) 支払開始
微信内蔵ブラウザ支払い調整初期化微信支払jsapi
~~2. 内容を返す...など、意外にも報告が間違っていて、~~統一注文にはopenidが必要であることに気づきました.openIdはクライアントがまずgetCodeを行い、サーバーがcodeを通じてopenidを手に入れ、統一注文するしかありません.次に、クライアントに必要な情報2を返す.getCodeリダイレクトは私たちのページに、コールバックurlにはcode があります.支払開始
微信の小さいプログラムはホームページを埋め込んで小さいプログラムの支払いを呼び出します
.ウィジェットは新しい支払いページを作成し、パラメータを受け入れ、次の手順で支払いプロセスを完了します.は、埋め込みページからウィジェットを使用して露出するapiからウィジェット支払いページにジャンプし、 (sku情報伝達について)ウィジェットはonload時に情報を読み出し、wxを使用する.login code, sku情報とcodeを結果によりバックグラウンドに送信し、バックグラウンド統一注文 バックグラウンド統一発注後の返却情報を入手し、ウィジェットを呼び出して を支払う.パスワードを入力し、支払いを完了し、コードは以下の である.
終わりの言葉アンドロイドの一部の機種では、Webページが閉じた後に現在のページで使用されているすべてのキャッシュ(cookie,sessionstorage,localstorage)が空になります.ここでは、 の処理が必要です.支払いの順序についての処理は、判定の入れ子階層 を減少する.上記のような公衆番号支払いと小プログラム支払いのappidが異なる場合の処理(バックエンド協力が必要) .デバッグ、vsconsoleを必ず使用してください.バックグラウンドがデバッグ中にログ を常に開くようにしてください.ウィジェットデバッグ開発者ツールを使用すれば
事の経緯は大体このようにして、会社はh 5の新しいプロジェクトがあって、それから再開発する時ドッキングして支払う必要があります.調査研究を経て、後に微信の支払いと支付宝の支払いだけを計画して、ここでまず支付宝の支払いapiの開発者に敬意を表して、本当に使いやすいです.それからまた微信ができます...h 5支払い、公衆番号支払い、そして小さなプログラム支払いがあります...ここで皆さんにお勧めします.もし本当に多方面にログインして、支払う时、やはり微信のオープンプラットフォームを使って、结局は少子優生に属して、幸せな一生の選択を探して、さもなくば私の次の経験があるかもしれません.
h 5アリペイ支払い
おおよその支払いを開始する過程は以下の通りである.
<form id='alipaysubmit' name='alipaysubmit' action='https://openapi.alipay.com/gateway.do?charset=UTF-8' method='POST'><input type='hidden' name='biz_content' value='{****}'/><input type='hidden' name='app_id' value='*******'/><input type='hidden' name='version' value='1.0'/><input type='hidden' name='format' value='json'/><input type='hidden' name='sign_type' value='RSA2'/><input type='hidden' name='method' value='alipay.trade.wap.pay'/><input type='hidden' name='timestamp' value='2020-06-10 08:56:10'/><input type='hidden' name='alipay_sdk' value='alipay-sdk-php-20161101'/><input type='hidden' name='notify_url' value='******'/><input type='hidden' name='return_url' value='http://starmall.ipxmall.com/order/order-result'/><input type='hidden' name='charset' value='UTF-8'/><input type='hidden' name='sign' value='*****/******+******+****/****+****=='/>form><script>document.forms['alipaysubmit'].submit();script>
export default {
props: {
info: String
},
data() {
return {}
},
watch: {
info() {
this.$nextTick(() => {
document.querySelector('#alipaysubmit').submit()
})
}
}
}
微信支払いのホームページ支払い
大体の手順は上記と同じですが、微信h 5の支払いは携帯電話のブラウザでしかテストできません.
// : ( jsapi , url )
if (!this.isWeiXin) {
let { errorCode, data } = await payInfo(params)
if (errorCode === 0) {
window.location.href = data
}
return false
}
// ,
微信内蔵ブラウザ支払い調整
initWxPay() {
let wxSrc = 'https://res.wx.qq.com/open/js/jweixin-1.2.0.js'
let script = document.createElement('script')
script.src = wxSrc
document.body.append(script)
}
~~2. 内容を返す...など、意外にも報告が間違っていて、~~統一注文にはopenidが必要であることに気づきました.openIdはクライアントがまずgetCodeを行い、サーバーがcodeを通じてopenidを手に入れ、統一注文するしかありません.次に、クライアントに必要な情報2を返す.getCode
// , ID state ,
window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_base&state=${state}#wechat_redirect`
// 1. code,
const { code } = this.$route.query
// 2. , , ( jsapi , url )
// 3.
let { errorCode, data } = await payInfo({ , code })
if (errorCode === 0) { //
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
}else{
onBridgeReady();
}
}
// , ,data
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": data.appId, // ,
"timeStamp": `${data.timeStamp}`, // , 1970
"nonceStr": data.nonceStr, //
"package": data.package,
"signType":"MD5", // :
"paySign": data.paySign //
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ){
// , :
self.$router.replace('/order/order-result')
}
});
}
// ,
微信の小さいプログラムはホームページを埋め込んで小さいプログラムの支払いを呼び出します
.ウィジェットは新しい支払いページを作成し、パラメータを受け入れ、次の手順で支払いプロセスを完了します.
// h5
if (window.__wxjs_environment === 'miniprogram') {
// ,
// token id, sku
wx.miniProgram.reLaunch({
url: `/pages/h5-pay/main?data=${JSON.stringify({params, token})}`
})
return false
}
export default {
name: 'index',
data() {
return {
// path: 'https://ipxh5.jfshare.com'
}
},
methods: {
//
reLaunch(status) {
wx.redirectTo({
url: `/pages/h5-result/main?status=${status}`
})
},
// code
login(options) {
options = JSON.parse(options)
let { token, params } = options
wx.setStorage({
key:"token",
data: JSON.stringify(token)
})
let self = this
wx.login({
success (res) {
if (res.code) {
//
self.initPayInfo({code: res.code, ...params})
} else {
console.log(' !' + res.errMsg)
}
}
})
},
//
async initPayInfo(params) {
let self = this
let { errorCode, data } = await request.post('/order/order/createOrderPayInfo', params)
if (errorCode === 0 ) {
wx.requestPayment({
...data,
signType: 'MD5',
success (res) {
self.reLaunch(1)
},
fail (res) {
self.reLaunch(0)
}
})
}
}
},
//
onLoad(options) {
if (options.data) {
this.login(options.data)
}
}
}
終わりの言葉