1 Star 0 Fork 304

徐雄/wechat-php-sdk

forked from Anyon/wechat-php-sdk 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
WechatCard.php 33.63 KB
一键复制 编辑 原始数据 按行查看 历史
Anyon 提交于 2023-05-06 19:05 . 批量修改注释
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821
<?php
// +----------------------------------------------------------------------
// | wechat-php-sdk
// +----------------------------------------------------------------------
// | 版权所有 2014~2017 ThinkAdmin [ thinkadmin.top ]
// +----------------------------------------------------------------------
// | 官方网站: https://thinkadmin.top
// +----------------------------------------------------------------------
// | 开源协议 ( https://mit-license.org )
// | 免责声明 ( https://thinkadmin.top/disclaimer )
// +----------------------------------------------------------------------
// | gitee 代码仓库:https://gitee.com/zoujingli/wechat-php-sdk
// | github 代码仓库:https://github.com/zoujingli/wechat-php-sdk
// +----------------------------------------------------------------------
namespace Wechat;
use Wechat\Lib\Common;
use Wechat\Lib\Tools;
/**
* 微信卡卷
*/
class WechatCard extends Common
{
/** 卡券相关地址 */
const CARD_CREATE = '/card/create?';
// 删除卡卷
const CARD_DELETE = '/card/delete?';
// 更新卡卷信息
const CARD_UPDATE = '/card/update?';
// 获取卡卷详细信息
const CARD_GET = '/card/get?';
// 读取粉丝拥有的卡卷列表
const CARD_USER_GET_LIST = '/card/user/getcardlist?';
// 卡卷核查接口
const CARD_CHECKCODE = '/card/code/checkcode?';
// 卡卷图文群发获取HTML
const CARD_SET_SELFCONSUMECELL = '/card/selfconsumecell/set?';
const CARD_SEND_HTML = '/card/mpnews/gethtml?';
const CARD_BATCHGET = '/card/batchget?';
const CARD_MODIFY_STOCK = '/card/modifystock?';
const CARD_GETCOLORS = '/card/getcolors?';
const CARD_QRCODE_CREATE = '/card/qrcode/create?';
const CARD_CODE_CONSUME = '/card/code/consume?';
const CARD_CODE_DECRYPT = '/card/code/decrypt?';
const CARD_CODE_GET = '/card/code/get?';
const CARD_CODE_UPDATE = '/card/code/update?';
const CARD_CODE_UNAVAILABLE = '/card/code/unavailable?';
const CARD_TESTWHILELIST_SET = '/card/testwhitelist/set?';
const CARD_MEETINGCARD_UPDATEUSER = '/card/meetingticket/updateuser?'; //更新会议门票
const CARD_MEMBERCARD_ACTIVATE = '/card/membercard/activate?'; //激活会员卡
const CARD_MEMBERCARD_UPDATEUSER = '/card/membercard/updateuser?'; //更新会员卡
const CARD_MOVIETICKET_UPDATEUSER = '/card/movieticket/updateuser?'; //更新电影票(未加方法)
const CARD_BOARDINGPASS_CHECKIN = '/card/boardingpass/checkin?'; //飞机票-在线选座(未加方法)
/** 更新红包金额 */
const CARD_LUCKYMONEY_UPDATE = '/card/luckymoney/updateuserbalance?';
/*买单接口*/
const CARD_PAYCELL_SET = '/card/paycell/set?';
/*设置开卡字段接口*/
const CARD_MEMBERCARD_ACTIVATEUSERFORM_SET = '/card/membercard/activateuserform/set?';
/**
* 获取微信卡券 api_ticket
* @param string $appid
* @param string $jsapi_ticket
* @return bool|string
*/
public function getJsCardTicket($appid = '', $jsapi_ticket = '')
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$appid = empty($appid) ? $this->appid : $appid;
if ($jsapi_ticket) {
return $jsapi_ticket;
}
$authname = 'wechat_jsapi_ticket_wxcard_' . $appid;
if (($jsapi_ticket = Tools::getCache($authname))) {
return $jsapi_ticket;
}
$result = Tools::httpGet(self::API_URL_PREFIX . self::GET_TICKET_URL . "access_token={$this->access_token}&type=wx_card");
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
$expire = $json['expires_in'] ? intval($json['expires_in']) - 100 : 3600;
Tools::setCache($authname, $json['ticket'], $expire);
return $json['ticket'];
}
return false;
}
/**
* 生成选择卡卷JS签名包
* @param string $cardid 卡券Id
* @param string $cardtype 卡券类型
* @param string $shopid 门店Id
* @return array
*/
public function createChooseCardJsPackage($cardid = null, $cardtype = null, $shopid = null)
{
$data = array();
$data['api_ticket'] = $this->getJsCardTicket();
$data['app_id'] = $this->appid;
$data['timestamp'] = time();
$data['nonceStr'] = Tools::createNoncestr();
!empty($cardid) && $data['cardId'] = $cardid;
!empty($cardtype) && $data['cardType'] = $cardtype;
!empty($shopid) && $data['shopId'] = $shopid;
$data['cardSign'] = $this->getTicketSignature($data);
$data['signType'] = 'SHA1';
unset($data['api_ticket'], $data['app_id']);
return $data;
}
/**
* 生成添加卡卷JS签名包
* @param string|null $cardid 卡卷ID
* @param array $data 其它限定参数
* @return array
*/
public function createAddCardJsPackage($cardid = null, $data = array())
{
$cardList = array();
if (is_array($cardid)) {
foreach ($cardid as $id) {
$cardList[] = array('cardId' => $id, 'cardExt' => json_encode($this->_cardSign($id, $data)));
}
} else {
$cardList[] = array('cardId' => $cardid, 'cardExt' => json_encode($this->_cardSign($cardid, $data)));
}
return array('cardList' => $cardList);
}
/**
* 卡券数据签名
* @param null|string $cardid
* @param array $attr
* @return array
*/
private function _cardSign($cardid = null, $attr = array())
{
unset($attr['outer_id']);
$attr['cardId'] = $cardid;
$attr['timestamp'] = time();
$attr['api_ticket'] = $this->getJsCardTicket();
$attr['nonce_str'] = Tools::createNoncestr();
$attr['signature'] = $this->getTicketSignature($attr);
unset($attr['api_ticket']);
return $attr;
}
/**
* 获取微信卡券签名
* @param array $arrdata 签名数组
* @param string $method 签名方法
* @return bool|string 签名值
*/
public function getTicketSignature($arrdata, $method = "sha1")
{
if (!function_exists($method)) {
return false;
}
$newArray = array();
foreach ($arrdata as $value) {
array_push($newArray, (string)$value);
}
sort($newArray, SORT_STRING);
return $method(implode($newArray));
}
/**
* 创建卡券
* @param array $data 卡券数据
* @return bool|array 返回数组中card_id为卡券ID
*/
public function createCard($data)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_CREATE . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 更改卡券信息
* 调用该接口更新信息后会重新送审,卡券状态变更为待审核。已被用户领取的卡券会实时更新票面信息。
* @param string $data
* @return bool
*/
public function updateCard($data)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_UPDATE . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return true;
}
return false;
}
/**
* 删除卡券
* 允许商户删除任意一类卡券。删除卡券后,该卡券对应已生成的领取用二维码、添加到卡包 JS API 均会失效。
* 注意:删除卡券不能删除已被用户领取,保存在微信客户端中的卡券,已领取的卡券依旧有效。
* @param string $card_id 卡券ID
* @return bool
*/
public function delCard($card_id)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array('card_id' => $card_id);
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_DELETE . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return true;
}
return false;
}
/**
* 获取粉丝下所有卡卷列表
* @param $openid 粉丝openid
* @param string $card_id 卡卷ID(可不给)
* @return bool|array
*/
public function getCardList($openid, $card_id = '')
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array('openid' => $openid);
!empty($card_id) && $data['card_id'] = $card_id;
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_USER_GET_LIST . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 获取图文消息群发卡券HTML
* @param string $card_id 卡卷ID
* @return bool|array
*/
public function getCardMpHtml($card_id)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array('card_id' => $card_id);
!empty($card_id) && $data['card_id'] = $card_id;
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_SEND_HTML . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 卡卷code核查
* @param string $card_id 卡卷ID
* @param array $code_list 卡卷code列表(一维数组)
* @return bool|array
*/
public function checkCardCodeList($card_id, $code_list)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array('card_id' => $card_id, 'code' => $code_list);
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_CHECKCODE . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 查询卡券详情
* @param string $card_id 卡卷ID
* @return bool|array
*/
public function getCardInfo($card_id)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array('card_id' => $card_id);
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_GET . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 获取颜色列表
* 获得卡券的最新颜色列表,用于创建卡券
* @return bool|array
*/
public function getCardColors()
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$result = Tools::httpGet(self::API_BASE_URL_PREFIX . self::CARD_GETCOLORS . "access_token={$this->access_token}");
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 生成卡券二维码
* 成功则直接返回ticket值,可以用 getQRUrl($ticket) 换取二维码url
* @param string $card_id 卡券ID 必须
* @param string $code 指定卡券 code 码,只能被领一次。use_custom_code 字段为 true 的卡券必须填写,非自定义 code 不必填写。
* @param string $openid 指定领取者的 openid,只有该用户能领取。bind_openid 字段为 true 的卡券必须填写,非自定义 openid 不必填写。
* @param int $expire_seconds 指定二维码的有效时间,范围是 60 ~ 1800 秒。不填默认为永久有效。
* @param bool $is_unique_code 指定下发二维码,生成的二维码随机分配一个 code,领取后不可再次扫描。填写 true 或 false。默认 false。
* @param string $balance 红包余额,以分为单位。红包类型必填(LUCKY_MONEY),其他卡券类型不填。
* @return bool|string
*/
public function createCardQrcode($card_id, $code = '', $openid = '', $expire_seconds = 0, $is_unique_code = false, $balance = '')
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$card = array('card_id' => $card_id);
!empty($code) && $card['code'] = $code;
!empty($openid) && $card['openid'] = $openid;
!empty($is_unique_code) && $card['is_unique_code'] = $is_unique_code;
!empty($balance) && $card['balance'] = $balance;
$data = array('action_name' => "QR_CARD");
!empty($expire_seconds) && $data['expire_seconds'] = $expire_seconds;
$data['action_info'] = array('card' => $card);
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_QRCODE_CREATE . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 消耗 code
* 自定义 code(use_custom_code 为 true)的优惠券,在 code 被核销时,必须调用此接口。
* @param string $code 要消耗的序列号
* @param string $card_id 要消耗序列号所述的 card_id,创建卡券时use_custom_code 填写 true 时必填。
* @return bool|array
* {
* "errcode":0,
* "errmsg":"ok",
* "card":{"card_id":"pFS7Fjg8kV1IdDz01r4SQwMkuCKc"},
* "openid":"oFS7Fjl0WsZ9AMZqrI80nbIq8xrA"
* }
*/
public function consumeCardCode($code, $card_id = '')
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array('code' => $code);
!empty($card_id) && $data['card_id'] = $card_id;
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_CODE_CONSUME . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* code 解码
* @param string $encrypt_code 通过 choose_card_info 获取的加密字符串
* @return bool|array
* {
* "errcode":0,
* "errmsg":"ok",
* "code":"751234212312"
* }
*/
public function decryptCardCode($encrypt_code)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array('encrypt_code' => $encrypt_code,);
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_CODE_DECRYPT . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 查询 code 的有效性(非自定义 code)
* @param string $code
* @return bool|array
* {
* "errcode":0,
* "errmsg":"ok",
* "openid":"oFS7Fjl0WsZ9AMZqrI80nbIq8xrA", //用户 openid
* "card":{
* "card_id":"pFS7Fjg8kV1IdDz01r4SQwMkuCKc",
* "begin_time": 1404205036, //起始使用时间
* "end_time": 1404205036, //结束时间
* }
* }
*/
public function checkCardCode($code)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array('code' => $code);
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_CODE_GET . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 批量查询卡列表
* @param int $offset 开始拉取的偏移,默认为0从头开始
* @param int $count 需要查询的卡片的数量(数量最大50,默认50)
* @return bool|array
* {
* "errcode":0,
* "errmsg":"ok",
* "card_id_list":["ph_gmt7cUVrlRk8swPwx7aDyF-pg"], //卡 id 列表
* "total_num":1 //该商户名下 card_id 总数
* }
*/
public function getCardIdList($offset = 0, $count = 50)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$count > 50 && $count = 50;
$data = array('offset' => $offset, 'count' => $count);
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_BATCHGET . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 更改 code
* 为确保转赠后的安全性,微信允许自定义code的商户对已下发的code进行更改。
* 注:为避免用户疑惑,建议仅在发生转赠行为后(发生转赠后,微信会通过事件推送的方式告知商户被转赠的卡券code)对用户的code进行更改。
* @param string $code 卡券的 code 编码
* @param string $card_id 卡券 ID
* @param string $new_code 新的卡券 code 编码
* @return bool
*/
public function updateCardCode($code, $card_id, $new_code)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array('code' => $code, 'card_id' => $card_id, 'new_code' => $new_code);
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_CODE_UPDATE . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return true;
}
return false;
}
/**
* 设置卡券失效
* 设置卡券失效的操作不可逆
* @param string $code 需要设置为失效的 code
* @param string $card_id 自定义 code 的卡券必填。非自定义 code 的卡券不填。
* @return bool
*/
public function unavailableCardCode($code, $card_id = '')
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array('code' => $code);
!empty($card_id) && $data['card_id'] = $card_id;
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_CODE_UNAVAILABLE . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return true;
}
return false;
}
/**
* 库存修改
* @param string $data
* @return bool
*/
public function modifyCardStock($data)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_MODIFY_STOCK . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return true;
}
return false;
}
/**
* 更新门票
* @param string $data
* @return bool
*/
public function updateMeetingCard($data)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_MEETINGCARD_UPDATEUSER . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return true;
}
return false;
}
/**
* 激活/绑定会员卡
* @param string $data 具体结构请参看卡券开发文档(6.1.1 激活/绑定会员卡)章节
* @return bool
*/
public function activateMemberCard($data)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_MEMBERCARD_ACTIVATE . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return true;
}
return false;
}
/**
* 会员卡交易
* 会员卡交易后每次积分及余额变更需通过接口通知微信,便于后续消息通知及其他扩展功能。
* @param string $data 具体结构请参看卡券开发文档(6.1.2 会员卡交易)章节
* @return bool|array
*/
public function updateMemberCard($data)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_MEMBERCARD_UPDATEUSER . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 设置卡券测试白名单
* @param array $openid 测试的 openid 列表
* @param array $user 测试的微信号列表
* @return bool
*/
public function setCardTestWhiteList($openid = array(), $user = array())
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array();
count($openid) > 0 && $data['openid'] = $openid;
count($user) > 0 && $data['username'] = $user;
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_TESTWHILELIST_SET . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return true;
}
return false;
}
/**
* 更新红包金额
* @param string $code 红包的序列号
* @param int $balance 红包余额
* @param string $card_id 自定义 code 的卡券必填。非自定义 code 可不填。
* @return bool|array
*/
public function updateLuckyMoney($code, $balance, $card_id = '')
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array('code' => $code, 'balance' => $balance);
!empty($card_id) && $data['card_id'] = $card_id;
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_LUCKYMONEY_UPDATE . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return true;
}
return false;
}
/**
* 设置自助核销接口
* @param string $card_id 卡券ID
* @param bool $is_openid 是否开启自助核销功能,填true/false,默认为false
* @param bool $need_verify_cod 用户核销时是否需要输入验证码,填true/false,默认为false
* @param bool $need_remark_amount 用户核销时是否需要备注核销金额,填true/false,默认为false
* @return bool|array
*/
public function setSelfconsumecell($card_id, $is_openid = false, $need_verify_cod = false, $need_remark_amount = false)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array(
'card_id' => $card_id,
'is_open' => $is_openid,
'need_verify_cod' => $need_verify_cod,
'need_remark_amount' => $need_remark_amount,
);
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_SET_SELFCONSUMECELL . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 设置买单接口
* @param string $card_id
* @param bool $is_openid
* @return bool|mixed
*/
public function setPaycell($card_id, $is_openid = true)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$data = array('card_id' => $card_id, 'is_open' => $is_openid,);
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_PAYCELL_SET . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
/**
* 设置开卡字段信息接口
* @param array $data
* @return bool|array
*/
public function setMembercardActivateuserform($data)
{
if (!$this->access_token && !$this->getAccessToken()) {
return false;
}
$result = Tools::httpPost(self::API_BASE_URL_PREFIX . self::CARD_MEMBERCARD_ACTIVATEUSERFORM_SET . "access_token={$this->access_token}", Tools::json_encode($data));
if ($result) {
$json = json_decode($result, true);
if (empty($json) || !empty($json['errcode'])) {
$this->errCode = isset($json['errcode']) ? $json['errcode'] : '505';
$this->errMsg = isset($json['errmsg']) ? $json['errmsg'] : '无法解析接口返回内容!';
return $this->checkRetry(__FUNCTION__, func_get_args());
}
return $json;
}
return false;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
PHP
1
https://gitee.com/fengfeiyeqi/wechat-php-sdk.git
git@gitee.com:fengfeiyeqi/wechat-php-sdk.git
fengfeiyeqi
wechat-php-sdk
wechat-php-sdk
master

搜索帮助