config = $params; } /** * 配置信息 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2018-09-19 * @desc description */ public function Config() { // 基础信息 $base = [ 'name' => 'OceanPayment', // 插件名称 'version' => '1.0.0', // 插件版本 'apply_version' => '不限', // 适用系统版本描述 'apply_terminal'=> ['pc','h5'], // 适用终端 默认全部 ['pc', 'h5', 'ios', 'android', 'alipay', 'weixin', 'baidu', 'toutiao'] 'desc' => 'OceanPayment全球数字支付方案提供商,适用PC+H5,信用卡支付。 立即申请', // 插件描述(支持html) 'author' => 'Devil', // 开发者 'author_url' => 'http://shopxo.net/', // 开发者主页 ]; // 配置信息 $element = [ [ 'element' => 'input', 'type' => 'text', 'default' => '', 'name' => 'account', 'placeholder' => 'account账户号', 'title' => 'account账户号', 'is_required' => 0, 'message' => '请填写account账户号', ], [ 'element' => 'input', 'type' => 'text', 'default' => '', 'name' => 'terminal', 'placeholder' => 'terminal终端号', 'title' => 'terminal终端号', 'is_required' => 0, 'message' => '请填写terminal终端号', ], [ 'element' => 'input', 'type' => 'text', 'default' => '', 'name' => 'secure_code', 'placeholder' => 'secureCode', 'title' => 'secureCode', 'is_required' => 0, 'message' => '请填写secureCode', ], [ 'element' => 'textarea', 'name' => 'key', 'placeholder' => 'Oceanpayment公钥', 'title' => 'Oceanpayment公钥', 'is_required' => 0, 'rows' => 4, 'message' => '请填写Oceanpayment公钥', ], [ 'element' => 'input', 'type' => 'text', 'default' => 'en_US', 'name' => 'lang', 'placeholder' => '语言', 'title' => '语言', 'is_required' => 0, 'message' => '请填写语言', ], [ 'element' => 'input', 'type' => 'text', 'default' => 'USD', 'name' => 'order_currency', 'placeholder' => '交易币种', 'title' => '交易币种', 'is_required' => 0, 'message' => '请填写交易币种', ], [ 'element' => 'input', 'type' => 'text', 'default' => 'US', 'name' => 'billing_country', 'placeholder' => '消费者的账单国家', 'title' => '消费者的账单国家', 'is_required' => 0, 'message' => '请填写消费者的账单国家', ], [ 'element' => 'input', 'type' => 'text', 'default' => 'N/A', 'name' => 'billing_state', 'placeholder' => '消费者的州(省、郡)', 'title' => '消费者的州(省、郡)', 'is_required' => 0, 'message' => '请填写消费者的州(省、郡)', ], [ 'element' => 'select', 'title' => '是否测试环境', 'message' => '请选择是否测试环境', 'name' => 'is_dev_env', 'is_multiple' => 0, 'element_data' => [ ['value'=>0, 'name'=>'否'], ['value'=>1, 'name'=>'是'], ], ], [ 'element' => 'input', 'type' => 'text', 'default' => '', 'name' => 'show_images', 'placeholder' => '自定义展示图片地址', 'title' => '自定义展示图片地址', 'is_required' => 0, 'message' => '请填写自定义展示图片地址', ], [ 'element' => 'input', 'type' => 'text', 'default' => '进入我的订单', 'name' => 'button_order_name', 'placeholder' => '进入我的订单按钮名称', 'title' => '进入我的订单按钮名称', 'is_required' => 0, 'message' => '请填写进入我的订单按钮名称', ], [ 'element' => 'input', 'type' => 'text', 'default' => '立即支付', 'name' => 'button_pay_name', 'placeholder' => '支付按钮名称', 'title' => '支付按钮名称', 'is_required' => 0, 'message' => '请填写支付按钮名称', ], [ 'element' => 'input', 'type' => 'text', 'default' => '支付金额:', 'name' => 'pay_first_name', 'placeholder' => '价格提示名称', 'title' => '价格提示名称', 'is_required' => 0, 'message' => '请填写价格提示名称', ], ]; return [ 'base' => $base, 'element' => $element, ]; } /** * 支付入口 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2018-09-19 * @desc description * @param [array] $params [输入参数] */ public function Pay($params = []) { // 参数 if(empty($params)) { return DataReturn('参数不能为空', -1); } // 配置信息 if(empty($this->config) || empty($this->config['account']) || empty($this->config['terminal']) || empty($this->config['secure_code']) || empty($this->config['key'])) { return DataReturn('支付缺少配置', -1); } // 订单地址 $address_data = (!empty($params['business_data']) && !empty($params['business_data'][0]) && !empty($params['business_data'][0]['address_data'])) ? $params['business_data'][0]['address_data'] : []; $tel = empty($address_data) ? (empty($params['user']['mobile']) ? 'N/A' : $params['user']['mobile']) : $address_data['tel']; $city = empty($address_data['city_name']) ? 'N/A' : $address_data['city_name']; $address = empty($address_data['address']) ? 'N/A' : $address_data['address']; // 支付数据 $parameter = [ 'account' => $this->config['account'], 'terminal' => $this->config['terminal'], 'signValue' => '', 'key' => $this->config['key'], 'backUrl' => $params['call_back_url'], 'noticeUrl' => $params['notify_url'], 'methods' => 'Credit Card', 'order_number' => $params['order_no'], 'order_currency' => empty($this->config['order_currency']) ? 'USD' : $this->config['order_currency'], 'order_amount' => $params['total_price'], 'billing_firstName' => $params['user']['id'], 'billing_lastName' => $params['user']['user_name_view'], 'billing_email' => empty($params['user']['email']) ? $params['user']['id'].'@'.__MY_HOST__ : $params['user']['email'], 'billing_phone' => $tel, 'billing_country' => empty($this->config['billing_country']) ? 'US' : $this->config['billing_country'], 'billing_state' => empty($this->config['billing_state']) ? 'N/A' : $this->config['billing_state'], 'billing_city' => $city, 'billing_address' => $address, 'billing_zip' => 'N/A', 'billing_ip' => GetClientIP(), 'ship_firstName' => $params['user']['id'], 'ship_lastName' => $params['user']['user_name_view'], 'ship_email' => empty($params['user']['email']) ? $params['user']['id'].'@'.__MY_HOST__ : $params['user']['email'], 'ship_phone' => $tel, 'ship_country' => empty($this->config['billing_country']) ? 'US' : $this->config['billing_country'], 'ship_state' => empty($this->config['billing_state']) ? 'N/A' : $this->config['billing_state'], 'ship_city' => $city, 'ship_addr' => $address, 'ship_zip' => 'N/A', 'productSku' => $params['name'], 'productName' => $params['site_name'].'-'.$params['name'], 'productNum' => 1, 'productPrice' => $params['total_price'], ]; // 存储单号缓存 MyCache($this->cache_key.$params['user']['id'], $params['order_no'], 3600); // 签名(account+terminal+order_number+order_currency+order_amount+billing_firstName+billing_lastName+billing_email+secureCode) $parameter['signValue'] = hash('sha256', $parameter['account'].$parameter['terminal'].$parameter['order_number'].$parameter['order_currency'].$parameter['order_amount'].$parameter['billing_firstName'].$parameter['billing_lastName'].$parameter['billing_email'].$this->config['secure_code']); // 支付请求记录 PayLogService::PayLogRequestRecord($params['order_no'], ['request_params'=>$parameter]); die($this->PayHtml($parameter)); } /** * 支付代码 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @datetime 2019-05-25T00:07:52+0800 * @param [array] $pay_data [支付信息] */ private function PayHtml($pay_data) { // 支付代码 $html = '