设计模式之 适配器模式 支付接口

首先要定义接口  PayInterfaces

namespace App\Http\Interfaces;


interface PayInterfaces
{
    public function pay($data);
}

建立总适配器

namespace App\Http\Adapter\Pay;


use App\Http\Interfaces\PayInterfaces;

class PayAdapter implements PayInterfaces
{

    private $ad;

    public function __construct($type)
    {
        $this->ad = $type;
    }

    public function pay($data)
    {
       return $this->ad->pay($data);
    }
}

建立子适配器  需要什么建什么

namespace App\Http\Adapter\Pay;


use App\Http\Interfaces\PayInterfaces;

class HePayAdapter implements PayInterfaces
{

    public function pay($data)
    {
        $pub_key  =  storage_path('rsa/rsa_public_key.pem');
        $prv_key =  storage_path('rsa/rsa_private_key.pem');
        $obj = new \stdClass();
        // TODO: Implement pay() method.
        //支付接口
        $he_pay_url = config('he.HE_PAY_URL');
        $qianming = [
            'uid' => $data['uid'],
            'type' => $data['type'],
            'amount' => $data['amount'],
        ];

        ksort($qianming);
        $key_str = http_build_query($qianming);
        $keys = $key_str . '&secret=' . 'HEALTHSHOP' . date('Ymd', time());
        $str_rsa = new \RSA($prv_key, $pub_key);
        $key = $str_rsa->PrivSign($keys);
        $order_pay_data = [
            'uid' => $data['uid'],
            'type' => $data['type'],
            'amount' => $data['amount'],
            'key' => encode($key)
        ];
        $result = curl_post($he_pay_url, $order_pay_data);
        $pay_status = json_decode($result);
        //支付状态 1表示成功,
        if(!$pay_status){
            $obj->code = 0;
            $obj->msg = '支付异常';
            session()->flash('order-error', $obj);
            return $obj;
        }
        if ($pay_status->code == -1) {
            $obj->code = 0;
            $obj->msg = $pay_status->msg;
            session()->flash('order-error', $obj);
            return $obj;
        } else {
            $obj->code = 1;
            $obj->msg = $pay_status->msg;
            session()->flash('order-error', $obj);
            return $obj;
        }
    }
}

调用适配器

        $pay_status =  new PayAdapter(new HePayAdapter());
        $pay_refund_status = $pay_status->pay($order_pay_data);
        if(!$pay_refund_status){
            $obj->code = 0;
            $obj->msg = $pay_refund_status->msg;
            session()->flash('order-error',$obj);
            return false;
        }

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值