Skip to content

Commit 37cb42e

Browse files
2 parents 23fc825 + 654949e commit 37cb42e

6 files changed

+385
-0
lines changed

example/EntryCodePaymentTest.php

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php
2+
set_include_path(__DIR__ . '/..');
3+
4+
require_once 'request/pay/EntryCodePaymentRequest.php';
5+
require_once 'model/ProductCodeType.php';
6+
require_once 'model/Order.php';
7+
require_once 'model/Merchant.php';
8+
require_once 'model/Store.php';
9+
require_once 'model/Amount.php';
10+
require_once 'model/Env.php';
11+
require_once 'DefaultAlipayClient.php';
12+
13+
14+
$clientId = "T_385XSM502Y108602A";
15+
16+
$paymentRequestId = 'PR_' . round(microtime(true) * 1000);
17+
$order = new Order();
18+
$order->setOrderDescription("test order desc");
19+
$order->setReferenceOrderId("102775745075669");
20+
$orderAmount = new Amount();
21+
$orderAmount->setCurrency("USD");
22+
$orderAmount->setValue("100");
23+
$order->setOrderAmount($orderAmount);
24+
25+
$merchant = new Merchant();
26+
$merchant->setReferenceMerchantId('seller2322174590000');
27+
$merchant->setMerchantMCC('7011');
28+
$merchant->setMerchantName('Some_Mer');
29+
30+
$store = new Store();
31+
$store->setStoreMCC('7011');
32+
$store->setReferenceStoreId('store232217459000011');
33+
$store->setStoreName('Some_Store');
34+
35+
$merchant->setStore($store);
36+
37+
$order->setMerchant($merchant);
38+
39+
$env = new Env();
40+
$env->setUserAgent('"Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 NebulaSDK/1.8.100112 Nebula PSDType(1) AlipayDefined(nt:4G,ws:320|504|2.0) AliApp(AP/10.1.32.600) AlipayClient/10.1.32.600 Alipay Language/zh-Hans AlipayConnect"');
41+
42+
$order->setEnv($env);
43+
44+
$paymentAmount = new Amount();
45+
$paymentAmount->setCurrency("USD");
46+
$paymentAmount->setValue("100");
47+
$paymentNotifyUrl = "https://www.alipay.com/notify";
48+
$paymentRedirectUrl = "https://www.alipay.com";
49+
50+
$request = new EntryCodePaymentRequest($paymentRequestId, $order, 'USD', 9000, $paymentNotifyUrl, null);
51+
52+
$request->validate();
53+
54+
$request->setClientId($clientId);
55+
56+
$merchantPrivateKey = file_get_contents(__DIR__ . "/../private-pkcs1.pem");
57+
58+
$alipayPublicKey = file_get_contents(__DIR__ . "/../public.pem");
59+
60+
$alipayClient = new DefaultAlipayClient("https://open-na.alipay.com", $merchantPrivateKey, $alipayPublicKey);
61+
$alipayResponse = $alipayClient->execute($request);
62+
63+
print(json_encode($request));
64+
print('<br>-----------------------------------------------------------------------------<br>');
65+
print(json_encode($alipayResponse));
66+
67+

