thiagomeireless / ame-merchant-sdk
用于与AME商户API通信的SDK。
1.0.0
2020-06-03 16:34 UTC
Requires
- ext-json: *
- guzzlehttp/guzzle: ~6.0
This package is auto-updated.
Last update: 2024-09-19 23:07:46 UTC
README
创建此SDK的目的是为了简化与AME商户API的集成:[AME官网](https://amedigital.github.io/)
依赖关系
- PHP >= 7.0
示例
examples文件夹包含了每个请求的示例,可以在终端通过php执行。
php examples/1-authentication.php
同时创建了一个Docker环境来简化示例的使用,可以使用以下方式:
-
将
.env.example文件复制到.env,并填写必要的3个信息。 -
在项目目录下,执行
docker-compose up -d --build -
执行
docker-compose exec php-fpm bash进入容器 -
进入examples目录
cd examples -
执行所需的示例,建议按照顺序执行。例如
- 在AME中进行认证并将token保存到Redis中:
php 1-authentication.php - 创建新订单:
php 2-create-order.php - 等等...
- 在AME中进行认证并将token保存到Redis中:
使用示例
用于获取token的认证
<?php require_once('vendor/autoload.php'); use AmeMerchant\Exceptions\AmeMerchantSdkException; use AmeMerchant\Requests\AuthenticationRequest; use Cache; // Algum storage para salvar o token obtido e reutilizar nas próximas requisições // Cria uma nova request de autenticação $request = new AuthenticationRequest( 'USUÁRIO_LIBERADO_PELA_AME', 'SENHA_LIBERADA_PELA_AME', false // flag para informar em qual ambiente a request será realizada. Default: true (produção) ); try { // Executa a request com informação de debug do Guzzle (não utilizar em Produção) $response = $request->withDebug()->execute(); echo "\n\nRESPONSE:\n"; echo json_encode($response, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT); // Salva o token num Cache (ou outro storage de preferência) utilizando o tempo (em segundos) informado pela AME. Cache::set('ame-token', $response->getAccessToken(), $response->getExpiresIn()); } catch (AmeMerchantSdkException $e) { // Tratar os erros do SDK aqui echo "\n############################## ERROR #############################\n#\n"; echo "# Status Code: {$e->getStatusCode()}\n"; echo "# Error: {$e->getError()}\n"; echo "# Description: {$e->getErrorDescription()}\n"; echo "#\n###################################################################\n"; }
创建新订单
<?php require_once('vendor/autoload.php'); use AmeMerchant\Data\Attribute; use AmeMerchant\Data\Item; use AmeMerchant\Data\Order; use AmeMerchant\Exceptions\AmeMerchantSdkException; use AmeMerchant\Requests\CreateOrderRequest; use Cache; // Algum storage onde o token está salvo // Token obtido na requisação de autenticação, que pode estar num cache ou algum outro storage. $token = Cache::get('ame-token'); // Cria itens que foram vendidos nessa ordem $item = new Item(); $item->setAmount(100) ->setDescription('Teste de criação de item') ->setQuantity(1); $item2 = new Item(); $item2->setAmount(250) ->setDescription('Criação de outro item') ->setQuantity(2); // Cria o Atributo dessa ordem $attribute = new Attribute(); $attribute->setCashbackAmountValue(10) ->setTransactionChangedCallbackUrl('https://meudominio.com/callback') ->setItems([$item, $item2]) ->setPaymentOnce(true) ->setCustomPayload(['teste' => 'testando - 123']); // Cria a Ordem com os dados criados anteriormente $order = new Order(); $order->setTitle('Minha primeira ordem.') ->setDescription('Criação de ordem para testes.') ->setType('PAYMENT') ->setAmount(600) ->setAttributes($attribute); try { // Cria nova request de criação de ordem em ambiente de homologação. $createOrderRequest = new CreateOrderRequest($token, $order, false); // Executa a request com o debug do Guzzle ativado. $response = $createOrderRequest->withDebug()->execute(); echo json_encode($response, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT); } catch (AmeMerchantSdkException $e) { echo "\n############################## ERROR #############################\n#\n"; echo "# Status Code: {$e->getStatusCode()}\n"; echo "# Error: {$e->getError()}\n"; echo "# Description: {$e->getErrorDescription()}\n"; echo "#\n###################################################################\n"; }
取消尚未捕获的订单
<?php require_once('vendor/autoload.php'); use AmeMerchant\Exceptions\AmeMerchantSdkException; use AmeMerchant\Requests\CancelOrderRequest; use Cache; $token = Cache::get('ame-token'); try { $cancelOrderRequest = new CancelOrderRequest( $token, 'XYZ', //ID da autorização da ordem recebido via callback ); $response = $cancelOrderRequest->withDebug()->execute(); echo json_encode($response, JSON_THROW_ON_ERROR | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); } catch (AmeMerchantSdkException $e) { echo "\n############################## ERROR #############################\n#\n"; echo "# Status Code: {$e->getStatusCode()}\n"; echo "# Error: {$e->getError()}\n"; echo "# Description: {$e->getErrorDescription()}\n"; echo "#\n###################################################################\n"; }
捕获订单
<?php require_once('vendor/autoload.php'); use AmeMerchant\Exceptions\AmeMerchantSdkException; use AmeMerchant\Requests\CaptureOrderRequest; use Cache; $token = Cache::get('ame-token'); try { $captureOrderRequest = new CaptureOrderRequest( $token, 'XYZ', //ID da autorização da ordem recebido via callback ); $response = $captureOrderRequest->withDebug()->execute(); echo json_encode($response, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); } catch (AmeMerchantSdkException $e) { echo "\n############################## ERROR #############################\n#\n"; echo "# Status Code: {$e->getStatusCode()}\n"; echo "# Error: {$e->getError()}\n"; echo "# Description: {$e->getErrorDescription()}\n"; echo "#\n###################################################################\n"; }
退款已捕获的订单
<?php require_once('vendor/autoload.php'); use AmeMerchant\Exceptions\AmeMerchantSdkException; use AmeMerchant\Requests\RefundOrderRequest; use Cache; $token = Cache::get('ame-token'); try { $refundOrderRequest = new RefundOrderRequest( $token, 'XYZ', //ID da autorização da ordem recebido via callback $rand = md5(microtime()), //ID único para identificar esse estorno (geração própria) 600 //Valor que deve ser estornado ); $response = $refundOrderRequest->withDebug()->execute(); echo json_encode($response, JSON_THROW_ON_ERROR | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); } catch (AmeMerchantSdkException $e) { echo "\n############################## ERROR #############################\n#\n"; echo "# Status Code: {$e->getStatusCode()}\n"; echo "# Error: {$e->getError()}\n"; echo "# Description: {$e->getErrorDescription()}\n"; echo "#\n###################################################################\n"; }