日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

调用支付jsapi缺少参数appid_服务商模式下的小程序微信支付

發(fā)布時(shí)間:2025/3/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 调用支付jsapi缺少参数appid_服务商模式下的小程序微信支付 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近,要做一個(gè)小程序商城的項(xiàng)目,需要在小程序中用到分賬功能,也就是顧客購(gòu)買商品支付的錢要給各個(gè)店鋪,這就需要用到服務(wù)商模式。

在談服務(wù)商模式下小程序微信支付之前,我們先要有一個(gè)服務(wù)商的商戶號(hào),這個(gè)商戶號(hào)哪里來呢,首先你的有一個(gè)認(rèn)證過的服務(wù)號(hào),然后在服務(wù)號(hào)中找到微信支付--申請(qǐng)服務(wù)商

然后申請(qǐng)之后就會(huì)得到一個(gè)服務(wù)商的商戶號(hào),在商戶號(hào)中:服務(wù)商功能---特約商戶申請(qǐng)---新增商戶,按照提示申請(qǐng)一個(gè)特約商戶號(hào),注意:服務(wù)商模式不支持綁定已有的商戶號(hào)作為特約商戶,只能在服務(wù)商商戶號(hào)中申請(qǐng)新增,填完信息之后等微信審核通過之后,會(huì)顯示入駐成功。

做個(gè)比喻,服務(wù)商商戶號(hào)就相當(dāng)于總店,特約商戶相當(dāng)于分店,但是總店不能作為分店使用,顧客支付的錢是打到特約商戶號(hào)中的。

然后,我們需要申請(qǐng)一個(gè)小程序,并開通微信支付功能,這里就不詳細(xì)說明了

緊接著,我們到服務(wù)商商戶號(hào)中:服務(wù)商功能--特約商戶管理--配置--特約商戶APPID配置,添加新申請(qǐng)的小程序的appid

這些都準(zhǔn)備好之后,就開始代碼階段了

首先通過微信開發(fā)者工具建一個(gè)小程序的項(xiàng)目

項(xiàng)目名稱自定義,目錄是新建的一個(gè)空文件夾,appid是小程序的appid,點(diǎn)擊新建就出現(xiàn)一個(gè)小程序的demo,詳細(xì)的就不解釋了

首先需要獲取到小程序的openid,這里就多說了,如果有朋友不會(huì)的話,自行百度一下吧,咱們主要是講支付這一塊。

如下是小程序代碼中點(diǎn)擊立即支付按鈕的js代碼:

```

pay: function () {

wx.showLoading({

title: '加載中',

})

var that = this;

this.req('/interfaceController/pay', {

openId:this.data.openid

}, function (res) {

console.log(111111111111111111, res)

var timeStamp = res.data.data.timeStamp;

var nonceStr = res.data.data.nonceStr;

var pac = res.data.data.package;

var paySign = res.data.data.paySign;

wx.requestPayment({

timeStamp: timeStamp,

nonceStr: nonceStr,

package: pac,

signType: 'MD5',

paySign: paySign,

success(res) {

},

fail(res) {

console.log(res)

}

})

});

}

```

如下是后臺(tái)代碼:

