| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?php
- namespace addons\YunfastPay\common\services\trans\nocash;
- use addons\YunfastPay\common\services\trans\TransAbstract;
- /**
- * 分账trans
- * SplitBillTrans class
- * @package addons\YunfastPay\common\services\trans\nocash
- * @see https://yunfastpay.com/#/interface/fz
- */
- class SplitBillTrans extends TransAbstract
- {
- /**
- * @var string
- */
- protected $orgCd;
- /**
- * @var string
- */
- protected $outOrderId;
- /**
- * @var string
- */
- protected $oglOrdId;
- /**
- * 回调
- *
- * @var boolean
- */
- protected $hasNotify = false;
- /**
- * 实例化
- *
- * @param string $orgCd 组织机构代码
- * @param string $outOrderId 外部订单号
- * @param string $oglOrdId 原交易订单号
- */
- public function __construct(
- string $orgCd,
- string $outOrderId,
- string $oglOrdId
- )
- {
- $this->orgCd = $orgCd;
- $this->outOrderId = $outOrderId;
- $this->oglOrdId = $oglOrdId;
- }
-
- /**
- * 交易码,扫码支付固定:TRANS0105
- *
- * @return string
- */
- public function getTrscode() :string
- {
- return 'TRANS1133';
- }
- /**
- * 聚合:tran
- *
- * @return string
- */
- public function getProCd() :string
- {
- return 'tran';
- }
- /**
- * 费率通道
- *
- * @return integer
- */
- public function getChanelType() :int
- {
- return 1;
- }
- /**
- * @param string $mchtCd
- * @return array
- */
- public function getTransData(string $mchtCd) :array
- {
- return [
- 'trscode' => $this->getTrscode(),
- 'orgCd' => $this->orgCd,
- 'mchtCd' => $mchtCd,
- 'outOrderId' => $this->outOrderId,
- 'oglOrdId' => $this->oglOrdId,
- 'proCd' => $this->getProCd(),
- 'chanelType' => $this->getChanelType(),
- 'transAmt' => $this->getTotalAmount(),
- 'isSplitBill' => $this->getIsSplitBill(),
- 'itemsList' => $this->getSplitBill(),
- ];
- }
- /**
- * 获取分账总金额
- *
- * @return float
- */
- protected function getTotalAmount()
- {
- // func2
- $list = array_column(
- $this->getSplitBill(), 'item10'
- );
- $total = 0;
- foreach ($list as $item) {
- $total = bcadd($total, $item, 2);
- }
- return $total;
- // func1
- return array_sum(
- array_column(
- $this->getSplitBill(), 'item10'
- )
- );
- }
- }
|