卡券
獲取實(shí)例
$card = $officialAccount->card;
注意:后文用到的
$card
都為此實(shí)例。
通用功能
獲取卡券顏色
$card->colors();
卡券開(kāi)放類(lèi)目查詢(xún)
$card->categories();
創(chuàng)建卡券
創(chuàng)建卡券接口是微信卡券的基礎(chǔ)接口,用于創(chuàng)建一類(lèi)新的卡券,獲取 card_id
,創(chuàng)建成功并通過(guò)審核后,商家可以通過(guò)文檔提供的其他接口將卡券下發(fā)給用戶(hù),每次成功領(lǐng)取,庫(kù)存數(shù)量相應(yīng)扣除。
$card->create(string $cardType, array $attributes);
-
attributes
array
卡券信息
使用示例:
<?php
$cardType = 'GROUPON';
$attributes = [
'base_info' => [
'brand_name' => '微信餐廳',
'code_type' => 'CODE_TYPE_TEXT',
'title' => '132元雙人火鍋套餐',
// ...
],
'advanced_info' => [
'use_condition' => [
'accept_category' => '鞋類(lèi)',
'reject_category' => '阿迪達(dá)斯',
'can_use_with_other_discount' => true,
],
// ...
],
];
$result = $card->create($cardType, $attributes);
獲取卡券詳情
$cardInfo = $card->get($cardId);
批量查詢(xún)卡列表
$card->list($offset = 0, $count = 10, $statusList = 'CARD_STATUS_VERIFY_OK');
-
offset
int
- 查詢(xún)卡列表的起始偏移量,從0
開(kāi)始 -
count
int
- 需要查詢(xún)的卡片的數(shù)量 -
statusList
- 支持開(kāi)發(fā)者拉出指定狀態(tài)的卡券列表,詳見(jiàn)example
使用示例:
// CARD_STATUS_NOT_VERIFY, 待審核;
// CARD_STATUS_VERIFY_FAIL, 審核失敗;
// CARD_STATUS_VERIFY_OK, 通過(guò)審核;
// CARD_STATUS_USER_DELETE,卡券被商戶(hù)刪除;
// CARD_STATUS_DISPATCH,在公眾平臺(tái)投放過(guò)的卡券;
$result = $card->list($offset, $count, 'CARD_STATUS_NOT_VERIFY');
更改卡券信息接口
支持更新所有卡券類(lèi)型的部分通用字段及特殊卡券中特定字段的信息。
$card->update($cardId, $type, $attributes = []);
-
type
string
- 卡券類(lèi)型
使用示例:
<?php
$cardId = 'pdkJ9uCzKWebwgNjxosee0ZuO3Os';
$type = 'groupon';
$attributes = [
'base_info' => [
'logo_url' => 'http://mmbiz.qpic.cn/mmbiz/2aJY6aCPatSeibYAyy7yct9zJXL9WsNVL4JdkTbBr184gNWS6nibcA75Hia9CqxicsqjYiaw2xuxYZiaibkmORS2oovdg/0',
'center_title' => '頂部居中按鈕',
'center_sub_title' => '按鈕下方的wording',
'center_url' => 'http://www.easyswoolewechat.com',
'custom_url_name' => '立即使用',
'custom_url' => 'http://www.qq.com',
'custom_url_sub_title' => '6個(gè)漢字tips',
'promotion_url_name' => '更多優(yōu)惠',
'promotion_url' => 'http://www.qq.com',
],
// ...
];
$result = $card->update($cardId, $type, $attributes);
刪除卡券
$card->delete($cardId);
創(chuàng)建二維碼
開(kāi)發(fā)者可調(diào)用該接口生成一張卡券二維碼供用戶(hù)掃碼后添加卡券到卡包。
自定義 Code
碼的卡券調(diào)用接口時(shí),POST
數(shù)據(jù)中需指定 code
,非自定義 code
不需指定,指定 openid
同理。指定后的二維碼只能被用戶(hù)掃描領(lǐng)取一次。
$card->createQrCode($cards);
-
cards
array
- 卡券相關(guān)信息
使用示例:
<?php
// 領(lǐng)取單張卡券
$cards = [
'action_name' => 'QR_CARD',
'expire_seconds' => 1800,
'action_info' => [
'card' => [
'card_id' => 'pdkJ9uFS2WWCFfbbEfsAzrzizVyY',
'is_unique_code' => false,
'outer_id' => 1,
],
],
];
$result = $card->createQrCode($cards);
<?php
// 領(lǐng)取多張卡券
$cards = [
'action_name' => 'QR_MULTIPLE_CARD',
'action_info' => [
'multiple_card' => [
'card_list' => [
['card_id' => 'pdkJ9uFS2WWCFfbbEfsAzrzizVyY'],
],
],
],
];
$result = $card->createQrCode($cards);
請(qǐng)求成功返回值示例:
{
"errcode": 0,
"errmsg": "ok",
// 獲取 ticket 后需調(diào)用換取二維碼接口獲取二維碼圖片,詳情見(jiàn)字段說(shuō)明。
"ticket": "gQHB8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0JIV3lhX3psZmlvSDZmWGVMMTZvAAIEsNnKVQMEIAMAAA==",
"expire_seconds": 1800,
"url": "http://weixin.qq.com/q/BHWya_zlfioH6fXeL16o ",
"show_qrcode_url": "https://mp.weixin.qq.com/cgi-bin/showqrcode? ticket=gQH98DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0czVzRlSWpsamlyM2plWTNKVktvAAIE6SfgVQMEgDPhAQ%3D%3D"
}
ticket 換取二維碼圖片
獲取二維碼 ticket
后,開(kāi)發(fā)者可用 ticket
換取二維碼圖片。
$card->getQrCode($ticket);
- string
$ticket
。獲取的二維碼ticket
,憑借此ticket
可以在有效時(shí)間內(nèi)換取二維碼。
使用示例:
<?php
$ticket = 'gQFF8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL01VTzN0T0hsS1BwUlBBYUszbVN5AAIEughxVwMEAKd2AA==';
$result = $card->getQrCode($ticket);
ticket 換取二維碼鏈接
$card->getQrCodeUrl($ticket);
使用示例:
<?php
$ticket = 'gQFF8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL01VTzN0T0hsS1BwUlBBYUszbVN5AAIEughxVwMEAKd2AA==';
$card->getQrCodeUrl($ticket);
創(chuàng)建貨架接口
開(kāi)發(fā)者需調(diào)用該接口創(chuàng)建貨架鏈接,用于卡券投放。創(chuàng)建貨架時(shí)需填寫(xiě)投放路徑的場(chǎng)景字段。
$card->createLandingPage($banner, $pageTitle, $canShare, $scene, $cardList);
- string $banner。頁(yè)面的
banner
圖 - string $pageTitle。頁(yè)面的
title
- bool $canShare。頁(yè)面是不是可以分享,
true
或false
- string $scene。投放頁(yè)面的場(chǎng)景值,具體值請(qǐng)參考下面的 使用示例。
- array $cardList。卡券列表,每個(gè)元素有兩個(gè)字段
使用示例:
<?php
$banner = 'http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFN';
$pageTitle = '惠城優(yōu)惠大派送';
$canShare = true;
// SCENE_NEAR_BY 附近
// SCENE_MENU 自定義菜單
// SCENE_QRCODE 二維碼
// SCENE_ARTICLE 公眾號(hào)文章
// SCENE_H5 h5頁(yè)面
// SCENE_IVR 自動(dòng)回復(fù)
// SCENE_CARD_CUSTOM_CELL 卡券自定義 cell
$scene = 'SCENE_NEAR_BY';
$cardList = [
['card_id' => 'pdkJ9uLRSbnB3UFEjZAgUxAJrjeY', 'thumb_url' => 'http://test.digilinx.cn/wxApi/Uploads/test.png'],
['card_id' => 'pdkJ9uJ37aU-tyRj4_grs8S45k1c', 'thumb_url' => 'http://test.digilinx.cn/wxApi/Uploads/aa.jpg'],
];
$result = $card->createLandingPage($banner, $pageTitle, $canShare, $scene, $cardList);
圖文消息群發(fā)卡券
特別注意:目前該接口僅支持填入非自定義 code
的卡券嗎,自定義 code
的卡券需先進(jìn)行 code
導(dǎo)入后調(diào)用。
$card->getHtml($cardId);
使用示例:
<?php
$cardId = 'pdkJ9uLCEF_HSKO7JdQOUcZ-PUzo';
$result = $card->getHtml($cardId);
設(shè)置測(cè)試白名單
同時(shí)支持 “openid”、“username” 兩種字段設(shè)置白名單,總數(shù)上限為 10
個(gè)。
// 使用 openid
$card->setTestWhitelist($openids);
-
array $openids
:測(cè)試的openid
列表
// 使用 username
$card->setTestWhitelistByName($usernames);
-
array $usernames
:測(cè)試的微信號(hào)列表
使用示例:
<?php
// by openid
$openids = [$openId, $openId2, $openid3, ...];
$result = $card->setTestWhitelist($openids);
// by username
$usernames = ['easyswoole', 'easyswoole wechat'];
$result = $card->setTestWhitelistByName($usernames);
獲取用戶(hù)已領(lǐng)取卡券接口
用于獲取用戶(hù)卡包里的,屬于該 appid
下所有可用卡券,包括正常狀態(tài)和未生效狀態(tài)。
$card->getUserCards($openid, $cardId);
使用示例:
<?php
$openid = 'odkJ9uDUz26RY-7DN1mxkznfo9xU';
$cardId = ''; // 卡券ID。不填寫(xiě)時(shí)默認(rèn)查詢(xún)當(dāng)前 appid 下的卡券。
$result = $card->getUserCards($openid, $cardId);
設(shè)置微信買(mǎi)單接口
$card->setPayCell($cardId, $isOpen = true);
-
string $isOpen
。是否開(kāi)啟買(mǎi)單功能,填true/false
,不填默認(rèn)true
使用示例:
<?php
$cardId = 'pdkJ9uH7u11R-Tu1kilbaW_zDFow';
// isOpen = true
$result = $card->setPayCell($cardId);
$result = $card->setPayCell($cardId, $isOpen);
修改庫(kù)存接口
// 增加庫(kù)存
$card->increaseStock($cardId, $amount);
// 減少庫(kù)存
$card->reduceStock($cardId, $amount);
-
string $cardId
。卡券ID
-
int $amount
。修改多少庫(kù)存
使用示例:
<?php
$cardId = 'pdkJ9uLRSbnB3UFEjZAgUxAJrjeY';
$result = $card->increaseStock($cardId, 100);
卡券 Code
導(dǎo)入 Code 接口
在自定義 Code
卡券成功創(chuàng)建并且通過(guò)審核后,必須將自定義 code
按照與發(fā)券方的約定數(shù)量調(diào)用導(dǎo)入 code
接口導(dǎo)入微信后臺(tái)。
$card->code->deposit($cardId, $codes);
-
string cardId
。要導(dǎo)入code
的卡券ID
-
array codes
。要導(dǎo)入微信卡券后臺(tái)的自定義code
,最多100
個(gè)
使用示例:
<?php
$cardId = 'pdkJ9uLCEF_HSKO7JdQOUcZ-PUzo';
$codes = ['11111', '22222', '33333'];
$result = $card->code->deposit($cardId, $codes);
查詢(xún)導(dǎo)入 Code 數(shù)目
// 要導(dǎo)入 code 的卡券 ID
$card->code->getDepositedCount($cardId);
使用示例:
<?php
$cardId = 'pdkJ9uLCEF_HSKO7JdQOUcZ-PUzo';
$result = $card->code->getDepositedCount($cardId);
核查 Code 接口
為了避免出現(xiàn)導(dǎo)入差錯(cuò),強(qiáng)烈建議開(kāi)發(fā)者在查詢(xún)完 code
數(shù)目的時(shí)候核查 code
接口,校驗(yàn) code
導(dǎo)入微信后臺(tái)的情況。
$card->code->check($cardId, $codes);
使用示例:
<?php
$cardId = 'pdkJ9uLCEF_HSKO7JdQOUcZ-PUzo';
$codes = ['807732265476', '22222', '33333'];
$result = $card->code->check($cardId, $codes);
查詢(xún) Code 接口
$card->code->get($code, $cardId, $checkConsume = true);
-
bool checkConsume
。是否校驗(yàn)code
核銷(xiāo)狀態(tài),true
和false
使用示例:
<?php
$code = '736052543512';
$cardId = 'pdkJ9uDgnm0pKfrTb1yV0dFMO_Gk';
$result = $card->code->get($code, $cardId);
// check_consume = false
$result = $card->code->get($code, $cardId, false);
核銷(xiāo) Code 接口
$card->code->consume($code);
// 或者指定 cardId
$card->code->consume($code, $cardId);
使用示例:
<?php
$code = '789248558333';
$cardId = 'pdkJ9uDmhkLj6l5bm3cq9iteQBck';
$result = $card->code->consume($code);
// 或
$result = $card->code->consume($code, $cardId);
Code 解碼接口
$card->code->decrypt($encryptedCode);
使用示例:
<?php
$encryptedCode = 'XXIzTtMqCxwOaawoE91+VJdsFmv7b8g0VZIZkqf4GWA60Fzpc8ksZ/5ZZ0DVkXdE';
$result = $card->code->decrypt($encryptedCode);
更改 Code 接口
$card->code->update($code, $newCode, $cardId);
-
string $newCode
。變更后的有效Code
碼
使用示例:
<?php
$code = '148246271394';
$newCode = '659266965266';
$cardId = '';
$result = $card->code->update($code, $newCode, $cardId);
設(shè)置卡券失效
$card->code->disable($code, $cardId);
使用示例:
<?php
$code = '736052543512';
$cardId = '';
$result = $card->code->disable($code, $cardId);
會(huì)員卡
會(huì)員卡激活
$result = $card->memberCard->activate($info);
-
array $info
。需要激活的會(huì)員卡信息
使用示例:
<?php
$info = [
'membership_number' => '357898858', // 會(huì)員卡編號(hào),由開(kāi)發(fā)者填入,作為序列號(hào)顯示在用戶(hù)的卡包里。可與 Code 碼保持等值。
'code' => '916679873278', // 創(chuàng)建會(huì)員卡時(shí)獲取的初始 code。
'activate_begin_time' => '1397577600', // 激活后的有效起始時(shí)間。若不填寫(xiě)默認(rèn)以創(chuàng)建時(shí)的 data_info 為準(zhǔn)。Unix 時(shí)間戳格式
'activate_end_time' => '1422724261', // 激活后的有效截至?xí)r間。若不填寫(xiě)默認(rèn)以創(chuàng)建時(shí)的 data_info 為準(zhǔn)。Unix 時(shí)間戳格式。
'init_bonus' => '持白金會(huì)員卡到店消費(fèi),可享8折優(yōu)惠。', // 初始積分,不填為 0。
'init_balance' => '持白金會(huì)員卡到店消費(fèi),可享8折優(yōu)惠。', // 初始余額,不填為 0。
'init_custom_field_value1' => '白銀', // 創(chuàng)建時(shí)字段 custom_field1 定義類(lèi)型的初始值,限制為 4 個(gè)漢字,12 字節(jié)。
'init_custom_field_value2' => '9折', // 創(chuàng)建時(shí)字段 custom_field2 定義類(lèi)型的初始值,限制為 4 個(gè)漢字,12 字節(jié)。
'init_custom_field_value3' => '200', // 創(chuàng)建時(shí)字段 custom_field3 定義類(lèi)型的初始值,限制為 4 個(gè)漢字,12 字節(jié)。
];
$result = $card->memberCard->activate($info);
設(shè)置開(kāi)卡字段
$card->memberCard->setActivationForm($cardId, $settings);
-
array settings
。會(huì)員卡激活時(shí)的選項(xiàng)
使用示例:
<?php
$cardId = 'pdkJ9uJYAyfLXsUCwI2LdH2Pn1AU';
$settings = [
'required_form' => [
'common_field_id_list' => [
'USER_FORM_INFO_FLAG_MOBILE',
'USER_FORM_INFO_FLAG_LOCATION',
'USER_FORM_INFO_FLAG_BIRTHDAY',
],
'custom_field_list' => [
'喜歡的食物',
],
],
'optional_form' => [
'common_field_id_list' => [
'USER_FORM_INFO_FLAG_EMAIL',
],
'custom_field_list' => [
'喜歡的食物',
],
],
];
$result = $card->memberCard->setActivationForm($cardId, $settings);
拉取會(huì)員信息
$card->memberCard->getUser($cardId, $code);
使用示例:
<?php
$cardId = 'pbLatjtZ7v1BG_ZnTjbW85GYc_E8';
$code = '916679873278';
$result = $card->memberCard->getUser($cardId, $code);
更新會(huì)員信息
$card->memberCard->updateUser($params);
array $info
。可以更新的會(huì)員信息
使用示例:
<?php
$info = [
'code' => '916679873278', // 卡券 Code 碼。
'card_id' => 'pbLatjtZ7v1BG_ZnTjbW85GYc_E8', //卡券 ID。
'record_bonus' => '消費(fèi)30元,獲得3積分', // 商家自定義積分消耗記錄,不超過(guò) 14 個(gè)漢字。
'bonus' => '100', // 需要設(shè)置的積分全量值,傳入的數(shù)值會(huì)直接顯示,如果同時(shí)傳入 add_bonus 和 bonus,則前者無(wú)效。
'balance' => '持白金會(huì)員卡到店消費(fèi),可享8折優(yōu)惠。', // 需要設(shè)置的余額全量值,傳入的數(shù)值會(huì)直接顯示,如果同時(shí)傳入 add_balance 和 balance,則前者無(wú)效。
'record_balance' => '持白金會(huì)員卡到店消費(fèi),可享8折優(yōu)惠。', // 商家自定義金額消耗記錄,不超過(guò) 14 個(gè)漢字。
'custom_field_value1' => '100', // 創(chuàng)建時(shí)字段 custom_field1 定義類(lèi)型的最新數(shù)值,限制為 4 個(gè)漢字,12 字節(jié)。
'custom_field_value2' => '200', // 創(chuàng)建時(shí)字段 custom_field2 定義類(lèi)型的最新數(shù)值,限制為 4 個(gè)漢字,12 字節(jié)。
'custom_field_value3' => '300', // 創(chuàng)建時(shí)字段 custom_field3 定義類(lèi)型的最新數(shù)值,限制為 4 個(gè)漢字,12 字節(jié)。
];
$result = $card->memberCard->updateUser($info);
子商戶(hù)
添加子商戶(hù)
$card->subMerchant->create(array $info);
使用示例:
<?php
$info = [
'brand_name' => 'overtrue',
'logo_url' => 'http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFNjakmxibMLGWpXrEXB33367o7zHN0CwngnQY7zb7g/0',
'protocol' => 'qIqwTfzAdJ_1-VJFT0fIV53DSY4sZY2WyhkzZzbV498Qgdp-K5HJtZihbHLS0Ys0',
'end_time' => '1438990559',
'primary_category_id' => 1,
'secondary_category_id' => 101,
'agreement_media_id' => '',
'operator_media_id' => '',
'app_id' => '',
];
$result = $card->subMerchant->create($info);
更新子商戶(hù)
$card->subMerchant->update(int $merchantId, array $info = []);
-
int $merchantId
。子商戶(hù)ID
-
array $info
。參數(shù)與創(chuàng)建子商戶(hù)參數(shù)一樣
使用示例:
<?php
$info = [
// ...
];
$result = $card->subMerchant->update('12', $info);
特殊票券
機(jī)票值機(jī)
$card->boardingPass->checkin(array $params);
更新會(huì)議門(mén)票 - 更新用戶(hù)
$card->meetingTicket->updateUser(array $params);
更新電影門(mén)票 - 更新用戶(hù)
$card->movieTicket->updateUser(array $params);
JSAPI
卡券批量下發(fā)到用戶(hù)
<?php
$cards = [
['card_id' => 'pdkJ9uLRSbnB3UFEjZAgUxAJrjeY', 'outer_id' => 2],
['card_id' => 'pdkJ9uJ37aU-tyRj4_grs8S45k1c', 'outer_id' => 3],
];
// 返回 json 格式
$json = $card->jssdk->assign($cards);
返回值為 json
,在模板里的用法如下:
wx.addCard({
cardList: <?= $json ?>, // 需要打開(kāi)的卡券列表
success: function (res) {
var cardList = res.cardList; // 添加的卡券列表信息
}
});
獲取 Ticket
$card->jssdk->getTicket();
// 強(qiáng)制刷新
$card->jssdk->getTicket(true);