compropago/php-sdk

ComproPago API的PHP SDK

5.0.0.0 2018-11-30 00:15 UTC

README

Build Status

Run in Postman

简介

使用ComproPago,您可以通过SPEI和现金接收付款。

ComproPago PHP SDK库允许您在应用程序中与ComproPago API交互。它还包含了一些必要的函数,以简化您通过最常用的服务进行开发。

内容索引

ComproPago帮助和支持

您可以通过以下链接了解我们的服务信息:

如果您有任何问题或需要技术支持,请通过以下邮箱联系: soporte@compropago.com,并请提供以下信息:

  • 账户所有者的全名。
  • 商店网站的URL。
  • 本地电话或手机。
  • 账户所有者的电子邮件。
  • 详细的疑问或要求文本。
  • 如果您遇到任何技术问题,请发送屏幕截图或证据以获得更有效的响应。

要求

安装

通过Composer安装

您可以使用以下命令直接从Composer仓库下载SDK:

composer require compropago/php-sdk && composer -o dumpautoload

或者,如果您愿意,可以直接在您的composer.json文件中包含以下代码:

{
    "require" : {
        "compropago/php-sdk": "*"
    }
}

之后,您需要使用以下命令安装依赖项:

composer install

通过GitHub安装

您可以下载我们在这里发布的任何版本。

或者,如果您愿意,可以按照以下方式克隆我们的仓库:

# Repositorio en su estado actual (Puede ser una versión inestable)
git clone https://github.com/compropago/compropago-php.git

基本使用指南

您需要拥有一个有效的ComproPago账户。

导入

<?php

require 'vendor/autoload.php';

# Importar objeto Spei
use CompropagoSdk\Resources\Payments\Spei;

# Importar objeto Cash
use CompropagoSdk\Resources\Payments\Cash;

库的基本使用

为了使用SDK并处理API调用,您需要配置连接密钥并创建Cash或Spei的实例。您可以在ComproPago控制面板的“配置”菜单中找到这些密钥。

用于通过转账收款的对象实例Spei

<?php

/**
 * Configuración de las llaves de ComproPago
 * 
 * @param string $public   Llave pública correspondiente al modo de la tienda
 * @param string $private  Llave privada correspondiente al modo de la tienda
 */
$compropagoSpei = (new Spei)->withKeys(
    'pk_test_xxxxxxxxxxxxxxxxxx',
    'sk_test_xxxxxxxxxxxxxxxxxx'
);

用于现金收款的对象实例Cash

<?php

/**
 * Configuración de las llaves de ComproPago
 * 
 * @param string $public   Llave pública correspondiente al modo de la tienda
 * @param string $private  Llave privada correspondiente al modo de la tienda
 */
$compropagoCash = (new Cash)->withKeys(
    'pk_test_xxxxxxxxxxxxxxxxxx',
    'sk_test_xxxxxxxxxxxxxxxxxx'
);

SDK基本方法

转账(SPEI)付款订单

创建新的付款订单

<?php
# Información de la orden
$data = [
    "product" => [
        "id" => "10001",
        "price" => 258.99,
        "name" => "Test ComproPago SPEI",
        "currency" => "MXN",
        "url" => "http://dummyurl.com/prod10001.jpg"
    ],
    "customer" => [
        "id" => "123454",
        "name" => "Nombre del Cliente",
        "email" => "cliente@dominio.com",
        "phone" => "55222999888"
    ],
    "payment" =>  [
        "type" => "SPEI"
    ],
    "expiresAt" => 1556555092
];

/**
 * Creación de orden para cobro mediante trasnferencia (SPEI) por medio de ComproPago
 * 
 * @param array $data   Información de la orden
 * @return array        Estructura con información de la orden generada en SPEI
 */
$order = $compropagoSpei->createOrder($data);

验证订单状态

<?php

/**
 * Verificar la información de una orden SPEI
 * 
 * @param string $orderId   ID de la orden generada por medio de SPEI
 * @return array            Estructura con información de la orden generada en SPEI
 */
$verified = $compropagoSpei->verifyOrder($order['data']['id']);

现金付款订单

列出现金付款供应商

<?php

