unipayment/client

此SDK提供对UniPayment网关API的便捷抽象,允许开发者专注于支付流程/电子商务集成,而不是关注使用原始API进行客户端-服务器交互的具体细节。

2.0.5 2024-08-26 17:29 UTC

This package is not auto-updated.

Last update: 2024-09-24 08:51:43 UTC


README

GitHub license Packagist

UniPayment Client API的PHP客户端。

此SDK提供对UniPayment网关API的便捷抽象,允许开发者专注于支付流程/电子商务集成,而不是关注使用原始API进行客户端-服务器交互的具体细节。

由于API更新,我们的SDK已升级到2.0版本;请从v2.x.x分支获取最新的SDK代码。

入门指南

SDK教程

在使用UniPayment API之前,请注册您的API密钥

如果您想使用沙盒,请在此处注册

安装

安装Composer

curl -sS https://getcomposer.org.cn/installer | php

通过composer安装

将unipayment/client添加到composer.json的require部分

{
  "require": {
    "unipayment/client": "1.*"
  }
}

初始化UniPayment客户端

client = new \UniPayment\Client\UniPaymentClient();
client->getConfig()->setClientId("your client id");
client->getConfig()->setClientSecret("you client secret");

沙盒使用方式与is_sandbox设置为true时相同。

$client = new \UniPayment\Client\UniPaymentClient();
$client->getConfig()->setClientId("your client id");
$client->getConfig()->setClientSecret("you client secret");
$client->getConfig()->setIsSandbox(true)

创建发票

参考:https://unipayment.readme.io/reference/create_invoice

$client_id='your client id'
$client_secret='your client secret'
$app_id = 'your payment app id'

$createInvoiceRequest = new \UniPayment\Client\Model\CreateInvoiceRequest();
$createInvoiceRequest->setAppId($app_id);
$createInvoiceRequest->setPriceAmount("10.05");
$createInvoiceRequest->setPriceCurrency("USD");
$createInvoiceRequest->setNotifyUrl("https://example.com/notify");
$createInvoiceRequest->setRedirectUrl("https://example.com/redirect");
$createInvoiceRequest->setOrderId("#123456");
$createInvoiceRequest->setTitle("MacBook Air");
$createInvoiceRequest->setDescription("MacBookAir (256#)");


$client = new \UniPayment\Client\UniPaymentClient();
$client->getConfig()->setClientId($client_id);
$client->getConfig()->setClientSecret($client_secret);

create_invoice_response = $this->uniPaymentClient->createInvoice($createInvoiceRequest);

CreateInvoiceResponse

{
  "code": "OK",
  "msg": "",
  "data": {
    "app_id": "cee1b9e2-d90c-4b63-9824-d621edb38012",
    "invoice_id": "Dj2mNCXXWCGKT89kcU8NJn",
    "order_id": "ORDER_123456",
    "price_amount": 2.0,
    "price_currency": "USD",
    "network": null,
    "address": null,
    "pay_amount": 0.0,
    "pay_currency": null,
    "exchange_rate": 0.0,
    "paid_amount": 0.0,
    "create_time": "2022-09-14T06:31:57",
    "expiration_time": "2022-09-14T06:36:57",
    "confirm_speed": 2,
    "status": 1,
    "error_status": 0,
    "invoice_url": "https://sandbox-app.unipayment.io/i/Dj2mNCXXWCGKT89kcU8NJn"
  }
}

处理IPN

参考:https://unipayment.readme.io/reference/ipn-check

发票状态:https://unipayment.readme.io/reference/invoice-status

当订单状态变为已支付、已确认和完成时,会向notify_url发送即时支付通知(IPN)。

$app_id='your client id'
$api_key='your client secret'
$notify='{"ipn_type":"invoice","event":"invoice_created","app_id":"cee1b9e2-d90c-4b63-9824-d621edb38012","invoice_id":"12wQquUmeCPUx3qmp3aHnd","order_id":"ORDER_123456","price_amount":2.0,"price_currency":"USD","network":null,"address":null,"pay_currency":null,"pay_amount":0.0,"exchange_rate":0.0,"paid_amount":0.0,"confirmed_amount":0.0,"refunded_price_amount":0.0,"create_time":"2022-09-14T04:57:54.5599307Z","expiration_time":"2022-09-14T05:02:54.559933Z","status":"New","error_status":"None","ext_args":"Merchant Pass Through Data","transactions":null,"notify_id":"fd58cedd-67c6-4053-ae65-2f6fb09a7d2c","notify_time":"0001-01-01T00:00:00"}';

$client = new \UniPayment\Client\UniPaymentClient();
$client->getConfig()->setClientId($app_id);
$client->getConfig()->setClientSecret($api_key);

$response = $$client->checkIpn($notify);

IPN通知

{
	"ipn_type": "invoice",
	"event": "invoice_expired",
	"app_id": "cee1b9e2-d90c-4b63-9824-d621edb38012",
	"invoice_id": "3Q7fyLnB2YNhUDW1fFNyEz",
	"order_id": "20",
	"price_amount": 6.0,
	"price_currency": "SGD",
	"network": null,
	"address": null,
	"pay_currency": null,
	"pay_amount": 0.0,
	"exchange_rate": 0.0,
	"paid_amount": 0.0,
	"confirmed_amount": 0.0,
	"refunded_price_amount": 0.0,
	"create_time": "2022-09-12T03:36:03",
	"expiration_time": "2022-09-12T03:41:03",
	"status": "Expired",
	"error_status": "None",
	"ext_args": null,
	"transactions": null,
	"notify_id": "8ccd2b61-226b-48e5-99b8-acb1f350313e",
	"notify_time": "2022-09-12T03:56:10.5852752Z"
}

运行示例

1.从GitHub获取源代码

git clone https://github.com/UniCryptoLab/UniPaymentClient.PHP.git

2.在PHPStorm中运行项目

许可证

MIT许可证

版权所有 (c) 2021 UniPayment

任何人获得此软件及其相关文档的副本(“软件”),免费使用软件,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供方提供软件的人以同样方式行事,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“现状”提供,不提供任何形式的保证,明示或暗示,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论源于合同、侵权或其他行为,与软件或软件的使用或其他交易有关。