```

/**

* 小程序微信支付接口

* @throws UnsupportedEncodingException

*/

@RequestMapping("/pay")

public R ticketList(String openId) throws UnsupportedEncodingException{

List nvps = new ArrayList();

// 調(diào)用統(tǒng)一下單接口必需傳的參數(shù),可以查看微信支付統(tǒng)一下單接口api查看每個(gè)參數(shù)的意思

nvps.add(new NameValuePair("appid","")); //服務(wù)商對(duì)應(yīng)的服務(wù)號(hào)的appid 不是小程序的

nvps.add(new NameValuePair("body", "水杯")); //商品描述

nvps.add(new NameValuePair("mch_id","")); //服務(wù)商的商戶號(hào)

nvps.add(new NameValuePair("nonce_str","ibuaiVcKdpRxkhJA"));

nvps.add(new NameValuePair("notify_url","")); //回調(diào)地址需要根據(jù)實(shí)際項(xiàng)目做修改

nvps.add(new NameValuePair("out_trade_no",CommonUtil.getUID()));

nvps.add(new NameValuePair("profit_sharing","Y")); //是否進(jìn)行分賬 比較重要

nvps.add(new NameValuePair("spbill_create_ip", "127.0.0.1"));//ip地址需要根據(jù)實(shí)際項(xiàng)目做修改

nvps.add(new NameValuePair("sub_appid", "")); //小程序的appid

nvps.add(new NameValuePair("sub_mch_id","")); //特約商戶的商戶號(hào)

nvps.add(new NameValuePair("sub_openid",openId)); //小程序的openid

nvps.add(new NameValuePair("total_fee", "100"));

nvps.add(new NameValuePair("trade_type", "JSAPI"));

StringBuffer sb = new StringBuffer();

for (NameValuePair nvp : nvps) {

sb.append(nvp.getName() + "=" + nvp.getValue() + "&");

}

String signA = sb.toString(); // 根據(jù)簽名格式組裝數(shù)據(jù),詳見微信支付api

String stringSignTemp = signA + "key=asjdjaskdjaksdjaskjd"; // 服務(wù)商的密鑰

//System.out.println("第一次輸出xml"+stringSignTemp);

String sign = DigestUtils.md5Hex(getContentBytes(stringSignTemp, "UTF-8")).toUpperCase(); // 把組裝好的簽名數(shù)據(jù)md5之后字母都轉(zhuǎn)換為大寫,詳見微信支付api

nvps.add(new NameValuePair("sign", sign)); // 把簽名后的數(shù)據(jù)組裝成參數(shù)

TenpayHttpClient httpClient = new TenpayHttpClient();

httpClient.setReqContent(url);

String resContent = "";

String prepay_id = "";

if (httpClient.callHttpPost(url, toXml(nvps))) {

resContent = httpClient.getResContent();

String result = new String(resContent.getBytes("UTF-8"), "UTF-8");

//System.out.println("請(qǐng)求返回的結(jié)果1=" + result);

JSONObject xmlJSONObj = XML.toJSONObject(result);

//System.out.println(xmlJSONObj.toString());

JSONArray childNodes = JSONML.toJSONObject(result.toString()).getJSONArray("childNodes");

int len = childNodes.length() - 1;

for (int i = len; i > -1; i--) {

JSONObject js = childNodes.getJSONObject(i);

System.out.println(js.toString());

if (js.get("tagName").equals("prepay_id")) {

prepay_id = js.getJSONArray("childNodes").getString(0);

System.out.println("prepay_id:"+prepay_id);

break;

}

}

}

Map jso = new HashMap();

jso.put("nonceStr", "ibuaiVcKdpRxkhJA");

jso.put("package", "prepay_id=" + prepay_id);

jso.put("signType", "MD5");

jso.put("timeStamp", "1395712654");

List nvps1 = new ArrayList();

nvps1.add(new NameValuePair("appId", ""));//小程序的appid

nvps1.add(new NameValuePair("nonceStr", "ibuaiVcKdpRxkhJA"));

nvps1.add(new NameValuePair("package", "prepay_id=" + prepay_id));

nvps1.add(new NameValuePair("signType", "MD5"));

nvps1.add(new NameValuePair("timeStamp","1395712654"));

StringBuffer sb1 = new StringBuffer();

for (NameValuePair nvp : nvps1) {

sb1.append(nvp.getName() + "=" + nvp.getValue() + "&");

}

String signB = sb1.toString(); // 根據(jù)簽名格式組裝數(shù)據(jù),詳見微信支付api

String stringSignTemp1 = signB + "key=ajfaslkjdkas"; // 服務(wù)商的密鑰

//System.out.println("第二次輸出xml "+stringSignTemp1);

String sign1 = DigestUtils.md5Hex(

getContentBytes(stringSignTemp1, "UTF-8")).toUpperCase(); // 把組裝好的簽名數(shù)據(jù)md5之后字母都轉(zhuǎn)換為大寫,詳見微信支付api

jso.put("paySign", sign1);

return R.ok().put("data", jso);

}

```

