浅析微信支付:开通社交立减金活动、创建立减金及领取使用的相关文档和源码
本文是【淺析微信支付】系列文章的第十七篇,主要講解在在微信平臺(tái)中,如何創(chuàng)建優(yōu)惠券,開通社交立減金,并為用戶配置發(fā)送立減金。
上篇文章已經(jīng)為大家講解了如何在微信公眾平臺(tái)創(chuàng)建優(yōu)惠券并為用戶發(fā)券,這片文章是優(yōu)惠券的一個(gè)進(jìn)階,講解微信平臺(tái)上的社交立減金用法,希望可以幫助到大家。
應(yīng)用場(chǎng)景
小程序社交立減金是一款幫助商家快速生成具備裂變傳播屬性的小程序經(jīng)營(yíng)工具,用戶通過(guò)支付、掃碼等場(chǎng)景可以參與社交立減金活動(dòng),將社交立減金禮包分享至朋友后自己可獲取一份,朋友在會(huì)話中可隨機(jī)獲取社交立減金,并直達(dá)商家小程序使用。
產(chǎn)品優(yōu)勢(shì)
打通“小程序+支付+優(yōu)惠”,支付成功頁(yè)分發(fā)社交立減金,支付時(shí)抵扣使用;
通過(guò)聊天分享和裂變,觸達(dá)更多潛在用戶,降低拉新成本;
根據(jù)用戶標(biāo)簽屬性,可配置分發(fā)不同金額的社交立減金,如新老用戶、是否會(huì)員等;
結(jié)合用戶偏好興趣,可配置個(gè)性化商品推薦,提高轉(zhuǎn)化。
官方文檔地址:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=21515658940X5pIn
接入流程
進(jìn)入上面文檔地址,文中有開通公眾號(hào)活動(dòng)配置權(quán)限,這個(gè)權(quán)限必須開啟,開啟指南如下:
社交立減金可通過(guò)微信支付后向用戶下發(fā)消息領(lǐng)取,在配置活動(dòng)時(shí)需要登錄發(fā)起支付的商戶號(hào)開通權(quán)限。
Q:在微信支付平臺(tái)開通“公眾號(hào)活動(dòng)配置”權(quán)限
A:使用管理員帳號(hào)(管理員為申請(qǐng)商戶號(hào)時(shí)給用戶分配的登錄賬號(hào))登錄微信支付商戶平臺(tái)pay.weixin.qq.com,進(jìn)入“產(chǎn)品中心-我的產(chǎn)品-運(yùn)營(yíng)工具”,進(jìn)入并開通“公眾號(hào)活動(dòng)配置”權(quán)限。
開通權(quán)限之后,還需要完成免充值模式驗(yàn)收,這個(gè)驗(yàn)收在我的前幾篇文章中已經(jīng)講過(guò),下面貼上對(duì)應(yīng)的鏈接查看:
淺析微信支付:開通免充值產(chǎn)品功能及如何進(jìn)行接口升級(jí)指引
完成免充值模式驗(yàn)收后,即可通過(guò)接口創(chuàng)建與支付打通的代金券,為配置立減金活動(dòng)做準(zhǔn)備。
若已完成免充值模式驗(yàn)收,可直接調(diào)用創(chuàng)建代金券并設(shè)置跳轉(zhuǎn)小程序,下面是創(chuàng)建的流程和對(duì)應(yīng)代碼。
創(chuàng)建社交立減金的步驟說(shuō)明
首先,我們來(lái)理解一下社交立減金的構(gòu)成和創(chuàng)建流程,這樣才能不被微信給弄迷糊了,下面是幾個(gè)步驟的說(shuō)明:
開通微信公眾平臺(tái)中的微信卡券功能
開通微信商戶平臺(tái)中的公眾號(hào)活動(dòng)配置功能
開通微信商戶平臺(tái)中的免充值相關(guān)產(chǎn)品功能
完成免充值模式驗(yàn)收
在微信商戶平臺(tái)創(chuàng)建或者通過(guò)接口創(chuàng)建微信代金券
登陸微信支付商戶平臺(tái) -營(yíng)銷中心-管理代金券-草稿箱中激活對(duì)應(yīng)卡券
通過(guò)創(chuàng)建支付后領(lǐng)取立減金活動(dòng)接口創(chuàng)建活動(dòng)
登陸微信支付商戶平臺(tái) -營(yíng)銷中心-營(yíng)銷活動(dòng)-滿額送-管理-草稿箱激活活動(dòng)。
下單購(gòu)買某個(gè)商品后,在服務(wù)通知消息中可以領(lǐng)取或者轉(zhuǎn)發(fā)社交立減金
領(lǐng)取,結(jié)束
上面的步驟,缺一不可,需要小伙伴一步步的調(diào)試和試錯(cuò),幸運(yùn)的是,我已經(jīng)都試過(guò)錯(cuò),所以把經(jīng)驗(yàn)總結(jié)一下,希望小伙伴們不會(huì)再次趟坑,創(chuàng)建社交立減金活動(dòng)的源碼也是有的哦~
好了,話不多說(shuō),對(duì)于上面的10步,前4步不需要講,不清楚的小伙伴可以看看我的歷史文章,有對(duì)應(yīng)的講解,下面從第5步開始說(shuō)起。
創(chuàng)建代金券并設(shè)置跳轉(zhuǎn)小程序
下面先講解接口的方式,完成配置社交立減金活動(dòng)獎(jiǎng)品準(zhǔn)備環(huán)節(jié),通過(guò)本接口開發(fā)者可以創(chuàng)建和支付打通的代金券,并設(shè)置代金券跳轉(zhuǎn)小程序使用,在 base_info 中新增設(shè)置字段"pay_info",詳情參考創(chuàng)建卡券接口。
協(xié)議:https
http請(qǐng)求方式: POST
請(qǐng)求URL:https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN
POST數(shù)據(jù)格式:JSON
對(duì)于POST的數(shù)據(jù)可以參考我的歷史文章微信卡券創(chuàng)建,或者查看以下官方文檔:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=21515658940X5pIn
注意:
卡券提交前需檢查是否有傳:"pay_info"、"is_swipe_card": true 字段;
卡券的起止時(shí)間應(yīng)大于當(dāng)前時(shí)間;如當(dāng)前時(shí)間為:2018/1/17 0:0:0,起止時(shí)間需大于當(dāng)前時(shí)間:2018/1/17 13:30:03 (時(shí)間精確到秒);
需設(shè)置最低消費(fèi)門檻,如:5元代金券,滿10元可用。 "reduce_cost": 5 ,"least_cost":10 。
推薦查看我的文章,里面有一些字段的注意事項(xiàng),這里就不細(xì)講了,下面說(shuō)一下第二種方式,就是直接通過(guò)微信商戶平臺(tái)創(chuàng)建代金券,創(chuàng)建完成后,需要在“微信支付商戶平臺(tái) -營(yíng)銷中心-管理代金券-草稿箱”中激活對(duì)應(yīng)卡券,獲取卡券id后,可繼續(xù)創(chuàng)建立減金活動(dòng)。
創(chuàng)建支付后領(lǐng)取立減金活動(dòng)接口
重頭戲來(lái)了,可以通過(guò)此接口創(chuàng)建立減金活動(dòng)。將已創(chuàng)建的代金券cardid、跳轉(zhuǎn)小程序appid、發(fā)起支付的商戶號(hào)等信息通過(guò)此接口創(chuàng)建立減金活動(dòng),成功返回活動(dòng)id即為創(chuàng)建成功。
協(xié)議:https
http請(qǐng)求方式: POST
請(qǐng)求URL:https://api.weixin.qq.com/card/mkt/activity/create?access_token=ACCESS_TOKEN
POST數(shù)據(jù)格式:JSON
大白話解釋一下,上面的代金券cardid就是通過(guò)接口返回的卡券ID,或者是通過(guò)手動(dòng)創(chuàng)建后的卡包ID,就是亂七八糟一串英文的那一個(gè),例如:pX2-vjpU_MT1gFDsP8lNl15PdaFS,官方的POST示例可以查看文檔:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=21515658940X5pIn
好消息來(lái)了,這個(gè)接口我已經(jīng)封裝在sdk中了,封裝為方法便于大家使用,下面是調(diào)用方法和具體方法的代碼。
調(diào)用方法:
/**
* 創(chuàng)建支付后領(lǐng)取立減金活動(dòng)接口
*
* @author yclimb
* @date 2018/9/18
*/
private void createCardActivity() {
WXUtils wxUtils = new WXUtils();
wxUtils.createCardActivity("2018-09-18 18:00:00", "2018-09-18 19:59:59", 3, 1,
1, "pX2-vjpU_MT1gFDsP8lNl15PdaZE", "100",
null, false);
}
方法源碼:
/**
* 創(chuàng)建支付后領(lǐng)取立減金活動(dòng)接口
* 通過(guò)此接口創(chuàng)建立減金活動(dòng)。
* 將已創(chuàng)建的代金券cardid、跳轉(zhuǎn)小程序appid、發(fā)起支付的商戶號(hào)等信息通過(guò)此接口創(chuàng)建立減金活動(dòng),成功返回活動(dòng)id即為創(chuàng)建成功。
* 接口地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=21515658940X5pIn
*
* @param begin_time 活動(dòng)開始時(shí)間,精確到秒
* @param end_time 活動(dòng)結(jié)束時(shí)間,精確到秒
* @param gift_num 單個(gè)禮包社交立減金數(shù)量(3-15個(gè))
* @param max_partic_times_act 每個(gè)用戶活動(dòng)期間最大領(lǐng)取次數(shù),最大為50,默認(rèn)為1
* @param max_partic_times_one_day 每個(gè)用戶活動(dòng)期間單日最大領(lǐng)取次數(shù),最大為50,默認(rèn)為1
* @param card_id 卡券ID
* @param min_amt 最少支付金額,單位是元
* @param membership_appid 獎(jiǎng)品指定的會(huì)員卡appid。如用戶標(biāo)簽有選擇商戶會(huì)員,則需要填寫會(huì)員卡appid,該appid需要跟所有發(fā)放商戶號(hào)有綁定關(guān)系。
* @param new_tinyapp_user 可以指定為是否小程序新用戶(membership_appid為空、new_tinyapp_user為false時(shí),指定為所有用戶)
* @return json
* @author yclimb
* @date 2018/9/18
*/
public JSONObject createCardActivity(String begin_time, String end_time, int gift_num, int max_partic_times_act,
int max_partic_times_one_day, String card_id, String min_amt,
String membership_appid, boolean new_tinyapp_user) {
try {
// 創(chuàng)建活動(dòng)接口之前的驗(yàn)證
String msg = checkCardActivity(begin_time, end_time, gift_num, max_partic_times_act, max_partic_times_one_day, min_amt);
if (null != msg) {
JSONObject resultJson = new JSONObject(2);
resultJson.put("errcode", "1");
resultJson.put("errmsg", msg);
return resultJson;
}
// 獲取[商戶名稱]公眾號(hào)的 access_token
String accessToken = this.getAccessToken(WXConstants.WX_MINI_PROGRAM_CODE);
// 調(diào)用接口傳入?yún)?shù)
JSONObject paramJson = new JSONObject(1);
// info 包含 basic_info、card_info_list、custom_info
JSONObject info = new JSONObject(3);
// 基礎(chǔ)信息對(duì)象
JSONObject basic_info = new JSONObject(8);
// activity_bg_color 是 活動(dòng)封面的背景顏色,可參考:選取卡券背景顏色
basic_info.put("activity_bg_color", CardBgColorEnum.COLOR_090.getBgName());
// activity_tinyappid 是 用戶點(diǎn)擊鏈接后可靜默添加到列表的小程序appid;
basic_info.put("activity_tinyappid", WXPayConstants.APP_ID);
// mch_code 是 支付商戶號(hào)
basic_info.put("mch_code", WXPayConstants.MCH_ID);
// begin_time 是 活動(dòng)開始時(shí)間,精確到秒(unix時(shí)間戳)
basic_info.put("begin_time", DateTimeUtil.getTenTimeByDate(begin_time));
// end_time 是 活動(dòng)結(jié)束時(shí)間,精確到秒(unix時(shí)間戳)
basic_info.put("end_time", DateTimeUtil.getTenTimeByDate(end_time));
// gift_num 是 單個(gè)禮包社交立減金數(shù)量(3-15個(gè))
basic_info.put("gift_num", gift_num);
// max_partic_times_act 否 每個(gè)用戶活動(dòng)期間最大領(lǐng)取次數(shù),最大為50,不填默認(rèn)為1
basic_info.put("max_partic_times_act", max_partic_times_act);
// max_partic_times_one_day 否 每個(gè)用戶活動(dòng)期間單日最大領(lǐng)取次數(shù),最大為50,不填默認(rèn)為1
basic_info.put("max_partic_times_one_day", max_partic_times_one_day);
// card_info_list 是 可以配置兩種發(fā)放規(guī)則:小程序新老用戶、新老會(huì)員
JSONArray card_info_list = new JSONArray(1);
JSONObject card_info = new JSONObject(3);
// card_id 是 卡券ID
card_info.put("card_id", card_id);
// min_amt 是 最少支付金額,單位是分
card_info.put("min_amt", String.valueOf(new BigDecimal(min_amt).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).intValue()));
/*
* membership_appid 是 獎(jiǎng)品指定的會(huì)員卡appid。如用戶標(biāo)簽有選擇商戶會(huì)員,則需要填寫會(huì)員卡appid,該appid需要跟所有發(fā)放商戶號(hào)有綁定關(guān)系。
* new_tinyapp_user 是 可以指定為是否小程序新用戶
* total_user 是 可以指定為所有用戶
* membership_appid、new_tinyapp_user、total_user以上字段3選1,未選擇請(qǐng)勿填,不必故意填寫false
*/
if (StringUtils.isNotBlank(membership_appid)) {
card_info.put("membership_appid", membership_appid);
} else {
if (new_tinyapp_user) {
card_info.put("new_tinyapp_user", true);
} else {
card_info.put("total_user", true);
}
}
card_info_list.add(card_info);
// 自定義字段,表示支付后領(lǐng)券
JSONObject custom_info = new JSONObject(1);
custom_info.put("type", "AFTER_PAY_PACKAGE");
// 拼裝json對(duì)象
info.put("basic_info", basic_info);
info.put("card_info_list", card_info_list);
info.put("custom_info", custom_info);
paramJson.put("info", info);
// 請(qǐng)求微信接口,得到返回結(jié)果[json]
HttpEntity<JSONObject> entity = new HttpEntity<>(paramJson, this.getHttpHeadersUTF8JSON());
JSONObject resultJson = restTemplate.postForObject(WXURL.WX_CARD_ACTIVITY_CREATE_URL, entity, JSONObject.class, accessToken);
// {"errcode":0,"errmsg":"ok","activity_id":"4728935"}
System.out.println(resultJson.toJSONString());
return resultJson;
} catch (Exception e) {
WXPayUtil.getLogger().error(e.getMessage(), e);
}
return null;
}
/**
* 創(chuàng)建活動(dòng)接口之前的驗(yàn)證
*
* @param begin_time 活動(dòng)開始時(shí)間,精確到秒
* @param end_time 活動(dòng)結(jié)束時(shí)間,精確到秒
* @param gift_num 單個(gè)禮包社交立減金數(shù)量(3-15個(gè))
* @param max_partic_times_act 每個(gè)用戶活動(dòng)期間最大領(lǐng)取次數(shù),最大為50,默認(rèn)為1
* @param max_partic_times_one_day 每個(gè)用戶活動(dòng)期間單日最大領(lǐng)取次數(shù),最大為50,默認(rèn)為1
* @param min_amt 最少支付金額,單位是元
* @return msg str
* @author yclimb
* @date 2018/9/18
*/
public String checkCardActivity(String begin_time, String end_time, int gift_num, int max_partic_times_act,
int max_partic_times_one_day, String min_amt) {
// 開始時(shí)間不能小于結(jié)束時(shí)間
if (DateTimeUtil.latterThan(end_time, begin_time, DateTimeUtil.TIME_FORMAT_NORMAL)) {
return "活動(dòng)開始時(shí)間不能小于活動(dòng)結(jié)束時(shí)間";
}
// 單個(gè)禮包社交立減金數(shù)量(3-15個(gè))
if (gift_num < 3 || gift_num > 15) {
return "單個(gè)禮包社交立減金數(shù)量(3-15個(gè))";
}
// 每個(gè)用戶活動(dòng)期間最大領(lǐng)取次數(shù),最大為50,默認(rèn)為1
if (max_partic_times_act <= 0 || max_partic_times_act > 50) {
return "每個(gè)用戶活動(dòng)期間最大領(lǐng)取次數(shù),最大為50,默認(rèn)為1";
}
// 每個(gè)用戶活動(dòng)期間單日最大領(lǐng)取次數(shù),最大為50,默認(rèn)為1
if (max_partic_times_one_day <= 0 || max_partic_times_one_day > 50) {
return "每個(gè)用戶活動(dòng)期間單日最大領(lǐng)取次數(shù),最大為50,默認(rèn)為1";
}
// 最少支付金額,單位是元
if (BigDecimal.ONE.compareTo(new BigDecimal(min_amt)) > 0) {
return "最少支付金額必須大于1元";
}
return null;
}
對(duì)應(yīng)的全部代碼,可以查看我的github,地址如下:
https://github.com/YClimb/wxpay-sdk/blob/master/src/main/java/com/weixin/pay/util/WXUtils.java
創(chuàng)建成功后,會(huì)返回一個(gè) "activity_id": "123456" 的json數(shù)據(jù),也就是立減金活動(dòng)id咯,如果創(chuàng)建失敗,也不要著急,查看上面說(shuō)到的官方文檔,創(chuàng)建接口下有對(duì)應(yīng)的返回碼說(shuō)明,
已知是足夠解決問(wèn)題了。
活動(dòng)創(chuàng)建成功后,需要登陸“微信支付商戶平臺(tái) -營(yíng)銷中心-營(yíng)銷活動(dòng)-滿額送-管理-草稿箱”激活活動(dòng),激活后,社交立減金投放成功。可以通過(guò)支付行為進(jìn)行驗(yàn)證。
PS:激活活動(dòng)后,活動(dòng)是通過(guò)滿額送行為發(fā)送給用戶的,而且是自動(dòng)發(fā)放,如果你在平臺(tái)上購(gòu)買的商品價(jià)格滿足規(guī)則,則會(huì)在服務(wù)通知中顯示社交立減金的信息,此活動(dòng)需要用戶主動(dòng)領(lǐng)取才行,用戶領(lǐng)取的券最終就是咋們最初創(chuàng)建的代金券,此代金券使用規(guī)則和正常代金券一樣。
PPS:社交立減金可以分享轉(zhuǎn)發(fā)給朋友,這個(gè)是他的特點(diǎn),對(duì)于每個(gè)活動(dòng)的代金券規(guī)則和份數(shù),大家一定要注意,根據(jù)場(chǎng)景投放。
結(jié)語(yǔ)
以上為社交立減金相關(guān)的解釋和源碼,小伙伴們一定要注意看看官方文檔哦,具體的源碼可以看我的github,里面對(duì)每個(gè)方法有詳細(xì)的注釋。
如果小伙伴有遇到解決不了的問(wèn)題,可以關(guān)注作者微信公眾號(hào),加入討論群中發(fā)出疑問(wèn),和小伙伴們一起解決哦~
?如果想要提前一覽源碼的小伙伴,可以先看看我的 github,地址如下:
?
? ?https://github.com/YClimb/wxpay-sdk/blob/master/README.md ?
關(guān)注作者微信公眾號(hào),點(diǎn)擊下方討論群,掃碼即可加入微信支付討論群與小伙伴一起探討哦~
到此本文就結(jié)束了,關(guān)注公眾號(hào)查看更多推送!!!
總結(jié)
以上是生活随笔為你收集整理的浅析微信支付:开通社交立减金活动、创建立减金及领取使用的相关文档和源码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: A20 GPIO中断类型差别结果迥异的问
- 下一篇: 9012教你如何使用gulp4开发项目脚