example/OrderCodePaymentTest.php

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
set_include_path(__DIR__ . '/..');
3+
4+
require_once 'request/pay/OrderCodePaymentRequest.php';
5+
require_once 'model/ProductCodeType.php';
6+
require_once 'model/Order.php';
7+
require_once 'model/Merchant.php';
8+
require_once 'model/Store.php';
9+
require_once 'model/Amount.php';
10+
require_once 'DefaultAlipayClient.php';
11+
12+
13+
$clientId = "T_385XSM502Y108602A";
14+
15+
$paymentRequestId = 'PR_' . round(microtime(true) * 1000);
16+
$order = new Order();
17+
$order->setOrderDescription("test order desc");
18+
$order->setReferenceOrderId("102775745075669");
19+
$orderAmount = new Amount();
20+
$orderAmount->setCurrency("USD");
21+
$orderAmount->setValue("100");
22+
$order->setOrderAmount($orderAmount);
23+
24+
$merchant = new Merchant();
25+
$merchant->setReferenceMerchantId('seller2322174590000');
26+
$merchant->setMerchantMCC('7011');
27+
$merchant->setMerchantName('Some_Mer');
28+
29+
$store = new Store();
30+
$store->setStoreMCC('7011');
31+
$store->setReferenceStoreId('store232217459000011');
32+
$store->setStoreName('Some_Store');
33+
34+
$merchant->setStore($store);
35+
36+
$order->setMerchant($merchant);
37+
38+
$paymentAmount = new Amount();
39+
$paymentAmount->setCurrency("USD");
40+
$paymentAmount->setValue("100");
41+
$paymentNotifyUrl = "https://www.alipay.com/notify";
42+
$paymentRedirectUrl = "https://www.alipay.com";
43+
44+
$request = new OrderCodePaymentRequest($paymentRequestId, $order, 'USD', 9000, $paymentNotifyUrl, null);
45+
46+
$request->validate();
47+
48+
$request->setClientId($clientId);
49+
50+
$merchantPrivateKey = file_get_contents(__DIR__ . "/../private-pkcs1.pem");
51+
52+
$alipayPublicKey = file_get_contents(__DIR__ . "/../public.pem");
53+
54+
$alipayClient = new DefaultAlipayClient("https://open-na.alipay.com", $merchantPrivateKey, $alipayPublicKey);
55+
$alipayResponse = $alipayClient->execute($request);
56+
57+
print(json_encode($request));
58+
print('<br>-----------------------------------------------------------------------------<br>');
59+
print(json_encode($alipayResponse));
60+
61+
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
set_include_path(__DIR__ . '/..');
3+
4+
require_once 'request/pay/UserPresentedCodePaymentRequest.php';
5+
require_once 'model/ProductCodeType.php';
6+
require_once 'model/Order.php';
7+
require_once 'model/Merchant.php';
8+
require_once 'model/Store.php';
9+
require_once 'model/Amount.php';
10+
require_once 'DefaultAlipayClient.php';
11+
12+
13+
$clientId = "T_385XSM502Y108602A";
14+
15+
$paymentRequestId = 'PR_' . round(microtime(true) * 1000);
16+
$order = new Order();
17+
$order->setOrderDescription("test order desc");
18+
$order->setReferenceOrderId("102775745075669");
19+
$orderAmount = new Amount();
20+
$orderAmount->setCurrency("USD");
21+
$orderAmount->setValue("100");
22+
$order->setOrderAmount($orderAmount);
23+
24+
$merchant = new Merchant();
25+
$merchant->setReferenceMerchantId('seller2322174590000');
26+
$merchant->setMerchantMCC('7011');
27+
$merchant->setMerchantName('Some_Mer');
28+
29+
$store = new Store();
30+
$store->setStoreMCC('7011');
31+
$store->setReferenceStoreId('store232217459000011');
32+
$store->setStoreName('Some_Store');
33+
34+
$merchant->setStore($store);
35+
36+
$order->setMerchant($merchant);
37+
38+
$paymentAmount = new Amount();
39+
$paymentAmount->setCurrency("USD");
40+
$paymentAmount->setValue("100");
41+
$paymentNotifyUrl = "https://www.alipay.com/notify";
42+
$paymentRedirectUrl = "https://www.alipay.com";
43+
44+
$request = new UserPresentedCodePaymentRequest($paymentRequestId, $order, 'USD', 9000, '28888888888888888888', $paymentNotifyUrl, null);
45+
46+
$request->validate();
47+
48+
$request->setClientId($clientId);
49+
50+
$merchantPrivateKey = file_get_contents(__DIR__ . "/../private-pkcs1.pem");
51+
52+
$alipayPublicKey = file_get_contents(__DIR__ . "/../public.pem");
53+
54+
$alipayClient = new DefaultAlipayClient("https://open-na.alipay.com", $merchantPrivateKey, $alipayPublicKey);
55+
$alipayResponse = $alipayClient->execute($request);
56+
57+
print(json_encode($request));
58+
print('<br>-----------------------------------------------------------------------------<br>');
59+
print(json_encode($alipayResponse));
60+
61+
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php
2+
3+
require_once 'request/pay/AlipayPayRequest.php';
4+
require_once 'model/Amount.php';
5+
require_once 'model/ProductCodeType.php';
6+
require_once 'model/PaymentMethod.php';
7+
require_once 'model/PaymentFactor.php';
8+
require_once 'model/InStorePaymentScenario.php';
9+
10+
class EntryCodePaymentRequest extends AlipayPayRequest{
11+
12+
13+
14+
function __construct($paymentRequestId, $order, $currency, $amountInCents, $paymentNotifyUrl, $paymentExpiryTime) {
15+
$this->setPath('/ams/api/v1/payments/pay');
16+
$this->setProductCode(ProductCodeType::IN_STORE_PAYMENT);
17+
18+
$paymentAmount = new Amount();
19+
$paymentAmount->setCurrency($currency);
20+
$paymentAmount->setValue($amountInCents);
21+
$this->setPaymentAmount($paymentAmount);
22+
23+
$paymentMethod = new PaymentMethod();
24+
$paymentMethod->setPaymentMethodType('CONNECT_WALLET');
25+
$this->setPaymentMethod($paymentMethod);
26+
27+
$paymentFactor = new PaymentFactor();
28+
$paymentFactor->setInStorePaymentScenario(InStorePaymentScenario::EntryCode);
29+
$this->setPaymentFactor($paymentFactor);
30+
31+
$this->setPaymentRequestId($paymentRequestId);
32+
$this->setOrder($order);
33+
34+
if (isset($paymentNotifyUrl)){
35+
$this->setPaymentNotifyUrl($paymentNotifyUrl);
36+
}
37+
38+
if (isset($paymentExpiryTime)) {
39+
$this->setPaymentExpireTime($paymentExpiryTime);
40+
}
41+
42+
}
43+
44+
function validate() {
45+
$this->assertTrue(isset($this->order), "order required.");
46+
$this->assertTrue(isset($this->order->merchant), "order.merchant required.");
47+
$this->assertTrue(isset($this->order->orderAmount), "order.orderAmount required.");
48+
$this->assertTrue(isset($this->order->orderDescription), "order.orderDescription required.");
49+
$this->assertTrue(isset($this->order->merchant->referenceMerchantId), "order.merchant.referenceMerchantId required.");
50+
$this->assertTrue(isset($this->order->merchant->merchantMCC), "order.merchant.merchantMcc required.");
51+
$this->assertTrue(isset($this->order->merchant->merchantName), "order.merchant.merchantName required.");
52+
$this->assertTrue(isset($this->order->merchant->store), "order.merchant.store required.");
53+
$this->assertTrue(isset($this->order->merchant->store->referenceStoreId), "order.merchant.store.referenceStoreId required.");
54+
$this->assertTrue(isset($this->order->merchant->store->storeName), "order.merchant.store.storeName required.");
55+
$this->assertTrue(isset($this->order->merchant->store->storeMCC), "order.merchant.store.storeMcc required.");
56+
$this->assertTrue(isset($this->order->env), "order.env required.");
57+
$this->assertTrue(isset($this->order->env->userAgent), "order.env.userAgent required.");
58+
59+
}
60+
61+
function assertTrue($exp, $msg) {
62+
if (!$exp) {
63+
throw new Exception($msg);
64+
}
65+
}
66+
67+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
3+
require_once 'request/pay/AlipayPayRequest.php';
4+
require_once 'model/Amount.php';
5+
require_once 'model/ProductCodeType.php';
6+
require_once 'model/PaymentMethod.php';
7+
require_once 'model/PaymentFactor.php';
8+
require_once 'model/InStorePaymentScenario.php';
9+
10+
class OrderCodePaymentRequest extends AlipayPayRequest{
11+
12+
13+
14+
function __construct($paymentRequestId, $order, $currency, $amountInCents, $paymentNotifyUrl, $paymentExpiryTime) {
15+
$this->setPath('/ams/api/v1/payments/pay');
16+
$this->setProductCode(ProductCodeType::IN_STORE_PAYMENT);
17+
18+
$paymentAmount = new Amount();
19+
$paymentAmount->setCurrency($currency);
20+
$paymentAmount->setValue($amountInCents);
21+
$this->setPaymentAmount($paymentAmount);
22+
23+
$paymentMethod = new PaymentMethod();
24+
$paymentMethod->setPaymentMethodType('CONNECT_WALLET');
25+
$this->setPaymentMethod($paymentMethod);
26+
27+
$paymentFactor = new PaymentFactor();
28+
$paymentFactor->setInStorePaymentScenario(InStorePaymentScenario::OrderCode);
29+
$this->setPaymentFactor($paymentFactor);
30+
31+
$this->setPaymentRequestId($paymentRequestId);
32+
$this->setOrder($order);
33+
34+
if (isset($paymentNotifyUrl)){
35+
$this->setPaymentNotifyUrl($paymentNotifyUrl);
36+
}
37+
38+
if (isset($paymentExpiryTime)) {
39+
$this->setPaymentExpireTime($paymentExpiryTime);
40+
}
41+
42+
}
43+
44+
function validate() {
45+
$this->assertTrue(isset($this->order), "order required.");
46+
$this->assertTrue(isset($this->order->merchant), "order.merchant required.");
47+
$this->assertTrue(isset($this->order->orderAmount), "order.orderAmount required.");
48+
$this->assertTrue(isset($this->order->orderDescription), "order.orderDescription required.");
49+
$this->assertTrue(isset($this->order->merchant->referenceMerchantId), "order.merchant.referenceMerchantId required.");
50+
$this->assertTrue(isset($this->order->merchant->merchantMCC), "order.merchant.merchantMcc required.");
51+
$this->assertTrue(isset($this->order->merchant->merchantName), "order.merchant.merchantName required.");
52+
$this->assertTrue(isset($this->order->merchant->store), "order.merchant.store required.");
53+
$this->assertTrue(isset($this->order->merchant->store->referenceStoreId), "order.merchant.store.referenceStoreId required.");
54+
$this->assertTrue(isset($this->order->merchant->store->storeName), "order.merchant.store.storeName required.");
55+
$this->assertTrue(isset($this->order->merchant->store->storeMCC), "order.merchant.store.storeMcc required.");
56+
}
57+
58+
function assertTrue($exp, $msg) {
59+
if (!$exp) {
60+
throw new Exception($msg);
61+
}
62+
}
63+
64+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
require_once 'request/pay/AlipayPayRequest.php';
4+
require_once 'model/Amount.php';
5+
require_once 'model/ProductCodeType.php';
6+
require_once 'model/PaymentMethod.php';
7+
require_once 'model/PaymentFactor.php';
8+
require_once 'model/InStorePaymentScenario.php';
9+
10+
class UserPresentedCodePaymentRequest extends AlipayPayRequest{
11+
12+
13+
14+
function __construct($paymentRequestId, $order, $currency, $amountInCents, $paymentCode, $paymentNotifyUrl, $paymentExpiryTime) {
15+
$this->setPath('/ams/api/v1/payments/pay');
16+
$this->setProductCode(ProductCodeType::IN_STORE_PAYMENT);
17+
18+
$paymentAmount = new Amount();
19+
$paymentAmount->setCurrency($currency);
20+
$paymentAmount->setValue($amountInCents);
21+
$this->setPaymentAmount($paymentAmount);
22+
23+
$paymentMethod = new PaymentMethod();
24+
$paymentMethod->setPaymentMethodType('CONNECT_WALLET');
25+
$paymentMethod->setPaymentMethodId($paymentCode);
26+
$this->setPaymentMethod($paymentMethod);
27+
28+
$paymentFactor = new PaymentFactor();
29+
$paymentFactor->setInStorePaymentScenario(InStorePaymentScenario::PaymentCode);
30+
$this->setPaymentFactor($paymentFactor);
31+
32+
$this->setPaymentRequestId($paymentRequestId);
33+
$this->setOrder($order);
34+
35+
if (isset($paymentNotifyUrl)){
36+
$this->setPaymentNotifyUrl($paymentNotifyUrl);
37+
}
38+
39+
if (isset($paymentExpiryTime)) {
40+
$this->setPaymentExpireTime($paymentExpiryTime);
41+
}
42+
43+
}
44+
45+
function validate() {
46+
$this->assertTrue(isset($this->order), "order required.");
47+
$this->assertTrue(isset($this->order->merchant), "order.merchant required.");
48+
$this->assertTrue(isset($this->order->orderAmount), "order.orderAmount required.");
49+
$this->assertTrue(isset($this->order->orderDescription), "order.orderDescription required.");
50+
$this->assertTrue(isset($this->order->merchant->referenceMerchantId), "order.merchant.referenceMerchantId required.");
51+
$this->assertTrue(isset($this->order->merchant->merchantMCC), "order.merchant.merchantMcc required.");
52+
$this->assertTrue(isset($this->order->merchant->merchantName), "order.merchant.merchantName required.");
53+
$this->assertTrue(isset($this->order->merchant->store), "order.merchant.store required.");
54+
$this->assertTrue(isset($this->order->merchant->store->referenceStoreId), "order.merchant.store.referenceStoreId required.");
55+
$this->assertTrue(isset($this->order->merchant->store->storeName), "order.merchant.store.storeName required.");
56+
$this->assertTrue(isset($this->order->merchant->store->storeMCC), "order.merchant.store.storeMcc required.");
57+
}
58+
59+
function assertTrue($exp, $msg) {
60+
if (!$exp) {
61+
throw new Exception($msg);
62+
}
63+
}
64+
65+
}

0 commit comments

Comments
 (0)