```

// 轉(zhuǎn)換成xml格式

private String toXml(List params) {

StringBuilder sb = new StringBuilder();

sb.append("");

for (int i = 0; i < params.size(); i++) {

sb.append("");

sb.append((params.get(i)).getValue());

sb.append("" + params.get(i).getName() + ">");

}

sb.append("");

//System.out.println("xml數(shù)據(jù)=" + sb.toString());

return sb.toString();

}

```

完成以上步驟就可以完成服務(wù)商模式下小程序的微信支付了,下一章講一下分賬。如果有什么問題可以評(píng)論,我會(huì)及時(shí)回答大家的。剛開始寫文章,還是很生疏的,望大家諒解,謝謝。

總結(jié)

以上是生活随笔為你收集整理的调用支付jsapi缺少参数appid_服务商模式下的小程序微信支付的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩午夜在线播放 | 国产日韩欧美二区 | 伊人开心网 | 欧洲精品视频在线 | 日韩av一二三区 | 精品无码一区二区三区蜜臀 | 亚洲国产精品va在线看黑人 | 亚洲精品国产成人久久av盗摄 | 在线射 | 97成人免费 | 啪啪国产精品 | 欧美精品久久久久久久久久 | 色狠狠av老熟女 | 国产精品社区 | 国产精选视频在线观看 | 久久久久久久极品内射 | 毛片在线网址 | 日韩激情毛片 | 国产又粗又黄又爽 | 精品人妻伦一二三区免费 | 免费福利小视频 | 国 产 黄 色 大 片 | 少妇特黄a一区二区三区 | 伊人激情在线 | 国产精品白嫩极品美女视频 | 黄色一级大片在线免费看国产一 | 精品久久久久久无码国产 | 久久伊人99 | 91久久久久久久久久久久 | 亚洲中文字幕无码不卡电影 | 日韩欧美国产一区二区三区在线观看 | 天天插插插 | 无套内谢老熟女 | 高清中文字幕av | www.奇米.com| 色多多在线观看 | 国产97免费视频 | 国产又粗又黄又爽又硬的视频 | 干爹你真棒插曲mv在线观看 | 在线看视频 | 国产一区二区久久精品 | 黄色片在线免费观看视频 | 69精品国产 | 国产精品黑人一区二区三区 | 69精品无码成人久久久久久 | 成人娱乐网 | 黄色动漫软件 | 久久精品国产精品亚洲毛片 | 在线草 | 欧美嫩交 | 欧美激情综合 | 性自由色xxxx免费视频 | 欧美日韩激情视频 | 色老板av | www夜片内射视频日韩精品成人 | 国产经典一区二区三区 | 久久机热这里只有精品 | 69日本xxxxxxxxx30 在线波多野结衣 | 日韩五月天 | 天天干中文字幕 | 中文字字幕在线中文 | 理论片高清免费理伦片 | 91高清免费 | 少妇高潮久久久 | 久久视频一区 | 欧美一区二区精品 | 都市豪门艳霸淫美妇 | 欧美大浪妇猛交饥渴大叫 | 亚洲一区二区三区在线观看视频 | 91精品看片 | 成年人看的视频网站 | 欧美三级午夜理伦三级老人 | 91网站视频在线观看 | 成人黄色在线视频 | 欧美少妇15p | 美国av大片 | 999成人网| 色婷婷a | 大桥未久av一区二区三区中文 | 中文字幕第80页 | 色播视频在线 | 99精品视频在线看 | 日b视频在线观看 | 午夜伦理在线观看 | 精品视频在线观看免费 | 狠狠躁18三区二区一区 | 久草免费在线视频 | 日日摸夜夜添夜夜 | 欧美激情成人网 | 18禁裸男晨勃露j毛免费观看 | 欧美日韩观看 | 欧美网站免费 | 国产精品一区麻豆 | 日本中文在线视频 | 日日噜 | 国产精品无码免费在线观看 | 国产最新自拍 | 中文无码熟妇人妻av在线 | 日韩欧美在线观看 |