/**
 * Listar proveedores para pago en efectivo disponibles para su tienda
 * 
 * @param float  $limit     Monto límite que el proveedor puede que aceptar
 * @param string $currency  Moneda para el monto límite
 */
$providers = $compropagoCash->getProviders(
    $limit = 0,
    $currency = 'MXN'
);

创建新的现金付款订单

<?php
$data = [
    "order_id" => "10002",
    "order_name" => "Test ComproPago CASH",
    "order_price" => 157.25,
    "image_url" => "http://dummyurl.com/prod10002.jpg",
    "customer_name" => "Nombre del Cliente",
    "customer_email" => "cliente@dominio.com",
    "customer_phone" => "55222999888",
    "currency" => 'MXN',
    "payment_type" => "OXXO"
];

/**
 * Creación de orden para cobro en efectivo por medio de ComproPago
 * 
 * @param array $data   Información de la orden
 * @return array        Estructura con información de la orden generada
 */
$order = $compropagoCash->createOrder($data);

验证订单状态

<?php

/**
 * Verificar la información de una orden en efectivo
 * 
 * @param string $orderId   ID de la orden generada por medio de efectivo
 * @return array            Estructura con información de la orden generada en efectivo
 */
$verified = $compropagoCash->verifyOrder($order['id']);

通过短信发送指令

为了能够通过短信发送付款指令,您需要创建一个SMS对象实例,并随后配置访问密钥。

<?php

# Importar objeto Sms
use CompropagoSdk\Resources\Sms;

/**
 * Configuración de las llaves de ComproPago
 * 
 * @param string $public   Llave pública correspondiente al modo de la tienda
 * @param string $private  Llave privada correspondiente al modo de la tienda
 */
$compropagoSms = (new Sms)->withKeys(
    'pk_test_xxxxxxxxxxxxxxxxxx',
    'sk_test_xxxxxxxxxxxxxxxxxx'
);

/**
 * Llamada al método del API para envío de las instrucciones por SMS
 * 
 * @param $phoneNumber  Número al cual se enviaran las instrucciones
 * @param $orderId      Id de la orden de compra de la cual se enviaran las instrucciones
 */
$smsInfo = $compropagoSms->sendToOrder(
    "55xxxxxxxx",
    "ch_xxxxx-xxxxx-xxxxx-xxxxx"
);

Webhooks

Webhooks对于处理ComproPago订单至关重要,它们负责接收有关生成的购买订单状态变化的通知;也应在您的在线商店中包含部分审批逻辑。其流程如下:

  1. 当订单状态发生变化时,我们的平台会通知每个注册的路由。
  2. 该通知包含以JSON格式修改的订单信息。

已注册的webhooks可以在ComproPago控制面板中查看。

要访问控制webhooks的API功能,您需要创建一个Webhook对象的实例。

<?php

# Importar objeto Webhook
use CompropagoSdk\Resources\Webhook;

/**
 * Configuración de las llaves de ComproPago
 * 
 * @param string $public   Llave pública correspondiente al modo de la tienda
 * @param string $private  Llave privada correspondiente al modo de la tienda
 */
$compropagoWebhook = (new Webhook)->withKeys(
    'pk_test_xxxxxxxxxxxxxxxxxx',
    'sk_test_xxxxxxxxxxxxxxxxxx'
);

注册新的webhook

<?php
/**
 * @param string $url   URL que será registrada como EndPoint del webhook
 * @return array        Estructura del Webhook
 */
$webhookInfo = $compropagoWebhook->create(
    "https://mitienda.com/webhook"
);

列出已注册的webhooks

<?php

/**
 * @return array    Estructura del Webhook
 */
$listWebhooks = $compropagoWebhook->getAll();

更新webhook

/**
 * @param string $webhookId     ID de un webhook previamente registrado
 * @param string $url           URL nueva que será registrada como EndPoint del webhook
 * @return array                Estructura del Webhook
 */
<?php
$webhookInfo = $obj->update(
    $webhookInfo['id'],
    "https://mitienda.com/new_webhook"
);

删除webhook

<?php

/**
 * @param string $webhookId     ID de un webhook previamente registrado
 * @return array                Estructura del Webhook
 */
$webhookInfo = $compropagoWebhook->delete($webhookInfo['id']);