首先要定义接口  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;
        }

 

 

 

更多推荐