2019-08-23
<h1>红包活动</h1>
<p>直接用easywechat发起到微信请求,在调用后,需注意如果放款失败,要主动查询结果以确定最终结果</p>
<p><strong>发起红包支付</strong>
需要用户手动点击触发领钱</p>
<pre><code class="language-php"> $config = [
'app_id' => $payconfig->pay_appid,
'mch_id' => $payconfig->pay_mchid,
'key' => $payconfig->pay_key,
'cert_path' => __DIR__ . '/cert.pem', //使用绝对路径,
'key_path' => __DIR__ . '/key.pem',
];
$payment = Factory::payment($config);
$redpack = $payment->redpack;
$redpackData = [
'mch_billno' => $m_number,
'send_name' => '好货雷达',
're_openid' => $openid,
'total_num' => 1, //固定为1,可不传
'total_amount' => intval($price * 100), //单位为分,不小于100
'wishing' => $description,
'act_name' => $title,
'remark' => $description
];
$result = $redpack->sendNormal($redpackData);</code></pre>
<p><strong>发起企业付款</strong>
直接发放金额到用户钱包</p>
<pre><code class="language-php"> $config = [
'app_id' => $payconfig->pay_appid,
'mch_id' => $payconfig->pay_mchid,
'key' => $payconfig->pay_key,
'cert_path' => __DIR__ . '/cert.pem',
'key_path' => __DIR__ . '/key.pem',
];
$payment = Factory::payment($config);
$redpack = $payment->transfer;
$redpackData = [
'partner_trade_no' => $m_number, // 商户订单号,需保持唯一性(只能是字母或者数字,不能包含有符号)
'openid' => $openid,
'check_name' => 'NO_CHECK', // NO_CHECK:不校验真实姓名, FORCE_CHECK:强校验真实姓名
're_user_name' => '', // 如果 check_name 设置为FORCE_CHECK,则必填用户真实姓名
'amount' => intval($price * 100), //单位为分,不小于100
'desc' => $description, // 企业付款操作说明信息。必填
];
$result = $redpack->toBalance($redpackData);</code></pre>
<p><strong>活动的设计上</strong>
使用redis锁来防止并发请求
活动详情存一份缓存
如果活动为限量或限价的,需要存一份剩余数量或金额的缓存</p>
<pre><code class="language-php"> const ACTIVITY_LOCK = 's:string:shopping:activity:lock:'; //.{uid}活动领取锁
const ACTIVITY_POST_DATA_LOCK = 's:string:shopping:activity:post:data:lock:'; //.{uid}活动数据上报锁
const ACTIVITY_REQUEST_LOCK = 's:string:shopping:activity:request:lock'; //活动三方请求锁,避免并发
const ACTIVITY_DETAIL = 'h:shopping:activity:detail'; //field=number,营销活动详情
const ACTIVITY_LEFT_AMOUNT = 'h:shopping:activity:left:amount'; //field=number,营销活动剩余数量
const ACTIVITY_LEFT_PRICE = 'h:shopping:activity:left:price'; //field=number,营销活动剩余价格</code></pre>
<h1>渠道改版</h1>
<p>新建渠道时,遍历所有商品到该渠道下
新建商品时,遍历所有渠道来绑定该商品
渠道上下架不影响商品,但商品下架时,需要清除该商品的渠道绑定关系,不修改渠道上下架标识,商品上架时,恢复所有上架渠道关系</p>
<pre><code class="language-php"> const GOODS_ENABLE_SOURCE_LIST = 'z:set:shopping:goods:enable:source:list:'; //{source_key} field=gid score=created_at总渠道
const GOODS_ONLINE_ENABLE_SOURCE_LIST = 'z:set:shopping:goods:enable:source:online:'; //{source_key} field=gid score=created_at渠道线上
const GOODS_UNDERLINE_ENABLE_SOURCE_LIST = 'z:set:shopping:goods:enable:source:underline:'; //{source_key} field=gid score=created_at渠道线下</code></pre>