日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲色图视频在线观看 | 精品 | 中文字幕永久视频 | 精品无码一区二区三区 | 北条麻妃在线一区二区 | 中文字幕成人一区 | 黄色免费大片 | 99久久精品国产毛片 | 最好看的2019中文大全在线观看 | 欧美脚交视频 | 欧美三级手机在线观看 | 国产91精品久久久 | 欧美日韩成人在线 | 网站在线观看你懂的 | 影音先锋中文在线 | 激情五月婷婷小说 | 美痴女~美人上司北岛玲 | 麻豆久久久久久久 | 日本少妇作爱视频 | 天天伊人网 | 黄色片xxx | 欧美日韩人妻精品一区二区 | 丰满护士巨好爽好大乳 | 免费裸体美女网站 | 亚洲a网站| 人人妻人人澡人人爽久久av | 女人下面流白浆的视频 | 国产女人高潮毛片 | 亚洲片在线观看 | 日韩小视频网站 | 黑人一区二区三区四区五区 | 日日操日日摸 | 免费簧片在线观看 | 天天久久综合网 | 欧美激情校园春色 | 成人无码www在线看免费 | 色婷婷av一区二区三区之红樱桃 | 黄色av电影网站 | 一级久久久久久 | 97人人爽人人爽人人爽人人爽 | 天天干视频在线观看 | 亚洲精品无码一区二区 | 久久福利社| 亚洲精品综合精品自拍 | 精品在线一区二区 | 手机av片| 国产一级片免费看 | www.欧美成人 | 黄色综合 | 91在线视频精品 | 亚洲国产精品成人无久久精品 | 亚洲aa | 免费观看日本 | 91麻豆成人精品国产 | videos麻豆 | 黄瓜视频在线免费观看 | 放几个免费的毛片出来看 | 91禁外国网站| 美女黄视频在线观看 | 永久免费网站直接看 | 国产麻豆一区二区 | 久草视频精品在线 | 精品国产无码在线 | 狠狠视频 | www.久久av.com | 国产视频精品免费 | 久久精品国产大片免费观看 | 在线免费小视频 | 亚洲精品欧洲 | 国产激情视频网站 | 法国伦理少妇愉情 | 三级免费 | 天天干夜夜草 | 日韩123| 日本精品久久久久 | 精品国精品国产 | 精品成人 | 婷婷激情小说网 | 国产欧美日韩精品一区二区三区 | 国产盗摄一区二区 | 山外人精品影院 | 国产成人亚洲精品无码h在线 | 伊人久久激情 | 美女福利视频导航 | 午夜视频福利网站 | 99精品视频免费观看 | 美女狂揉羞羞的视频 | 玖玖精品| 成人手机在线播放 | 综合一区 | 国产理论视频在线观看 | 免费极品av一视觉盛宴 | 亚洲欧美日韩国产一区二区 | 午夜精品福利视频 | 国产精品人八做人人女人a级刘 | 天天插天天狠 | av爱爱| 欧美爱爱免费视频 | 成人一级生活片 |